CN110109915B - 用于管理哈希表的方法、设备和计算机程序产品 - Google Patents

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

Info

Publication number
CN110109915B
CN110109915B CN201810048717.1A CN201810048717A CN110109915B CN 110109915 B CN110109915 B CN 110109915B CN 201810048717 A CN201810048717 A CN 201810048717A CN 110109915 B CN110109915 B CN 110109915B
Authority
CN
China
Prior art keywords
hash table
hash
entry
storage device
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810048717.1A
Other languages
English (en)
Other versions
CN110109915A (zh
Inventor
何哲
高雷
方皓
李志强
陈欢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201810048717.1A priority Critical patent/CN110109915B/zh
Priority to US16/249,376 priority patent/US10705735B2/en
Publication of CN110109915A publication Critical patent/CN110109915A/zh
Application granted granted Critical
Publication of CN110109915B publication Critical patent/CN110109915B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

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

Description

用于管理哈希表的方法、设备和计算机程序产品
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及用于管理哈希表的方法、设备及计算机程序产品。
背景技术
随着信息时代的来临,需要存储的数据指数级增长。消除冗余技术也越来越被广泛地利用,以减少存储开销并提高存储效率。消除冗余技术是指通过判断需要插入的数据已经被存储于存储装置中,而不再插入新的冗余数据。
目前,通常在存储器中管理哈希表,以使得能够快速地判断数据是否冗余,从而避免数据被重复写入。然而当后端存储器的容量很大时,哈希表的规模将受限于存储器的容量。因而,如何有效地管理哈希表将成为一个关注焦点。
发明内容
有鉴于此,本公开的实施例提供了一种用于管理哈希表的方案。
根据本公开的第一方面,提出了一种用于管理哈希表的方法。该方法包括:响应于接收到写入请求,确定与该写入请求相关联的第一哈希值是否存储于哈希表集合中,该哈希表集合包括至少第一哈希表和第二哈希表,该第一哈希表为第一存储设备中当前有效的哈希表,该第二哈希表存储于第二存储设备中,该第一存储设备的访问速度快于该第二存储设备;响应于确定该第一哈希值未存储于该哈希表集合中并且哈希该第一哈希表已满,将该第一存储设备中预分配的第三哈希表作为该第一存储设备中当前有效的哈希表;向该第三哈希表中写入第一条目,其包括该第一哈希值;以及将该第一哈希表中的哈希值与该第二哈希表中的哈希值进行合并以便存储到该第二存储设备中。
根据本公开的第二方面,提出了一种用于管理哈希表的设备。该设备包括:至少一个处理单元;至少一个存储器,该至少一个存储器被耦合到该至少一个处理单元并且存储用于由该至少一个处理单元执行的指令,该指令当由该至少一个处理单元执行时,使得该设备执行动作,该动作包括:响应于接收到写入请求,确定与该写入请求相关联的第一哈希值是否存储于哈希表集合中,该哈希表集合包括至少第一哈希表和第二哈希表,该第一哈希表为第一存储设备中当前有效的哈希表,该第二哈希表存储于第二存储设备中,该第一存储设备的访问速度快于该第二存储设备;响应于确定该第一哈希值未存储于该哈希表集合中并且哈希该第一哈希表已满,将该第一存储设备中预分配的第三哈希表作为该第一存储设备中当前有效的哈希表;向该第三哈希表中写入第一条目,其包括该第一哈希值;以及将该第一哈希表中的哈希值与该第二哈希表中的哈希值进行合并以便存储到该第二存储设备中。
在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行时使机器执行根据本公开的第一方面所描述的方法的任意步骤。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图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、布隆过滤器(bloom filter)140和页面索引142,其中头部138存储哈希表162的校验和、容量、页面数目、条目数目等;如下文将详细描述的,布隆过滤器140用于快速确定某个哈希值是否存储于哈希表162中;页面索引142存储每个哈希表中的多个页的起始地址和偏移量。
以下将结合图2描述根据本公开实施例的管理哈希表的方法200的流程图。在框202中,接收写入请求。在框204中,确定与写入请求相关联的哈希值(为了方便描述,下文称为第一哈希值)是否存储于哈希表集合中。
在一些实施例中,每个哈希值可以被发送到如图1中所示的不同的桶中。由于哈希值本身具有良好的随机性,因此可以基于该哈希值中特定位的值来确定其将被发送到哪个桶中。例如,如果该架构中设置有128个桶,则可以根据该哈希值的前6位来确定与该哈希值相关联的桶,例如,如果前6位值为000010,则该哈希值将被发送到第2个桶。通过这样的方式,可以并行地对多个哈希值进行操作,而不发生冲突。应当理解,每个桶122、124、126和128中有着同样的多级哈希表结构,并且其操作是一致的。
因此,为了方便描述,下文将以其中一个桶中的操作作为示例进行描述,例如,如图1所示,第一哈希值与桶122相关联,从而可以确定其对应的哈希表集合包括哈希表130(为了方便描述,下文称为第一哈希表)、哈希表162(为了方便描述,下文称为第二哈希表)和哈希表134(为了方便描述,下文称为第四哈希表),其中,第一哈希表为第一存储设备120中当前有效的哈希表。应当理解,上文中所述的哈希表的具体数目仅是示例性的。
以下将结合图3描述框204的具体实现,图3示出了根据本公开实施例的确定哈希值是否存储于哈希表集合中的方法的示例实施方式300。
在框302中,在第一哈希表130中查找第一哈希值,并在框304确定其是否存储于第一哈希表130中,如果在第一哈希表130中查找到第一哈希值,则代表该数据已经被存储,因此不需要再被写入。如果在第一哈希表130中未查找第一哈希值,则方法300进行到框306。
在框306中,使用于第二哈希表相关联的布隆过滤器将第一哈希值映射到多个位,并在框308中确定多个位中是否存在零位。布隆过滤器是用于判断一个元素是否在某个集合中的数据结构,一个空的布隆过滤器是一个有m个位的位数组,每一个位都初始化为0,并且定义有多个不同的哈希函数,每个哈希函数都将集合中的元素哈希到m个不同位置中的一个,并将该多个位的值置1。
在一些实施例中,如上文所述,布隆过滤器134位于第一存储设备120中,而非第二存储设备160中,从而能够利用访问速度更快的第一存储设备120便能够确定某些哈希值不存在于第二哈希表162中,而不用访问第二存储设备160,从而能够极大地提高查找效率。
如图1所示,在查询第一哈希值时,使用与第二哈希表162相关联布隆过滤器142中的多个哈希函数将第一哈希值映射到多个位,如果在框308中确定多个位中存在零位,则方法300进行到框310,即确定第一哈希值未存储于第二哈希表162中。此时,可以针对哈希表集合中的下一个哈希表(例如,第四哈希表164)继续进行查询,其方法与针对第二哈希表162的查询方法类似,因此不再详述。
如果在框308中确定多个位中不存在零位,则表示第一哈希值可能存在于第二哈希表162中,则方法300进行到框312,即基于页面索引142确定与第一哈希值相关联的页面。在一些实施例中,如上文所述,页面索引142存储了第二哈希表中各个页面的起始哈希值及偏移量,从而能够快速地定位第一哈希值所对应的哈希表页面。并在框314中,从该对应的页面中查找第一哈希值。在一些实施例中,如图1所示,页面索引142可以被存储于第一存储设备120中。
继续参考图2,若在框204中确定第一哈希值未存储于哈希表集合中,则方法进行到框206,即判断第一哈希表130是否已满。若第一哈希表130未满,则方法200进行到框208,即向第一哈希表130写入第一条目,该第一条目包括第一哈希值。
在一些实施例中,还可以在NVRAM(非易失性随机访问存储器)中设置日志缓冲区,用于在向哈希表进行写入时也将该条目写入到日志中,并且在缓冲区满时,将其中的条目添加到位于第二存储设备160中的哈希表日志中。通过添加日志管理机制,可以有效地避免突发断电、数据丢失等风险,并且支持数据的恢复,提高数据存储的安全性。
若在框206中确定第一哈希表已满,则方法200进行到框210。在框210中,将第三哈希表132作为第一存储设备120中当前有效的哈希表。在一些实施例中,第三哈希表132可以为第一存储设备120中预分配的存储区域。在一些实施例中,也可以临时申请预定大小的存储区域,以作为第三哈希表132。
在框212中,向第三哈希表132写入第一条目,其包括第一哈希值。以及,在框215中,将第一哈希表130中的条目与第二哈希表162中的条目进行合并。
在一些实施例中,首先确定第一哈希表130中的条目数目与第二哈希表162中的条目数目的和是否达到了预定阈值,该预定阈值可以为第二哈希表162可以存储的条目的最大数目。当该和小于该预定阈值时,表示第二哈希表162中剩余的空间足够容纳第一哈希表130中的条目,此时可以将第一哈希表130中的条目和第二哈希表162中的条目,例如按照哈希值从小到大的顺序,重新写入到第二哈希表162中,并更新与第二哈希表相关联的索引项134。
在一些实施例中,当该和达到预定阈值时,表示第二哈希表162中剩余的空间不足以容纳第一哈希表130中的条目,此时需要将条目值合并到新的第四哈希表164中,此时可以将第一哈希表130中的条目和第二哈希表162中的条目,例如按照哈希值从小到大的顺序,写入到第四哈希表164中,并且更新与第四哈希表相关联的索引项136。在一些实施例中,可以在第二存储设备160中预分配第四哈希表164。在一些实施例中,还可以临时在第二存储设备160中申请预定大小的存储空间,以用作第四哈希表164。在一些实施例中,在完成合并后,可以经第二哈希表162设置为可写入状态,使得其可以被再次使用。在一些实施例中,在完成合并后,还可以直接释放第二哈希表162。
在一些实施例中,在完成第一哈希表130中的条目与第二哈希表162中的条目的合并后,可以将第一哈希表130设置为可写入状态,以使得其可以被再次使用。在一些实施例中,还可以直接释放第一哈希表130。
根据本公开的实施例,第一哈希表130和第二哈希表162的合并是异步进行的,并通过在第一存储器120中使用双哈希表的方式,而不用对第一存储器120中的哈希表进行锁定,从而能够保证新来写入请求被及时地响应,并且将连续地、离散的小数据写入通过合并的方式转为连续的大数据写入,进而能够提高第二存储设备160的使用寿命。
在一些实施例中,如果第二存储设备160中只设计了一层哈希结构,例如第二哈希表162,例如,第二哈希表162的容量可以是足够大的。假定第二哈希表162的容量为第一哈希表130的N倍,并假定第一哈希表130的容量相当于第二哈希表162中一个页面的容量相同。由于当第一存储设备110中的哈希表满时,其需要与第二哈希表162进行合并,在每次合并的过程中都需要读取第二哈希表162中的全部条目,并合将并后的条目重新写入到第二哈希表中。因此,若写入N个页面的数据,需要进行N次合并,其中进行了N*N*页面的I/O操作,这个量级的I/O效率相对较低,难以接受。
优选地,在一些实施例中,可以在第二存储设备160中设置多层级的哈希表,例如可以设置m层哈希表,此外为了方便合并操作,常将下一层的哈希表的容量设置为上一层哈希表容量的n倍,其中第二哈希表162的容量可以为第一哈希表容量130的n倍,同样假定第一哈希表130的容量大小为第二哈希表162中的一个页面。此时,例如,写入Nm个页面的数据需要进行的I/O操作的量为:Nm*((n-1)*m+1),其中Nm=nm,即为第m层中页面数目。
以写入64个页面的数据为例,若采用单层的方式,将需要进行64*64*页面的I/O操作。若采用分层(例如,3层)的方式,其中下一层为上一层的4倍容量,则写入64个页面的数据,只需要64*((4-1)*3+1)=64*10页面的数据。由此可见,基于多层次设计的哈希表结构能够极大地减少合并中所产生的I/O操作量,从而显著地提高哈希表操作的效率。
以下将参考图4描述根据本公开的实施例的另一管理哈希表的方法400。在框402中,接收删除请求,以及在框404中,确定第一存储设备120中的当前有效的第三哈希表132是否已满。
若在框404中确定第三哈希表132未满,则方法400进行到框414,即向第三哈希表132写入第二条目,该第二条目包括与删除请求相关联的第二哈希值,并且在框416,在第三哈希表中对第二条目进行标记以指示第二哈希值将要被删除。
若在框404中确定第三哈希表132已满,则方法400进行到框406,选择第一哈希表130作为第一存储设备120中当前有效的哈希表。在一些实施例中,也可以临时从第一存储设备120中申请新的哈希表,以作为当前有效的哈希表。
在框408中,向第一哈希表130写入第二条目,以及在框410,在第一哈希表中对第二条目进行标记以指示第二哈希值将要被删除。以及在框412中,将第三哈希表132中的条目与第二哈希表162中的条目进行合并。
如上文所述,待删除的哈希值仅是在哈希表中被标记为待删除状态,其并非被实时地删除,而是在合并的过程被删除。以下将结合图5描述根据本公开实施例的删除哈希值的方法500的流程图。
在框502中,从第一哈希表中确定经标记的第二条目,该第二条目包括第二哈希值。在框504中,确定第一哈希表和第二哈希表中是否存在未被标记的第三条目,第三条目也包括第二哈希值。如果第三哈希表或第二哈希表中存在第三条目,则方法500进行到框506,即从第一哈希表或第二哈希表中删除第二条目和第三条目。在一些实施例,当第三条目被删除时,还可以从存储装置中释放与第二哈希值相关联的存储空间。
如果在框504中确定第一哈希表和第二哈希表中都不存在第三条目,则方法500进行到框508,即可以按照上文所述的方法对第一哈希表和第二哈希表进行合并,并在合并的结果中保留第二条目及其标记状态。
基于上文所描述的方式,哈希值删除操作可以与哈希值插入操作一起先被写入到第一存储设备120中的哈希表中,并等到哈希表满时才会与第二存储设备160中的哈希表进行合并,这样能够将单个的、随机的小写入/删除操作转换为连续的大的写入/删除操作,提高了哈希表的操作效率,并延长了第二存储设备160的寿命。
图6示出了可以用来实施本公开内容的实施例的示例设备600的示意性框图。如图所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600和/或设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200、300、400和/或500,可由处理单元601执行。例如,在一些实施例中,方法200、300、400和/或500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元606而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU 601执行时,可以执行上文描述的方法200、300、400和/或500的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。

Claims (19)

1.一种用于管理哈希表的方法,包括:
响应于接收到写入请求,确定与所述写入请求相关联的第一哈希值是否存储于哈希表集合中,所述哈希表集合包括至少第一哈希表和第二哈希表,所述第一哈希表为第一存储设备中当前有效的哈希表,所述第二哈希表存储于第二存储设备中,所述第一存储设备的访问速度快于所述第二存储设备;
响应于确定所述第一哈希值未存储于所述哈希表集合中并且所述第一哈希表已满,将所述第一存储设备中预分配的第三哈希表作为所述第一存储设备中当前有效的哈希表;
向所述第三哈希表中写入第一条目,所述第一条目包括所述第一哈希值;
响应于接收到删除请求,向所述第三哈希表写入第二条目,所述第二条目包括与所述删除请求相关联的第二哈希值;以及
将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并以便存储到所述第二存储设备中,包括:
确定所述第一哈希表和所述第二哈希表中是否存在未被标记的第三条目,所述第三条目包括所述第二哈希值;
响应于所述第三哈希表或所述第二哈希表中存在所述第三条目,从所述第一哈希表或所述第二哈希表中删除所述第二条目和所述第三条目,以释放与所述第二哈希值相关联的存储空间;以及
响应于所述第一哈希表和所述第二哈希表中不存在所述第三条目,保留所述第二条目。
2.根据权利要求1所述的方法,其中将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并包括:
确定所述第一哈希表中的条目数目与所述第二哈希表中的条目数目之和是否达预定阈值;以及
响应于所述和低于所述预定阈值,将所述第一哈希表中的条目和所述第二哈希表中的条目按哈希值大小顺序写入到所述第二哈希表中。
3.根据权利要求2所述的方法,还包括:
响应于所述和达到所述预定阈值,将所述第一哈希表中的条目和所述第二哈希表中的条目按哈希值大小顺序写写入到预分配的第四哈希表中。
4.根据权利要求2或3所述的方法,还包括:
从所述第一存储设备中移除所述第一哈希表。
5.根据权利要求1所述的方法,还包括:
响应于接收到所述删除请求,确定所述第三哈希表是否已满;
响应于确定所述第三哈希表未满,向所述第三哈希表写入所述第二条目;以及
在所述第三哈希表中对所述第二条目进行标记以指示所述第二哈希值将要被删除。
6.根据权利要求1所述的方法,其中确定第一哈希值是否存储于哈希表集中包括:
确定所述第一哈希值是否存储于所述第一哈希表中;
响应于所述第一哈希值未存储于所述第一哈希表中,使用布隆过滤器将所述第一哈希值映射到多个位,所述布隆过滤器与所述第二哈希表相关联;以及
响应于确定所述多个位中存在零位,确定所述第一哈希值未存储于所述第二哈希表中。
7.根据权利要求6所述的方法,还包括:
响应于所述多个位中无零位,基于页面索引确定所述第二哈希表中与所述第一哈希值相关联的页面,所述页面索引存储于所述第一存储设备中;以及
从所述页面中查询所述第一哈希值。
8.根据权利要求6所述的方法,其中所述布隆过滤器存储于所述第一存储设备中。
9.根据权利要求1所述的方法,其中在确定所述第一哈希值是否存储于哈希表集合中前还包括:
基于所述第一哈希值,从多个哈希表集合中确定与所述第一哈希表相关联的哈希表集合。
10.一种用于管理哈希表的设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:
响应于接收到写入请求,确定与所述写入请求相关联的第一哈希值是否存储于哈希表集合中,所述哈希表集合包括至少第一哈希表和第二哈希表,所述第一哈希表为第一存储设备中当前有效的哈希表,所述第二哈希表存储于第二存储设备中,所述第一存储设备的访问速度快于所述第二存储设备;
响应于确定所述第一哈希值未存储于所述哈希表集合中并且所述第一哈希表已满,将所述第一存储设备中预分配的第三哈希表作为所述第一存储设备中当前有效的哈希表;
向所述第三哈希表中写入第一条目,所述第一条目包括所述第一哈希值;
响应于接收到删除请求,向所述第三哈希表写入第二条目,所述第二条目包括与所述删除请求相关联的第二哈希值;以及
将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并以便存储到所述第二存储设备中,包括:
确定所述第一哈希表和所述第二哈希表中是否存在未被标记的第三条目,所述第三条目包括所述第二哈希值;以及
响应于所述第三哈希表或所述第二哈希表中存在所述第三条目,从所述第一哈希表或所述第二哈希表中删除所述第二条目和所述第三条目,以释放与所述第二哈希值相关联的存储空间;以及
响应于所述第一哈希表和所述第二哈希表中不存在所述第三条目,保留所述第二条目。
11.根据权利要求10所述的设备,其中将所述第一哈希表中的条目与所述第二哈希表中的条目进行合并包括:
确定所述第一哈希表中的条目数目与所述第二哈希表中的条目数目之和是否达预定阈值;以及
响应于所述和低于所述预定阈值,将所述第一哈希表中的条目和所述第二哈希表中的条目按哈希值大小顺序写入到所述第二哈希表中。
12.根据权利要求11所述的设备,所述动作还包括:
响应于所述和达到所述预定阈值,将所述第一哈希表中的条目和所述第二哈希表中的条目按哈希值大小顺序写写入到预分配的第四哈希表中。
13.根据权利要求11或12所述的设备,所述动作还包括:
从所述第一存储设备中移除所述第一哈希表。
14.根据权利要求10所述的设备,所述动作还包括:
响应于接收到所述删除请求,确定所述第三哈希表是否已满;
响应于确定所述第三哈希表未满,向所述第三哈希表写入所述第二条目;以及
在所述第三哈希表中对所述第二条目进行标记以指示所述第二哈希值将要被删除。
15.根据权利要求10所述的设备,其中确定第一哈希值是否存储于哈希表集中包括:
确定所述第一哈希值是否存储于所述第一哈希表中;
响应于所述第一哈希值未存储于所述第一哈希表中,使用布隆过滤器将所述第一哈希值映射到多个位,所述布隆过滤器与所述第二哈希表相关联;以及
响应于确定所述多个位中存在零位,确定所述第一哈希值未存储于所述第二哈希表中。
16.根据权利要求15所述的设备,所述动作还包括:
响应于所述多个位中无零位,基于页面索引确定所述第二哈希表中与所述第一哈希值相关联的页面,所述页面索引存储于所述第一存储设备中;以及
从所述页面中查询所述第一哈希值。
17.根据权利要求15所述的设备,其中所述布隆过滤器存储于所述第一存储设备中。
18.根据权利要求10所述的设备,其中在确定所述第一哈希值是否存储于哈希表集合中前还包括:
基于所述第一哈希值,从多个哈希表集合中确定与所述第一哈希表相关联的哈希表集合。
19.一种计算机可读存储介质,其上存储有计算机可读指令,所述指令在被执行时使计算机执行根据权利要求1至9中任一项所述的方法。
CN201810048717.1A 2018-01-18 2018-01-18 用于管理哈希表的方法、设备和计算机程序产品 Active CN110109915B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810048717.1A CN110109915B (zh) 2018-01-18 2018-01-18 用于管理哈希表的方法、设备和计算机程序产品
US16/249,376 US10705735B2 (en) 2018-01-18 2019-01-16 Method and device for managing hash table, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810048717.1A CN110109915B (zh) 2018-01-18 2018-01-18 用于管理哈希表的方法、设备和计算机程序产品

Publications (2)

Publication Number Publication Date
CN110109915A CN110109915A (zh) 2019-08-09
CN110109915B true CN110109915B (zh) 2024-01-05

Family

ID=67212867

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810048717.1A Active CN110109915B (zh) 2018-01-18 2018-01-18 用于管理哈希表的方法、设备和计算机程序产品

Country Status (2)

Country Link
US (1) US10705735B2 (zh)
CN (1) CN110109915B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110764698B (zh) * 2019-09-29 2021-01-29 北京航空航天大学 信息收发方法及设备
CN111079126A (zh) * 2019-11-11 2020-04-28 重庆首厚智能科技研究院有限公司 一种基于hash算法的用户权限管理系统
JP7323804B2 (ja) * 2019-12-10 2023-08-09 富士通株式会社 データ処理装置およびデータ処理プログラム
CN113127921A (zh) * 2019-12-31 2021-07-16 伊姆西Ip控股有限责任公司 数据管理的方法、电子设备和计算机程序产品
CN113448920A (zh) * 2020-03-27 2021-09-28 伊姆西Ip控股有限责任公司 管理存储系统中的索引的方法、设备和计算机程序产品
CN111506499B (zh) * 2020-04-08 2023-06-02 百度在线网络技术(北京)有限公司 一种小程序中参数可用性检测方法、装置以及电子设备
CN112581476A (zh) * 2020-12-08 2021-03-30 北京构力科技有限公司 在建筑设计中使用的图纸分割的方法和电子设备
US11822473B2 (en) 2021-04-15 2023-11-21 EMC IP Holding Company LLC Smooth flushing of cached write data
CN115639949A (zh) * 2021-07-20 2023-01-24 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11914647B2 (en) * 2022-06-06 2024-02-27 Google Llc Efficient hash table lookup
US11734423B1 (en) * 2022-10-27 2023-08-22 Arctic Wolf Networks, Inc. Apparatus and method for monitoring of data for attack detection and prevention

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008263436A (ja) * 2007-04-12 2008-10-30 Alaxala Networks Corp 負荷分散装置及びネットワーク装置
CN102598019A (zh) * 2009-09-09 2012-07-18 弗森-艾奥公司 用于分配存储的设备、系统和方法
CN102609364A (zh) * 2012-02-14 2012-07-25 华中科技大学 缓存交换方法
JP2012194989A (ja) * 2012-05-29 2012-10-11 Hitachi Solutions Ltd 検索方法、統合検索サーバ及びコンピュータプログラム
CN103902623A (zh) * 2012-12-26 2014-07-02 财团法人工业技术研究院 用于在存储系统上存取文件的方法和系统
CN104246764A (zh) * 2012-02-24 2014-12-24 森普利维蒂公司 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置
CN104504105A (zh) * 2014-12-30 2015-04-08 青岛海信网络科技股份有限公司 一种实时数据库的存储方法
CN104504116A (zh) * 2014-12-30 2015-04-08 青岛海信网络科技股份有限公司 一种实时数据库的存储方法
CN104731523A (zh) * 2013-12-24 2015-06-24 国际商业机器公司 非易失性分级存储系统中的协同管理的方法及其控制器
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织
CN105808156A (zh) * 2014-12-31 2016-07-27 华为技术有限公司 将数据写入固态硬盘的方法及固态硬盘
CN106156355A (zh) * 2016-07-27 2016-11-23 腾讯科技(深圳)有限公司 日志处理方法及装置
CN106777111A (zh) * 2016-12-15 2017-05-31 华南师范大学 一种超大规模数据的时序检索索引系统及方法
CN107203334A (zh) * 2016-03-17 2017-09-26 爱思开海力士有限公司 混合存储器件及其操作方法
CN107562367A (zh) * 2016-07-01 2018-01-09 阿里巴巴集团控股有限公司 基于软件化存储系统读写数据的方法以及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397051B2 (en) * 2009-02-23 2013-03-12 Autonomy, Inc. Hybrid hash tables
US8976647B2 (en) * 2011-11-08 2015-03-10 Futurewei Technologies, Inc. Hardware-based dynamic load balancing that avoids flow packet reordering statistically
US9009206B1 (en) * 2012-11-20 2015-04-14 Netapp, Inc. Method and system for optimizing traversal and storage of directory entries of a storage volume
US20140188885A1 (en) * 2012-12-27 2014-07-03 Broadcom Corporation Utilization and Power Efficient Hashing
US9966152B2 (en) * 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008263436A (ja) * 2007-04-12 2008-10-30 Alaxala Networks Corp 負荷分散装置及びネットワーク装置
CN102598019A (zh) * 2009-09-09 2012-07-18 弗森-艾奥公司 用于分配存储的设备、系统和方法
CN102609364A (zh) * 2012-02-14 2012-07-25 华中科技大学 缓存交换方法
CN104246764A (zh) * 2012-02-24 2014-12-24 森普利维蒂公司 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置
JP2012194989A (ja) * 2012-05-29 2012-10-11 Hitachi Solutions Ltd 検索方法、統合検索サーバ及びコンピュータプログラム
CN103902623A (zh) * 2012-12-26 2014-07-02 财团法人工业技术研究院 用于在存储系统上存取文件的方法和系统
CN104731523A (zh) * 2013-12-24 2015-06-24 国际商业机器公司 非易失性分级存储系统中的协同管理的方法及其控制器
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织
CN104504116A (zh) * 2014-12-30 2015-04-08 青岛海信网络科技股份有限公司 一种实时数据库的存储方法
CN104504105A (zh) * 2014-12-30 2015-04-08 青岛海信网络科技股份有限公司 一种实时数据库的存储方法
CN105808156A (zh) * 2014-12-31 2016-07-27 华为技术有限公司 将数据写入固态硬盘的方法及固态硬盘
CN107203334A (zh) * 2016-03-17 2017-09-26 爱思开海力士有限公司 混合存储器件及其操作方法
CN107562367A (zh) * 2016-07-01 2018-01-09 阿里巴巴集团控股有限公司 基于软件化存储系统读写数据的方法以及装置
CN106156355A (zh) * 2016-07-27 2016-11-23 腾讯科技(深圳)有限公司 日志处理方法及装置
CN106777111A (zh) * 2016-12-15 2017-05-31 华南师范大学 一种超大规模数据的时序检索索引系统及方法

Also Published As

Publication number Publication date
US10705735B2 (en) 2020-07-07
CN110109915A (zh) 2019-08-09
US20190220190A1 (en) 2019-07-18

Similar Documents

Publication Publication Date Title
CN110109915B (zh) 用于管理哈希表的方法、设备和计算机程序产品
CN107870728B (zh) 用于移动数据的方法和设备
CN107003935B (zh) 用于优化数据库去重的装置、方法和计算机介质
US10698831B2 (en) Method and apparatus for data access
US10817428B2 (en) Method and electronic device for accessing data
US10740245B2 (en) Method, device and computer program product for cache management
US11263080B2 (en) Method, apparatus and computer program product for managing cache
CN111949605A (zh) 用于实现文件系统的方法、设备和计算机程序产品
US10795579B2 (en) Methods, apparatuses, system and computer program products for reclaiming storage units
CN109918352B (zh) 存储器系统和存储数据的方法
US20200349081A1 (en) Method, apparatus and computer program product for managing metadata
CN110765036A (zh) 在控制设备处管理元数据的方法、设备和计算机程序产品
CN112748849A (zh) 用于存储数据的方法、设备和计算机程序产品
US11520818B2 (en) Method, apparatus and computer program product for managing metadata of storage object
CN111143113A (zh) 复制元数据的方法、电子设备和计算机程序产品
US11287993B2 (en) Method, device, and computer program product for storage management
CN111857557B (zh) Raid类型转换的方法、设备和计算机程序产品
US11494099B2 (en) Method, device, and computer program product for managing storage system
US11385967B2 (en) Method for managing backup data by having space recycling operations on executed backup data blocks
US11341055B2 (en) Method, electronic device, and computer program product for storage management
CN110413215B (zh) 用于获取访问权限的方法、设备和计算机程序产品
CN113448877A (zh) 用于数据存储的方法、设备和计算机程序
CN109416663B (zh) 用于最小化存储系统和其设备内的ssd中的碎片化的方法
US11340811B2 (en) Determining reclaim information for a storage block based on data length and matching write and delete parameters
CN112764662B (zh) 用于存储管理的方法、设备和计算机程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant