内存存储方法与装置、内存查询方法与装置制造方法及图纸

技术编号:17406692 阅读:44 留言:0更新日期:2018-03-07 04:39
本发明专利技术实施例提供一种内存存储方法与装置、内存查询方法与装置,所述方法包括:根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中。通过将哈希桶值作为key值,在存储n条记录时,只需要哈希桶值空间大小个Key值,进而节约了内存,实现了内存的实时查询。

Memory storage methods and devices, memory query methods and devices

The embodiment of the invention provides a device and a memory storage device, and method of memory query method, the method includes: according to the key words and Hashi function of each bucket of data to be stored, won the Hashi barrel each data to be stored value corresponding to each value according to the Hashi barrel and Hashi function, Hashi Hashi value is determined for each bucket bucket corresponding in the storage table position; according to the Hashi barrel in storage position in the table, the data to be stored is stored in the Hashi barrel. By using hash bucket value as key value, when storing n bar records, we only need hash bucket value space size Key value, which saves memory and realizes real-time query of memory.

【技术实现步骤摘要】
内存存储方法与装置、内存查询方法与装置
本专利技术实施例涉及计算机技术,尤其涉及一种内存存储方法与装置、内存查询方法与装置。
技术介绍
随着大数据的发展和信息的共享,DMP(Data-ManagementPlatform,数据管理平台)得到了广泛的应用。DMP包括十几亿到上百亿量级的数据,其实时查询通常由内存型数据库提供存储支持,如此巨大的量级对内存的消耗基本在几十T左右,成本巨大。这就需要一种既能提高实时查询的性能(一般需要在5ms以下)又能用较低内存支撑海量数据的存储数据库。目前对于海量内存存储的一般解决方案是Rediscluster(一种开源分布式内存Key-Value数据库)和Memcached(一个高性能的分布式内存对象缓存系统),通过LRU(LeastRecentlyUsed,最近最久未使用)等策略将一部分热数据加载在内存中提供查询,而将冷数据放入较为缓慢廉价的存储设备中。其本质上是通过业务特点减少了需要缓存的数据的数量,做出了低频访问数据的实时性的牺牲,以达到节约存储成本的目的。但是,对于无法预判热度的数据来说,现有技术无法实现减少内存的存储。
技术实现思路
本专利技术实施例提供一种内存存储方法与装置、内存查询方法与装置,以解现有技术无法实现减少内存的存储的问题。第一方面,本专利技术实施例提供一种内存存储方法,包括:根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待存储数据。可选的,所述哈希桶还包括所述待存储数据的关键字与所述待存储数据的映射关系。可选的,所述存储表包括的哈希桶的数目为2m个,所述m为大于0的正整数。在第一方面的一种可能的实现方式中,所述根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,具体包括:根据公式hash′(Ki)=MD5(Ki)&((2128)<<(127-m)),获得每个待存储数据对应的哈希桶值hash′(Ki);其中,所述Ki为待存储数据i的关键字,所述MD5为单向散列算法,所述m为所述MD5的前m位。可选的,所述哈希桶中不同的待存储数据呈线性排列。可选的,每个哈希桶中存储的待存储数据的数目符合多项式分布。在第一方面的另一种可能的实现方式中,所述方法还包括:获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据。在第一方面的另一种可能的实现方式中,所述获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据,具体包括:判断每个哈希桶中存储的待存储数据的条数是否大于或等于预设条数;若是,则判断每个第一哈希桶中每个待存储数据的初始存储时刻是否大于或等于预设时刻,所述第一哈希桶为各哈希桶中待存储数据的条数大于或等于预设条数的哈希桶;若所述第一哈希桶中所述待存储数据的初始存储时刻大于或等于预设时刻,则从所述第一哈希桶中删除所述待存储数据。在第一方面的另一种可能的实现方式中,所述获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据,具体包括:判断每个哈希桶的容量使用率是否大于或等于预设容量使用率;若是,则根据每个第二哈希桶中每个待存储数据的初始存储时刻,从每个第二哈希桶中删除目标数量的待存储数据,所述目标数量为所述第二哈希桶中超出所述预设容量使用率的待存储数据条数,所述第二哈希桶为各哈希桶中容量使用率大于或等于预设容量使用率的哈希桶。第二方面,本专利技术实施例提供一种内存查询方法,包括:根据待查询数据的关键字和哈希桶函数,获得所述待查询数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;根据所述哈希桶值和哈希函数,确定所述哈希桶值对应的哈希桶在存储表中的位置,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待查询数据;根据所述哈希桶的位置,从所述哈希桶中读取所述待查询数据。第三方面,本专利技术实施例提供一种内存存储装置,包括:获取模块,用于根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;确定模块,用于根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;存储模块,用于根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待存储数据。可选的,所述哈希桶还包括所述待存储数据的关键字与所述待存储数据的映射关系。可选的,所述存储表包括的哈希桶的数目为2m个,所述m为大于0的正整数。在第二方面的一种可能的实现方式中,所述根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,具体包括:所述获取模块,具体用于根据公式hash′(Ki)=MD5(Ki)&((2128)<<(127-m)),获得每个待存储数据对应的哈希桶值hash′(Ki);其中,所述Ki为待存储数据i的关键字,所述MD5为单向散列算法,所述m为所述MD5的前m位。可选的,所述哈希桶中不同的待存储数据呈线性排列。可选的,每个哈希桶中存储的待存储数据的数目符合多项式分布。在第二方面的另一种可能的实现方式中,所述装置还包括删除模块:所述获取模块,还用于获取每个哈希桶中失效的待存储数据,所述删除模块,用于从所述哈希桶中删除所述失效的待存储数据。在第二方面的另一种可能的实现方式中,所述装置还包括第一判断模块;所述第一判断模块,用于判断每个哈希桶中存储的待存储数据的条数是否大于或等于预设条数;所述第一判断模块,还用于判断每个第一哈希桶中每个待存储数据的初始存储时刻是否大于或等于预设时刻,所述第一哈希桶为各哈希桶中待存储数据的条数大于或等于预设条数的哈希桶;所述删除模块,具体用于在所述第一判断模块确定所述第一哈希桶中所述待存储数据的初始存储时刻大于或等于预设时刻时,从所述第一哈希桶中删除所述待存储数据。在第二方面的另一种可能的实现方式中,所述装置还包括第二判断模块;所述第二判断模块,用于判断每个哈希桶的容量使用率是否大于或等于预设容量使用率;所述删除模块,还具体用于根据每个第二哈希桶中每个待存储数据的初始存储时刻,从每个第二哈希桶中删除目标数量的待存储数据,所述目标数量为所述第二哈希桶中超出所述预设容量使用率的待存储数据条数,所述第二哈希桶为各哈希桶中容量使用率大于或等于预设容量使用率的哈希桶。第四方面,本专利技术实施例提供一种内存查询装置,包括:获取模块,用于根据待查询数据的关键字和哈希桶函数,获得所述待查询数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;确定模块,用于根据所述哈希桶值和哈希函数,确定所述哈希桶值对应的哈希桶在存储表中的位置;其中,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待查询数据;读取模块,用于根据所述哈希桶的位置,从所述哈希桶中读取所述待查询数据。本专利技术实施例提供的内存存储方法与装置、内存查询方法与装置,通过根据每个待存本文档来自技高网...
内存存储方法与装置、内存查询方法与装置

