当前位置: 首页 > 专利查询>北京大学专利>正文

一种基于矩阵哈希的数据存储和查询方法技术

技术编号:18458716 阅读:521 留言:0更新日期:2018-07-18 12:40
本发明专利技术涉及一种基于矩阵哈希的数据存储和查询方法。该方法包括:1)建立哈希表数据结构,其包含z个子表,z是偶数,各子表的大小等差递减;对于

A method of data storage and query based on matrix hash

The invention relates to a data storage and query method based on matrix hash. The method includes: 1) building hash table data structure, which contains Z sub table, Z is even number, and the size of each sub table is reduced;

【技术实现步骤摘要】
一种基于矩阵哈希的数据存储和查询方法
本专利技术属于内存数据库
,特别涉及一种基于矩阵哈希算法的数据组织、索引、存储方法。
技术介绍
内存数据库相比于磁盘数据库具有较高的灵活性和易用性,内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。基于键值的内存数据库(KeyValueStore)具有灵活简洁、节省内存、快速查询等优点,相比于基于关系型的内存数据库有独特优势,因而被广泛应用在各大互联网公司,比如在亚马逊、Facebook、Youtube、百度、新浪、搜狐等。键值存储系统的数据是以键值对的形式存在,并且用哈希表来进行存储,因此哈希算法作为键值存储系统的核心技术,是直接影响系统性能和网站效率的关键因素。目前存在的实际问题是,随着互联网快速发展,很多互联网公司都积累了大量的数据,由于键值对的数量巨大,而可供使用的内存空间却是有限的,因此当插入一个新的键值对时,键值对的冲突会比较多。这样的冲突会导致新键值对的插入失败、已有键值对的更新查找失败等问题,大大影响了键值存储系统的性能,因而对使用键值存储系统的互联网公司造成较大的经济损失。同时,客户对数据操作的需求和要求越来越高,需要快速得到数据的查询结果,因而对互联网公司的响应能力提出较高要求,如果互联网公司不能做到即时响应,将会大大影响用户体验。以上两个问题广泛存在各大应用键值存储系统的互联网公司中,现有的哈希表设计也不断尝试新的思路以更好的解决这两个关键问题。首先针对冲突问题,已有的哈希表设计广泛通过辅助的数据结构(比如布隆过滤器)减少冲突概率。比较典型的算法设计是快速哈希(fasthashtable)(H.Song,S.Dharmapurikar,J.Turner,andJ.Lockwood.Fasthashtablelookupusingextendedbloomfilter:anaidtonetworkprocessing.ACMSIGCOMMComputerCommunicationReview,35(4):181–192,2005.),分段哈希(segmenthash)(S.KumarandP.Crowley.Segmentedhash:anefficienthashtableimplementationforhighperformancenetworkingsubsystems.InProc.ACMANCS,pages91–103,2005.),孔雀哈希(peacockhash)(S.Kumar,J.Turner,andP.Crowley.Peacockhashing:Deterministicandupdatablehashingforhighperformancenetworking.InProc.IEEEINFOCOM,2008.)。对于一个需要插入的新键值对,这些哈希设计都使用布隆过滤器来决定待插入的哈希表。对于冲突的键值对,要么使用指针挂在链表上,要么丢弃。这些哈希设计虽然使用多子表来减少冲突,但是仍然存在缺点,比如较低的装载率。冲突率也还有较大的减少空间。其次是查询时间问题,比较典型的哈希设计有完美哈希(Z.J.Czech,G.Havas,andB.S.Majewski.Anoptimalalgorithmforgeneratingminimalperfecthashfunctions.InformationProcessingLetters,43(5):257–264,1992.)、布谷鸟哈希(B.Fan,D.G.Andersen,andM.Kaminsky.Memc3:Compactandconcurrentmemcachewithdumbercachingandsmarterhashing.InNSDI,volume13,pages385–398,2013.)等,然而这些哈希的缺点在于更新时十分低效,需要大量的哈希计算和内存访问。比如,布谷鸟哈希在更新哈希表时需要近500次哈希计算和内存访问,即使如此,也很有可能更新失败。因此对于这些哈希表设计,如果多次更新失败,则将不得不重建整个哈希表。重建过程将会需要大量时间,对于现实的应用系统是无法接受的。
技术实现思路
为解决哈希表冲突和查询时间问题,克服已有哈希表存在的高冲突率、低内存使用效率、低装载率等缺陷,本专利技术提供一种将多子表哈希、布隆过滤器、位图相结合的新的哈希表设计方案—“矩阵哈希”。本专利技术采用的技术方案如下:一种基于矩阵哈希的数据存储方法,其特征在于,包括以下步骤:1)建立哈希表数据结构,其包含z个子表,z是偶数,各子表的大小等差递减;对于将第i个子表和第z-i+1个子表结合,得到个大小相等的子表;2)建立辅助数据结构,其包含与所述z个子表对应的z个布隆过滤器,各布隆过滤器的大小等差递减;对于将第i个布隆过滤器和第z-i+1个布隆过滤器结合,得到个大小相等的布隆过滤器;然后将该个布隆过滤器的对应比特追加在一起,形成1个多比特布隆过滤器;3)利用所述哈希表数据结构和所述辅助数据结构插入键值对,实现数据存储。进一步地,每当插入一个新的键值对时,将其插入到装载率最小的子表中。进一步地,在最后一个字表即第z个子表上挂链表,如果待插入的键值对找不到一个空桶,则使用指针将其挂在链表上。进一步地,每个子表有一个位图相对应,位图中的每一个比特与其对应子表中的的一个桶相对应;空桶对应位图中的比特为0,非空桶对应位图中的比特为1。进一步地,增加一个额外的布隆过滤器Fhalf,其负责记录子表的第二部分,即以减少查询的子表数。进一步地,键值对的插入方式如下:a)对于一个给定的键值对,首先通过位图检查z个候选桶是否为空,然后将键值对插入到装载率最低的子表中,以平衡所有子表装载率;假设要插入的子表索引为i,如果则更新布隆过滤器Fi来表示键x在子表Ti中,并更新对应位图;如果则更新布隆过滤器Fz-i+1来表示x在子表Ti中,并更新Fhalf和对应位图;b)如果位图显示键x应该插入的z个桶均已满,则使用踢的机制实现键值对的插入。进一步地,键值对的查询方式为:在查询x时,首先在多比特布隆过滤器Fm和Fhalf中查询x,如果返回true,且Fhalf返回false,则检查子表Ti;否则,先检查子表Tz-i+1,如果没有匹配,再检查子表Ti;如果在z个子表中都无法查找到x,则查找最后一个子表的链表;如果仍然无法找到,则说明x不在哈希表中。进一步地,键值对的删除方式为:在删除x时,首先根据查询操作找到x所在的桶,然后将键值对从桶中移除,并重置位图中x所在桶的对应比特。本专利技术的有益效果是:1)高装载率+较少指针:用较小的内存空间存储大量的键值对,并且使用的指针数很少。2)低冲突率。3)快速更新:利用很少的内存访问即可更新哈希表。4)零更新失败。5)快速查询:能够用很少的内存访问快速查找到键值对,或者对于不存在的键值对,能够快速返回不存在的结果。6)实用性:很容易在硬件系统中实现。附图说明图1是矩阵哈希的算法示意图。图2是多比特布隆过滤器的结构图。具体实施方式下面通过具体实施例和附图,对本专利技术做进一步说明。一.数据结构本专利技术的“矩阵哈希”的数据结构综合使用了多级子表、布隆过滤器和位图。数据结本文档来自技高网
...

