一种哈希表的处理方法、装置及电子设备制造方法及图纸

技术编号:38770868 阅读:16 留言:0更新日期:2023-09-10 10:44
本发明专利技术提供一种哈希表的处理方法、装置及电子设备,哈希表位于持久数据层,包括多个哈希桶,每个哈希桶存储多个键值对,在易失性过滤层设置布隆过滤器;其中,哈希桶存储的每个键值对的键被插入到布隆过滤器中,与布隆过滤器中N个位的数据相互映射,哈希桶内任意两个键值对的键在布隆过滤器内映射的数据位不能完全重合,布隆过滤器内一个数据位能够被至少一个键映射;当需要对哈希表内某个键值对内的值进行查找或者删除时,先在布隆过滤器中查找对应的键,若对应的键不存在,则对应的键值对不存在于哈希表内,返回查找失败或删除失败指示,以降低对持久数据层的访问开销,提高对哈希表的负查询性能。本发明专利技术提高了对哈希表的处理性能。理性能。理性能。

【技术实现步骤摘要】
一种哈希表的处理方法、装置及电子设备


[0001]本专利技术属于计算机存储领域,更具体地,涉及一种哈希表的处理方法、装置及电子设备。

技术介绍

[0002]持久存储器(Persistent Memory,PM)为构建大规模、低延迟的存储器和存储系统提供了一条新的途径。PM,如相变存储器和Intel Optane DC持久存储器模块(Data Center Persistent Memory Module,DCPMM),提供了理想的特性,如大容量、高性能、非易失性和字节寻址能力。PM有望取代DRAM成为下一代候选存储器,弥合机械硬盘(Hard Disk Drive,HDD)和动态随机访问内存(Dynamic Random Access Memory,DRAM)之间的性能差距,丰富存储层。英特尔发布的DCPMM单设备容量高达256GB,最大单机容量为8TB(512GB/DIMM*16DIMM),能够为各种应用程序提供高吞吐量、低延迟和低总拥有成本(Total Cost of Ownership,TCO)的实时处理系统。
[0003]哈希索引由于其恒定级别的快速查找性能,被广泛应用于键值存储系统的内存索引结构中,如Memcached和Redis。哈希索引的一个独特弱点是,如果多个条目存在密钥冲突(即哈希冲突),则如果哈希表已满,则需要重散列或调整其大小。随着PM的发展,许多研究人员一直致力于设计高效的基于PM的持久哈希索引,如Level hashing、CCEH、PCLHT、SOFT、Clevel和Dash。/>[0004]正向搜索查找散列表中的现有元素,而负向搜索查找散表中不存在的元素。然而,上述基于PM的哈希索引仍然存在较差的负搜索性能。我们对它们的负搜索分析的研究表明,持久哈希索引的负查询吞吐量仅为其正查询吞吐量的45.1%

79.8%。基于PM的哈希索引系统中的负查询会导致大量PM访问,这会显著降低系统性能,尤其是在处理频繁查询不存在元素的工作负载时,因此提高负查询性能是必要的,也是重要的。且当数据负载量过大时,哈希桶的平均桶链长度过长,导致哈希表的正查询吞吐量过大,影响系统性能。
[0005]综上可知,现有哈希表的处理性能有待提高。

技术实现思路

