[发明专利]一种结构紧凑的键值对存储结构及快速键值对查找方法有效
| 申请号: | 201711287661.7 | 申请日: | 2017-12-07 |
| 公开(公告)号: | CN108021678B | 公开(公告)日: | 2022-05-17 |
| 发明(设计)人: | 嵩天;魏煜 | 申请(专利权)人: | 北京理工大学 |
| 主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/242;G06F16/2455 |
| 代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 鲍文娟 |
| 地址: | 100081 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 结构 紧凑 键值 存储 快速 查找 方法 | ||
1.一种快速键值对查找方法,包括基于分层哈希表和布鲁姆过滤器相结合的存储结构,通过首层使用2-left hashing 哈希结构存储,每层哈希表都作为辅助表保存在上层表中发生存储冲突的数据,每层哈希表结合布鲁姆过滤器进行冲突数据的保存,将“布鲁姆过滤器判断所查找的键是否存在当前集合中的结果”作为索引提高查找速度,从而提高存储空间利用率使结构紧凑并实现快速查找的软件平台要求,其特征在于:存储结构包括λ层哈希表,从第二层哈希表开始,每层哈希表中包含的总存储块数量呈等比序列递减,其中,等比因子为10;
其中,首层哈希表存在左右两个子表,每个子表中包含相同个数的存储块;对于其余层哈希表,不存在子表的概念;
每个存储块中第一个存储单元保存该存储块中已被占用的存储单元个数,其余存储单元中存储的是键值对;
其中,键值对包括键和值;具体存储时存储的是键的“值”和键的“校验值”;其中,存储的“值”部分可以存储该值本身或者指向值本身存储位置的指针,后文统称为值;键的“校验值”的计算可使用常用的校验算法,所述校验算法包括crc循环冗余校验或md5校验算法;
除最后一层哈希表外,每层哈希表对应一个布鲁姆过滤器,从第一层布鲁姆过滤器开始,每层布鲁姆过滤器的所占空间大小呈等比序列递减,其中,等比因子为10;
键值对数据存储过程和键值对查找过程包括:
第一部分键值对数据存储过程,即键值对插入过程,简称插入过程,具体步骤如下:
步骤1,设置哈希表层数以及每一层哈希表包含存储块的个数,同时设置每一层哈希表对应的布鲁姆过滤器的大小;
步骤2,设置哈希表每个存储块中包含的存储单元的个数N,设置每个存储单元的大小为M比特;
步骤3, 向第一层哈希表中插入数据,所述第一层哈希表使用2-left hashing哈希表,若不冲突,则该键值对插入成功,跳至步骤5;若冲突,则将数据标记在第一层对应的bloomfilter中,并执行步骤4;
步骤4,判断当前层是否为最后一层,并根据判断结果,若为最后一层,则跳入步骤7,若当前层不是哈希表结构中的最后一层,应向当前层对应的布鲁姆过滤器集合中添加当前键,跳至步骤5;
步骤5 跳入下一层哈希表中,进行一次哈希运算,使用此哈希运算的结果确定一个存储块位置,通过判断该存储块和当前键是否存在冲突来进行如下操作:当出现插入数据冲突时,需要跳至步骤4;当插入数据不冲突时,将插入数据,即将该键的值和该键的校验值保存到该存储块的第一个空闲的存储单元中,进入步骤6;
步骤6,数据插入成功,即键值对插入函数调用成功,函数返回1,结束插入过程;
步骤7,数据插入失败,即键值对插入函数调用失败,函数返回0,结束插入过程;
至此,从步骤1到步骤6或步骤7,完成了插入过程;
第二部分键值对查找过程,即对于给出键值对中的键,查找对应键值对中的值的过程,简称查找过程,具体步骤如下:
步骤8,在第一层布鲁姆过滤器集合中对给出键值对中的键进行查找,通过判断该键是否在该集合中保存,决定跳至步骤10还是步骤9,具体为:
8.1 若该键不存在第一层布鲁姆过滤器集合中,执行步骤9;
8.2 若该键存在于第一层布鲁姆过滤器集合中,执行步骤10;
步骤9,在2-left hashing中进行两次哈希计算,其结果在左右子表中分别确定一个存储块;将两个存储块中每个非空单元内的校验值和“根据当前键计算出的校验值”比较,查看是否存在相等的情况,决定跳至步骤13还是步骤14,具体为:
9.1 若存在相等的情况,则表示该单元保存的值即为所查找的键对应的值,跳至步骤13;
9.2 若不存在相等的情况,则键对应的值不存在于本存储结构中,跳至步骤14;
步骤10,进入下一层布鲁姆过滤器,在下一层布鲁姆过滤器集合中对给出的键进行查找,通过判断该键是否在该布鲁姆过滤器集合中来进行如下操作:
10.1 若该键存在于该布鲁姆过滤器集合中,通过判断当前布鲁姆过滤器所在层是否为最后一层,决定跳至步骤11还是步骤10,具体为:
10.1A 若当前布鲁姆过滤器所在层不是最后一层,跳至步骤10;
10.1B 若当前布鲁姆过滤器所在层是最后一层,跳至步骤11;
10.2 若该键不存在于该层布鲁姆过滤器集合中,进入当前布鲁姆过滤器对应层的哈希表,跳至步骤12;
步骤11,进入最后一层哈希表;
步骤12,在当前层哈希表中查找键对应的校验值,对键进行一次哈希运算,通过哈希运算的结果在哈希表中确定一个存储块,在存储块中遍历每个非空单元的校验值并比较是否与当前键的校验值相等,根据是否存在相等的情况,判断跳至步骤13还是步骤14,具体为:
12.1 若存在相等的情况,即找到了相等的校验值,则进入步骤13;
12.2 若不存在相等的情况,即没找到相等的校验值,则进入步骤14;
步骤13,查找函数调用成功,函数返回当前存储单元中保存的值,结束查找;
步骤14,查找函数调用失败,函数返回0,结束查找;
至此,从步骤8到步骤13或步骤14,完成了一种快速键值对查找方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711287661.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种复合式阻火器
- 下一篇:一种评估准确的自来水网脆弱性评估系统





