[发明专利]一种基于非易失性内存的写优化可扩展哈希索引结构以及插入、刷新和删除方法在审
申请号: | 202110522374.X | 申请日: | 2021-05-13 |
公开(公告)号: | CN113342706A | 公开(公告)日: | 2021-09-03 |
发明(设计)人: | 朱彤 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 罗飞 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 非易失性 内存 优化 扩展 索引 结构 以及 插入 刷新 删除 方法 | ||
1.一种基于非易失性内存的写优化可扩展哈希索引结构,其特征在于,包括:指针数组、段以及数据桶,其中,指针数组包括多个目录项,每一个目录项包括哈希前缀以及指向对应段的指针,哈希前缀用于与预设哈希函数计算的key值前缀进行匹配,匹配成功时哈希前缀对应的指针所指向的段为待插入的段;
一个段包含多个数据桶,每个数据桶具有一个序号用于匹配经过预设哈希函数计算后的哈希值的后缀,预设哈希函数为虚拟近邻插入算法的哈希函数;
一个数据桶包含若干个槽,槽用于存储数据,数据为键值对。
2.如权利要求1所述的哈希索引结构,其特征在于,段与指向段的指针之间的数量关系采用全局深度和局部深度表示,其中,全局深度表示目录项的位数,用于确定段的数量,局部深度用于确定段对应的目录项中所存储的哈希前缀的长度。
3.一种基于权利要求2所述的哈希索引结构的插入方法,其特征在于,包括:
通过预设哈希函数对待插入数据计算出第一哈希值;
将第一哈希值的前缀与指针数组中目录项存储的哈希前缀进行匹配,定位待插入的段;
根据第一哈希值的最后一个字节确定待插入的段中的数据桶,其中,将与第一哈希值的最后一个字节匹配的数据桶作为目标数据桶,将目标数据桶的后续相邻数据桶作为虚拟数据桶;
对目标数据桶进行顺序遍历,若目标数据桶中存在key与插入key相同的槽时,则更新槽中当前key对应的值;若目标数据桶中不存在key与插入key相同的槽时,判断目标数据桶是否存在空闲槽,如果存在空闲槽,则将待插入数据插入目标数据桶中的空闲槽,如果不存在空闲槽,则遍历虚拟数据桶查找对应的空闲槽。
4.如权利要3所述的插入方法,其特征在于,所述方法还包括:当目标数据桶和虚拟数据桶都没有空闲槽时,则进行分裂操作,分裂操作包括:
比较发生冲突的段的局部深度与全局深度的大小,当局部深度小于全局深度时,则创建新段,并将指向原段的一个多余目录项的指针指向新段,多余目录项中指针所指向的键值对转移到创建的新段中,对原段中的键值对进行删除操作;当局部深度等于全局深度时,则将目录项进行扩张,并将扩张后的目录项中指针指向新的段。
5.如权利要求1所述的所述的哈希索引结构的刷新方法,其特征在于,包括:采用原位刷新,在探测过程中将要更新的key值与每个槽中存放的key值进行比较,如果相同则对槽中的键值对进行更新。
6.如权利要求1所述的所述的哈希索引结构的删除方法,其特征在于,包括:
当需要删除目标数据桶中的数据x1时,判断目标数据桶的虚拟数据桶中是否存在原本需要存放在目标数据桶中的数据x2,若果是,则直接将虚拟数据桶中的数据x2直接替换需要删除的数据x1,否则,直接将目标数据桶中的数据x1记为无效。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110522374.X/1.html,转载请声明来源钻瓜专利网。