[0006]针对现有技术的缺陷,本专利技术的目的在于提供一种哈希表的处理方法、装置及电子设备,旨在解决现有哈希表的处理性能有待提高的问题。
[0007]为实现上述目的,第一方面,本专利技术提供了一种哈希表的处理方法,所述哈希表位于持久数据层,包括多个哈希桶,每个哈希桶存储多个键值对,所述方法包括以下步骤:
[0008]在易失性过滤层设置布隆过滤器;其中,所述哈希桶存储的每个键值对的键被插入到布隆过滤器中,与布隆过滤器中N个位的数据相互映射,N为大于1的整数;哈希桶内任意两个键值对的键在布隆过滤器内映射的数据位不能完全重合,布隆过滤器内一个数据位能够被至少一个键映射;
[0009]当需要对哈希表内某个键值对内的值进行查找或者删除时,先在布隆过滤器中查
找对应的键,若对应的键不存在,则对应的键值对不存在于哈希表内,返回查找失败或删除失败指示,以在键值对不存在于哈希表时降低对持久数据层的访问开销,提高对哈希表的负查询性能。
[0010]在一个可能的实现方式,该方法还包括如下步骤:
[0011]当需要对哈希表内某个键值对内的值进行查找或者删除时,先在布隆过滤器中查找对应的键,若对应的键存在,则按照对应的键值对在哈希表中进行查找或者删除。
[0012]在一个可能的实现方式,该方法还包括如下步骤:
[0013]当需要在哈希表内插入某个键值对时,先判断哈希表内是否已经存在所要插入的键值对,若存在,则返回插入失败指示;
[0014]若哈希表内不存在所要插入的键值对,根据键计算对应的头桶号,并锁定所述头桶号对应的哈希桶内范围;
[0015]在锁定的哈希桶内范围查找是否存在空闲的键值对槽,若存在,则将键值对插入空闲的槽,且采用合并刷新方式将插入的键值对持久化到非易失内存中,以完成键值对插入;其中,所述合并刷新方式用于减小缓存行刷新次数,降低哈希表的插入延时开销。
[0016]在一个可能的实现方式,在锁定的哈希桶内范围查找是否存在空闲的键值对槽,若不存在,则采用头插法,从非易失内存空间中分配一个新的链桶并赋值到临时桶指针,将新链桶的第一个槽位设置为所要插入键值对的位置,插入待插入键值对,并采用合并刷新方式将插入的键值对持久化到非易失内存;之后将所述临时桶指针赋值给头桶指针的下一个桶指针,并使用缓存行刷新指令将头桶的下一个桶指针持久化到非易失内存中。
[0017]在一个可能的实现方式,该方法还包括如下步骤:
[0018]根据持久数据层的数据负载量动态设置哈希表的初始头桶长度,当所述数据负载量相对较大时,初始头桶长度相对较长,对应每个头桶的平均桶链长度相对较短,以提升哈希表的正查询性能。
[0019]第二方面,本专利技术提供了一种哈希表的处理装置,所述哈希表位于持久数据层,包括多个哈希桶,每个哈希桶存储多个键值对,装置包括:
[0020]布隆过滤器设置单元,用于在易失性过滤层设置布隆过滤器;其中,所述哈希桶存储的每个键值对的键被插入到布隆过滤器中,与布隆过滤器中N个位的数据相互映射,N为大于1的整数;哈希桶内任意两个键值对的键在布隆过滤器内映射的数据位不能完全重合,布隆过滤器内一个数据位能够被至少一个键映射;
[0021]哈希表负查询单元,用于当需要对哈希表内某个键值对内的值进行查找或者删除时,先在布隆过滤器中查找对应的键,若对应的键不存在,则对应的键值对不存在于哈希表内,返回查找失败或删除失败指示,以在键值对不存在于哈希表时降低对持久数据层的访问开销,提高对哈希表的负查询性能。
[0022]在一个可能的实现方式,该装置还包括:
[0023]哈希表插入单元,用于当需要在哈希表内插入某个键值对时,先判断哈希表内是否已经存在所要插入的键值对,若存在,则返回插入失败指示;若哈希表内不存在所要插入的键值对,根据键计算对应的头桶号,并锁定所述头桶号对应的哈希桶内范围;在锁定的哈希桶内范围查找是否存在空闲的键值对槽,若存在,则将键值对插入空闲的槽,且采用合并刷新方式将插入的键值对持久化到非易失内存中,以完成键值对插入;其中,所述合并刷新
方式用于减小缓存行刷新次数,降低哈希表的插入延时开销。
[0024]在一个可能的实现方式,所述哈希表插入单元,用于在锁定的哈希桶内范围查找是否存在空闲的键值对槽,若不存在,则采用头插法,从非易失内存空间中分配一个新的链桶并赋值到临时桶指针,将新链桶的第一个槽位设置为所要插入键值对的位置,插入待插入键值对,并采用合并刷新方式将插入的键值对持久化到非易失内存;之后将所述临时桶指针赋值给头桶指针的下一个桶指针,并使用缓存行刷新指令将头桶的下一个桶指针持久化到非易失内存中。
[0025]在一个可能的实现方式本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种哈希表的处理方法,所述哈希表位于持久数据层,包括多个哈希桶,每个哈希桶存储多个键值对,其特征在于,所述方法包括以下步骤:在易失性过滤层设置布隆过滤器;其中,所述哈希桶存储的每个键值对的键被插入到布隆过滤器中,与布隆过滤器中N个位的数据相互映射,N为大于1的整数;哈希桶内任意两个键值对的键在布隆过滤器内映射的数据位不能完全重合,布隆过滤器内一个数据位能够被至少一个键映射;当需要对哈希表内某个键值对内的值进行查找或者删除时,先在布隆过滤器中查找对应的键,若对应的键不存在,则对应的键值对不存在于哈希表内,返回查找失败或删除失败指示,以在键值对不存在于哈希表时降低对持久数据层的访问开销,提高对哈希表的负查询性能。2.根据权利要求1所述的方法,其特征在于,还包括如下步骤:当需要对哈希表内某个键值对内的值进行查找或者删除时,先在布隆过滤器中查找对应的键,若对应的键存在,则按照对应的键值对在哈希表中进行查找或者删除。3.根据权利要求1所述的方法,其特征在于,还包括如下步骤:当需要在哈希表内插入某个键值对时,先判断哈希表内是否已经存在所要插入的键值对,若存在,则返回插入失败指示;若哈希表内不存在所要插入的键值对,根据键计算对应的头桶号,并锁定所述头桶号对应的哈希桶内范围;在锁定的哈希桶内范围查找是否存在空闲的键值对槽,若存在,则将键值对插入空闲的槽,且采用合并刷新方式将插入的键值对持久化到非易失内存中,以完成键值对插入;其中,所述合并刷新方式用于减小缓存行刷新次数,降低哈希表的插入延时开销。4.根据权利要求3所述的方法,其特征在于,在锁定的哈希桶内范围查找是否存在空闲的键值对槽,若不存在,则采用头插法,从非易失内存空间中分配一个新的链桶并赋值到临时桶指针,将新链桶的第一个槽位设置为所要插入键值对的位置,插入待插入键值对,并采用合并刷新方式将插入的键值对持久化到非易失内存;之后将所述临时桶指针赋值给头桶指针的下一个桶指针,并使用缓存行刷新指令将头桶的下一个桶指针持久化到非易失内存中。5.根据权利要求1至4任一项所述的方法,其特征在于,还包括如下步骤:根据持久数据层的数据负载量动态设置哈希表的初始头桶长度,当所述数据负载量相对较大时,初始头桶长度相对较长,对应每个头桶的平均桶链长度相对较短,以提升哈希表的正查询性能。6.一种哈希表的处理装置,所述哈希表位于持久数据层,包括多个哈希桶...

【专利技术属性】
技术研发人员:冯丹胡燏翀肖仁智
申请(专利权)人:华中科技大学
类型:发明
国别省市:

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

1