用于管理哈希表的方法、设备和计算机程序产品技术

技术编号:21832489 阅读:17 留言:0更新日期:2019-08-10 17:56
本公开的实施例涉及用于管理哈希表的方法、设备和计算机程序产品。该方法包括:响应于接收到写入请求,确定与写入请求相关联的第一哈希值是否存储于哈希表集合中,哈希表集合包括至少第一哈希表和第二哈希表,第一哈希表为第一存储设备中当前有效的哈希表,第二哈希表存储于第二存储设备中,第一存储设备的访问速度快于第二存储设备;响应于确定第一哈希值未存储于哈希表集合中并且哈希第一哈希表已满,将第一存储设备中预分配的第三哈希表作为第一存储设备中当前有效的哈希表;向第三哈希表中写入第一条目,其包括第一哈希值;以及将第一哈希表中的条目与第二哈希表中的条目进行合并以便存储到第二存储设备中。基于该方法,构建了一种二级哈希表结构,提高了哈希表管理效率。

Methods, devices, and computer program products for managing hash tables

【技术实现步骤摘要】
用于管理哈希表的方法、设备和计算机程序产品
本公开的实施例涉及数据存储领域,并且更具体地,涉及用于管理哈希表的方法、设备及计算机程序产品。
技术介绍
随着信息时代的来临,需要存储的数据指数级增长。消除冗余技术也越来越被广泛地利用,以减少存储开销并提高存储效率。消除冗余技术是指通过判断需要插入的数据已经被存储于存储装置中,而不再插入新的冗余数据。目前,通常在存储器中管理哈希表,以使得能够快速地判断数据是否冗余,从而避免数据被重复写入。然而当后端存储器的容量很大时,哈希表的规模将受限于存储器的容量。因而,如何有效地管理哈希表将成为一个关注焦点。
技术实现思路
有鉴于此,本公开的实施例提供了一种用于管理哈希表的方案。根据本公开的第一方面,提出了一种用于管理哈希表的方法。该方法包括:响应于接收到写入请求,确定与该写入请求相关联的第一哈希值是否存储于哈希表集合中,该哈希表集合包括至少第一哈希表和第二哈希表,该第一哈希表为第一存储设备中当前有效的哈希表,该第二哈希表存储于第二存储设备中,该第一存储设备的访问速度快于该第二存储设备;响应于确定该第一哈希值未存储于该哈希表集合中并且哈希该第一哈希表已满,将该第一存储设备中预分配的第三哈希表作为该第一存储设备中当前有效的哈希表;向该第三哈希表中写入第一条目,其包括该第一哈希值;以及将该第一哈希表中的哈希值与该第二哈希表中的哈希值进行合并以便存储到该第二存储设备中。根据本公开的第二方面,提出了一种用于管理哈希表的设备。该设备包括:至少一个处理单元;至少一个存储器,该至少一个存储器被耦合到该至少一个处理单元并且存储用于由该至少一个处理单元执行的指令,该指令当由该至少一个处理单元执行时,使得该设备执行动作,该动作包括:响应于接收到写入请求,确定与该写入请求相关联的第一哈希值是否存储于哈希表集合中,该哈希表集合包括至少第一哈希表和第二哈希表,该第一哈希表为第一存储设备中当前有效的哈希表,该第二哈希表存储于第二存储设备中,该第一存储设备的访问速度快于该第二存储设备;响应于确定该第一哈希值未存储于该哈希表集合中并且哈希该第一哈希表已满,将该第一存储设备中预分配的第三哈希表作为该第一存储设备中当前有效的哈希表;向该第三哈希表中写入第一条目,其包括该第一哈希值;以及将该第一哈希表中的哈希值与该第二哈希表中的哈希值进行合并以便存储到该第二存储设备中。在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行根据本公开的第一方面所描述的方法的任意步骤。附图说明通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。图1示出了根据本公开的实施例的哈希表存储架构的示意图;图2示出了根据本公开的实施例的用于管理哈希表的方法的流程图;图3示出了根据本公开实施例的确定哈希值是否存储于哈希表集合中的方法的流程图;图4示出了根据本公开的实施例的另一管理哈希表的方法的流程图;图5示出了根据本公开实施例的删除哈希值的方法的流程图;以及图6示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。具体实施方式下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。如上文所述,传统的哈希表管理方案在存储器中管理哈希表,然而随着主存储设备的容量急剧增大时,用于该主存储设备的哈希表的大小将难以被保持在存储器中。例如,对于200TB的数据,将需要1TB左右的空间来存储所有数据的哈希条目,这对存储器而言是难以接受的数据规模。为了至少部分地解决上述问题以及其他潜在问题,本公开的实施例提供了一种用于管理哈希表的方案。根据本公开的各种示例实施例,构建了一种二级哈希表存储结构,其中第一级哈希表可以被保持于快速存储设备(例如,存储器)中,第二级哈希表可以被保持于次快速存储设备(例如,固态硬盘SSD)中,这样能够解决存储器中空间有限的缺陷,而利用SSD中存储空间大,访问速度较快的优点。此外,仅在第一级哈希表已满时,才将第一哈希表中的值合并到第二级哈希表中,基于这样的方式,传统技术中针对第二存储设备的随机写入操作将被转换为连续的写入操作,从而提高第二存储设备的使用寿命。下面将参考图1-图5详细描述根据本公开的哈希表管理的方法。图1示出了根据本公开的实施例的哈希表存储架构100的示意图。如图1所示,存储架构100包括第一存储设备120和第二存储设备160。在一些实施例中,第一存储设备120的访问速度快于第二存储设备160的访问速度。在一些实施例中,例如,第一存储设备120可以为随机存取存储器,第二存储设备160可以为SSD。在一些实施例中,在第一存储设备120中,设置有一个或多个桶(bucket)122、124、126和128,使得能够根据哈希值的特定位数将每一个I/O相关的哈希值的操作分配到不同桶中进行,从而实现多个哈希值的并发操作,提高哈希表管理的并行度。在一些实施例中,在第一存储设备120中,设置有至少一个哈希表130,其具有多个条目,其中每个条目包括与I/O请求相关联的哈希值。在一些实施例中,在第一存储设备120中,还设置有另一个哈希表132,其与哈希表130配合工作,在哈希表130已满时,哈希值将被写入到哈希表132中,而哈希表130将被标记为仅读。类似地,当哈希表132已满时,哈希表130可以被设置为第一存储设备120中当前有效的哈希表以存储I/O请求相关的哈希值。在一些实施例中,在第二存储设备160,设置有至少一个哈希表162,其用于实现将第一存储设备120中已满的哈希表130中的条目转移到第二存储设备160中。在一些实施例中,在第二存储设备160中,还设置有哈希表164,其用于在哈希表162已满时,将哈希表130和哈希表162中的条目转移到哈希表164中。在一些实施例中,在第一存储设备120中,还设置有与第二存储设备160中的哈希表162和164相关联的索引项134和136,以用于快速实现第二存储设备160中的哈希表162和164中的哈希值的快速查找。在一些实施例中,索引项134可以包括头部138、布隆过滤器(bloomfilter)140和页面索引142,其中头部138存储哈希表162的校验和、容量、页面数目、条目数目等;如下文将详细描述的,布隆过滤器140用于快速确定某个哈希值是否存储于哈希表162中;页面索引142存储每个哈希表中的多个页的起始地址和偏移量。以下将本文档来自技高网...