【技术保护点】
1.一种基于矩阵哈希的数据存储方法,其特征在于,包括以下步骤:1)建立哈希表数据结构,其包含z个子表,z是偶数,各子表的大小等差递减;对于

【技术特征摘要】
1.一种基于矩阵哈希的数据存储方法,其特征在于,包括以下步骤:1)建立哈希表数据结构,其包含z个子表,z是偶数,各子表的大小等差递减;对于将第i个子表和第z-i+1个子表结合,得到个大小相等的子表;2)建立辅助数据结构,其包含与所述z个子表对应的z个布隆过滤器,各布隆过滤器的大小等差递减;对于将第i个布隆过滤器和第z-i+1个布隆过滤器结合,得到个大小相等的布隆过滤器;然后将该个布隆过滤器的对应比特追加在一起,形成1个多比特布隆过滤器;3)利用所述哈希表数据结构和所述辅助数据结构插入键值对,实现数据存储。2.如权利要求1所述的方法,其特征在于:每当插入一个新的键值对时,将其插入到装载率最小的子表中。3.如权利要求1所述的方法,其特征在于:在最后一个字表即第z个子表上挂链表,如果待插入的键值对找不到一个空桶,则使用指针将其挂在链表上。4.如权利要求1所述的方法,其特征在于:每个子表有一个位图相对应,位图中的每一个比特与其对应子表中的的一个桶相对应;空桶对应位图中的比特为0,非空桶对应位图中的比特为1。5.如权利要求4所述的方法,其特征在于:增加一个额外的布隆过滤器Fhalf,其负责记录子表的第二部分,即以减少查询的子表数。6.如权利要求5所述的方法,其特征在于,键值对的插入方式如下:a)对于一个给定的键值对,首先通过位图检查z个候选桶是否为空,...

【专利技术属性】
技术研发人员:杨仝张梦瑜李晓明
申请(专利权)人:北京大学
类型:发明
国别省市:北京,11

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

1