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

一种基于内存面向热点数据的ACEH索引结构及方法技术

技术编号:27454151 阅读:42 留言:0更新日期:2021-02-25 04:48
本发明专利技术公开了一种基于内存面向热点数据的ACEH索引结构及方法,结构包括:目录项、段和数据桶;方法包括:目录项通过全局深度G进行段索引,一个段对应一组数据桶,段通过局部深度L进行数据桶索引,L=G

【技术实现步骤摘要】
一种基于内存面向热点数据的ACEH索引结构及方法


[0001]本专利技术涉及计算机内存存储结构,尤其是涉及一种基于内存面向热点数据的ACEH索引结构及方法。

技术介绍

[0002]互联网公司在实际生产环境中广泛使用键值存储技术来提高数据存储的性能。学者们研究了不同场景下的热点问题,并且在一些场景中提出了有效的解决方案。然而键值存储场景下的热点问题却被忽略了。
[0003]在传统的可扩展哈希结构中,当有键值对(key-value)插入时,首先将key同目录项(Diectory)匹配。例如,key与目录的第一个目录项“00”相匹配,故插入第一个目录项所指向的数据桶(Bucket)中。在进入数据桶时,传统可扩展哈希直接采用顺序遍历的方式,直到找到第一个空的槽点(slot),将键值对插入。查找时,也是根据key的相应位置,找到目录项,在通过目录项的指针定位数据桶,最后使用顺序遍历的方式查找到对应键值对。删除过程与查找一样。当刷新时,传统可扩展哈希只是重新做一次插入操作,这样极大地浪费了空间。
[0004]扩张时,目录项会成倍增加。当目录修改后,每个目录项的指针也会修改,此外,数据桶里的部分键值对也会相应地移动。例如,插入的键值对,当目录数为4时,键值对插入目录项为00的数据桶中,扩张后,键值对会移动到目录项001对应的数据桶中(因为键值对的前三位是001)。

技术实现思路