【技术保护点】
1.一种用于管理哈希表的方法,包括:响应于接收到写入请求,确定与所述写入请求相关联的第一哈希值是否存储于哈希表集合中,所述哈希表集合包括至少第一哈希表和第二哈希表,所述第一哈希表为第一存储设备中当前有效的哈希表,所述第二哈希表存储于第二存储设备中,所述第一存储设备的访问速度快于所述第二存储设备;响应于确定所述第一哈希值未存储于所述哈希表集合中并且哈希所述第一哈希表已满,将所述第一存储设备中预分配的第三哈希表作为所述第一存储设备中当前有效的哈希表;向所述第三哈希表中写入第一条目,所述第一条目包括所述第一哈希值;以及将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并以便存储到所述第二存储设备中。

【技术特征摘要】
1.一种用于管理哈希表的方法,包括:响应于接收到写入请求,确定与所述写入请求相关联的第一哈希值是否存储于哈希表集合中,所述哈希表集合包括至少第一哈希表和第二哈希表,所述第一哈希表为第一存储设备中当前有效的哈希表,所述第二哈希表存储于第二存储设备中,所述第一存储设备的访问速度快于所述第二存储设备;响应于确定所述第一哈希值未存储于所述哈希表集合中并且哈希所述第一哈希表已满,将所述第一存储设备中预分配的第三哈希表作为所述第一存储设备中当前有效的哈希表;向所述第三哈希表中写入第一条目,所述第一条目包括所述第一哈希值;以及将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并以便存储到所述第二存储设备中。2.根据权利要求1所述的方法,其中将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并包括:确定所述第一哈希表中的条目数目与所述第二哈希表中的条目数目之和是否达预定阈值;以及响应于所述和低于所述预定阈值,将所述第一哈希表中的条目和所述第二哈希表中的条目按哈希值大小顺序写入到所述第二哈希表中。3.根据权利要求2所述的方法,还包括:响应于所述和达到所述预定阈值,将所述第一哈希表中的条目和所述第二哈希表中的条目按哈希值大小顺序写写入到预分配的第四哈希表中。4.根据权利要求2或3所述的方法,还包括:从所述第一存储设备中移除所述第一哈希表。5.根据权利要求1所述的方法,还包括:响应于接收到删除请求,确定所述第三哈希表是否已满;以及响应于确定所述第三哈希表未满,向所述第三哈希表写入第二条目,所述第二条目包括与所述用户删除请求相关联的第二哈希值;以及在所述第三哈希表中对所述第二条目进行标记以指示所述第二哈希值将要被删除。6.根据权利要求5所述的方法,其中将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并包括:确定所述第一哈希表和所述第二哈希表中是否存在未被标记的第三条目,所述第三条目包括所述第二哈希值;以及响应于所述第三哈希表或所述第二哈希表中存在所述第三条目,从所述第一哈希表或所述第二哈希表中删除所述第二条目和所述第三条目。7.根据权利要求1所述的方法,其中确定第一哈希值是否存储于哈希表集中包括:确定所述第一哈希值是否存储于所述第一哈希表中;响应于所述第一哈希值未存储于所述第一哈希表中,使用布隆过滤器将所述第一哈希值映射到多个位,所述布隆过滤器与所述第二哈希表相关联;以及响应于确定所述多个位中存在零位,确定所述第一哈希值未存储于所述第二哈希表中。8.根据权利要求7述的方法,还包括:响应于所述多个位中无零位,基于页面索引确定所述第二哈希表中与所述第一哈希值相关联的页面,所述页面索引存储于所述第一存储设备中;以及从所述页面中查询所述第一哈希值。9.根据权利要求7述的方法,其中所述布隆过滤器存储于所述第一存储设备中。10.根据权利要求1所述的方法,其中在确定所述第一哈希值是否存储于哈希表集合中前还包括:基于所述第一哈希值,从多个哈希表集合中确定与所述第一哈希表相关联的哈希表集合。11.一种用于管理哈希表的设备,包括:至少一个处理单元;至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行动作...

【专利技术属性】
技术研发人员:何哲高雷方皓李志强陈欢
申请(专利权)人:伊姆西IP控股有限责任公司
类型:发明
国别省市:美国,US

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

1