【技术保护点】
一种内存存储方法,其特征在于,包括:根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待存储数据。

【技术特征摘要】
1.一种内存存储方法,其特征在于,包括:根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,所述哈希桶函数为所述关键字与所述哈希桶值之间的函数关系式;根据每个哈希桶值和哈希函数,确定每个哈希桶值对应的哈希桶在存储表中的位置;根据所述哈希桶在存储表中的位置,将所述待存储数据存储在所述哈希桶中,所述存储表包括至少一个哈希桶和存储在所述哈希桶中的待存储数据。2.根据权利要求1所述的方法,其特征在于,所述哈希桶还包括所述待存储数据的关键字与所述待存储数据的映射关系。3.根据权利要求2所述的方法,其特征在于,所述哈希桶中不同的待存储数据呈线性排列。4.根据权利要求2所述的方法,其特征在于,所述存储表包括的哈希桶的数目为2m个,所述m为大于0的正整数。5.根据权利要求4所述的方法,其特征在于,所述根据每个待存储数据的关键字和哈希桶函数,获得每个待存储数据对应的哈希桶值,具体包括:根据公式hash′(Ki)=MD5(Ki)&((2128)<<(127-m)),获得每个待存储数据对应的哈希桶值hash′(Ki);其中,所述Ki为待存储数据i的关键字,所述MD5为单向散列算法,所述m为所述MD5的前m位。6.根据权利要求1所述的方法,其特征在于,每个哈希桶中存储的待存储数据的数目符合多项式分布。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据。8.根据权利要求7所述的方法,其特征在于,所述获取每个哈希桶中失效的待存储数据,并删除所述失效的待存储数据,具体包括:判断每个哈希桶中存储的待存储数据的条数是否大于或等于预设条数;若是,则判断每个第一哈希桶中每个待存储数据的初始存储时刻是否大于或等于预设时刻,所述第一哈希桶为各哈希桶中待存储数据的条数大于或等于预设条数的哈希桶;若所述第一哈希桶中所述待存储数据的初始存储时刻大于或等于预设时刻...

【专利技术属性】
技术研发人员:邱文一
申请(专利权)人:精硕科技北京股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1