[0005]为解决现有技术的不足,实现增加内存利用率、加快查找性能的目的,本专利技术采用如下的技术方案:
[0006]一种基于内存面向热点数据的ACEH索引结构,包括:目录项和数据桶,采用了一个中间结构,称为段,目录项与段之间通过使用全局深度G作为段索引,用于解决三层结构中的插入查找问题,一个段包括一组数据桶,段与数据桶之间使用局部深度L作为数据桶索引,L=G-log
2k
,k表示指向该数据桶的指针数,采用L是因为可扩展哈希扩张之后不一定是一个目录项(Directory)对应一个段,由于扩张后目录项的数目多于原有的段数,只有在键值对需要移动到不存在的数据桶时新的段才会创建,所述数据桶索引采用Adjusted-Cuckoo算法定位哈希键插入的数据桶,Adjusted-Cuckoo算法包含两个哈希函数,产生两个可插入的数据桶,然后选择空余的数据桶进行插入,Adjusted-Cuckoo算法确定一个数据桶,第二个数据桶则直接确定为当前数据桶的下一个数据桶,这样设置是对cacheline友好的,相比于传统的cuckoo hash算法能够利用空间局部性,加快查找性能,在内存利用率上也有了显著提升。该结构在NVM上运行有很大的性能提升。
[0007]一种基于内存面向热点数据的ACEH索引方法,目录项通过全局深度G进行段索引,一个段对应一组数据桶,段通过局部深度L进行数据桶索引,L=G-log
2k
,k表示指向该数据
桶的指针数,采用L是因为可扩展哈希扩张之后不一定是一个目录项(Directory)对应一个段,由于扩张后目录项的数目多于原有的段数,只有在键值对需要移动到不存在的数据桶时新的段才会创建,所述数据桶索引采用Adjusted-Cuckoo算法定位哈希键插入的数据桶,Adjusted-Cuckoo算法包含两个哈希函数,产生两个可插入的数据桶,然后选择空余的数据桶进行插入,Adjusted-Cuckoo算法确定一个数据桶,第二个数据桶则直接确定为当前数据桶的下一个数据桶,这样设置是对cacheline友好的,相比于传统的cuckoo hash算法能够利用空间局部性,加快查找性能,在内存利用率上也有了显著提升,在NVM上运行也有很大的性能提升,操作方法包括如下步骤:
[0008]步骤一,插入操作;
[0009]步骤二,刷新操作;
[0010]步骤三,分裂操作;
[0011]步骤四,删除操作。
[0012]进一步的,所述Adjusted-Cuckoo算法选择Multiply-shift函数确定一个数据桶。
[0013]进一步的,所述步骤一的插入操作,通过最高位定位目录项,找到目录项所指向的段,然后根据Adjusted-Cuckoo算法找到两个可插入的数据桶,对两个数据桶内的数据进行顺序遍历,若存在key与插入key相同时,则更新当前key对应的value;若不存在key与插入key相同时,若两个数据桶都有空闲位置,哈希键随机插入,若只有一个数据桶有空,则插入空闲的数据桶,若两个数据桶都没有空余位置,则插入失败,进行分裂操作。
[0014]进一步的,所述步骤二的刷新操作,采用原位刷新,直接在探测过程中将要更新的key与每个slot存放的key进行比较,若相同则进行更新。传统的可扩展哈希是直接插入数据,这样就会有重复键值对,浪费了空间,且很可能出现读数据出错,而原位刷新,去除了重复的键值对,提高了内存利用率。
[0015]进一步的,所述步骤三的分裂操作,创建新段,同时将指向原段的一个多余目录项指针转而指向新段,该目录项指针对应的有效键值对也转移到新段中。原段中的键值对进行删除操作。
[0016]进一步的,所述步骤四的删除操作,采用惰性删除,更新目录项后,搜索已迁移记录的查询将访问新的段,而搜索未迁移记录的查询将访问旧的段,但是由于已拆分的段(即旧的段)包含所有键,因此它们始终会成功找到搜索键值的记录,其中包含一些不必要的重复项,而惰性扩张在扩张过程中,而惰性扩张在扩张过程中,将部分键值对迁移时,不立刻删除已迁移的原有数据桶的键值对,而是当原有数据桶有新的数据插入时,直接替换已经迁移的键值对,这样可以减少哈希表扩张时的开销,从而提高内存的利用率。
[0017]进一步的,所述惰性删除,当删除Bucket0数据桶中的数据x1时,将Bucket1数据桶中的数据x2直接覆盖x1,并将x2位置的数据记为无效,尽量争取插入Bucket0和Bucket1的数据都能在Bucket0中,减少查找次数,减少搜索数据的平均长度,提升数据访问性能。
[0018]本专利技术的优势和有益效果在于:
[0019]采用基于可扩展哈希结构ACEH进行改进的针对热点数据集的哈希索引,不同于一般可扩展哈希索引的是,在二级索引过程中,ACEH使用经过修改过的cuckoo hash算法,这样使得每个数据可插入的位置增加,以此增加内存利用率;ACEH还提供了原位刷新操作,减少重复键值对对内存空间的占用。与此同时,这项操作还可以减少ACEH结构的分裂操作,提
高插入性能。
附图说明
[0020]图1是本专利技术的ACEH索引结构示意图。
[0021]图2是本专利技术中Adjusted-Cuckoo算法过程示意图。
[0022]图3是本专利技术中创建新段示意图。
[0023]图4是本专利技术中目录项扩张示意图。
具体实施方式
[0024]以下结合附图对本专利技术的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于内存面向热点数据的ACEH索引结构,包括:目录项和数据桶,其特征在于采用了一个中间结构,称为段,目录项与段之间通过使用全局深度G作为段索引,一个段包括一组数据桶,段与数据桶之间使用局部深度L作为数据桶索引,L=G-log
2k
,k表示指向该数据桶的指针数,所述数据桶索引采用Adjusted-Cuckoo算法定位哈希键插入的数据桶,Adjusted-Cuckoo算法包含两个哈希函数,产生两个可插入的数据桶,然后选择空余的数据桶进行插入,Adjusted-Cuckoo算法确定一个数据桶,第二个数据桶则直接确定为当前数据桶的下一个数据桶。2.一种基于内存面向热点数据的ACEH索引方法,其特征在于目录项通过全局深度G进行段索引,一个段对应一组数据桶,段通过局部深度L进行数据桶索引,L=G-log
2k
,k表示指向该数据桶的指针数,所述数据桶索引采用Adjusted-Cuckoo算法定位哈希键插入的数据桶,Adjusted-Cuckoo算法包含两个哈希函数,产生两个可插入的数据桶,然后选择空余的数据桶进行插入,Adjusted-Cuckoo算法确定一个数据桶,第二个数据桶则直接确定为当前数据桶的下一个数据桶,操作方法包括如下步骤:步骤一,插入操作;步骤二,刷新操作;步骤三,分裂操作;步骤四,删除操作。3.如权利要求2所述的一种基于内存面向热点数据的ACEH索引方法,其特征在于所述Adjusted-Cuckoo算法通过Multiply-shift函数确定一个数...

【专利技术属性】
技术研发人员:何水兵朱彤曾令仿段雪豪银燕龙
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1