[发明专利]内存存储方法与装置、内存查询方法与装置有效
申请号: | 201710890458.2 | 申请日: | 2017-09-27 |
公开(公告)号: | CN107766258B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 邱文一 | 申请(专利权)人: | 恩亿科(北京)数据科技有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 杨泽;刘芳 |
地址: | 100080 北京市海淀区西小口路66*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 存储 方法 装置 查询 | ||
本发明实施例提供一种内存存储方法与装置、内存查询方法与装置,所述方法包括:根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中。通过将哈希桶值作为key值,在存储n条记录时,只需要哈希桶值空间大小个Key值,进而节约了内存,实现了内存的实时查询。
技术领域
本发明实施例涉及计算机技术,尤其涉及一种内存存储方法与装置、内存查询方法与装置。
背景技术
随着大数据的发展和信息的共享,DMP(Data-Management Platform,数据管理平台)得到了广泛的应用。DMP包括十几亿到上百亿量级的数据,其实时查询通常由内存型数据库提供存储支持,如此巨大的量级对内存的消耗基本在几十T左右,成本巨大。这就需要一种既能提高实时查询的性能(一般需要在5ms以下)又能用较低内存支撑海量数据的存储数据库。
目前对于海量内存存储的一般解决方案是Redis cluster(一种开源分布式内存Key-Value数据库)和Memcached(一个高性能的分布式内存对象缓存系统),通过LRU(LeastRecently Used,最近最久未使用)等策略将一部分热数据加载在内存中提供查询,而将冷数据放入较为缓慢廉价的存储设备中。其本质上是通过业务特点减少了需要缓存的数据的数量,做出了低频访问数据的实时性的牺牲,以达到节约存储成本的目的。
但是,对于无法预判热度的数据来说,现有技术无法实现减少内存的存储。
发明内容
本发明实施例提供一种内存存储方法与装置、内存查询方法与装置,以解现有技术无法实现减少内存的存储的问题。
第一方面,本发明实施例提供一种内存存储方法,包括:
根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;
根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;
根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待存储数据。
可选的,所述哈希桶还包括所述待存储数据的关键字与所述待存储数据的映射关系。
可选的,所述存储表包括的哈希桶的数目为2m个,所述m为大于0的正整数。
在第一方面的一种可能的实现方式中,所述根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,具体包括:
根据公式hash′(Ki)=MD5(Ki)((2128)(127-m)),获得每个待存储数据对应的哈希桶值hash′(Ki);
其中,所述Ki为待存储数据i的关键字,所述MD5为单向散列算法,所述m为所述MD5的前m位。
可选的,所述哈希桶中不同的待存储数据呈线性排列。
可选的,每个哈希桶中存储的待存储数据的数目符合多项式分布。
在第一方面的另一种可能的实现方式中,所述方法还包括:
获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据。
在第一方面的另一种可能的实现方式中,所述获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据,具体包括:
判断每个哈希桶中存储的待存储数据的条数是否大于或等于预设条数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于恩亿科(北京)数据科技有限公司,未经恩亿科(北京)数据科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710890458.2/2.html,转载请声明来源钻瓜专利网。