[发明专利]基于布谷哈希和布隆过滤器的Hash建表方法有效

专利信息
申请号: 201810422766.7 申请日: 2018-05-05
公开(公告)号: CN108647289B 公开(公告)日: 2022-01-21
发明(设计)人: 于洪;魏帅;黄雅静;杨镇西;沈剑良;宋克;吕平;刘勤让;张帆;陈博 申请(专利权)人: 中国人民解放军战略支援部队信息工程大学;天津市滨海新区信息技术创新中心
主分类号: G06F16/22 分类号: G06F16/22
代理公司: 郑州大通专利商标代理有限公司 41111 代理人: 陈勇
地址: 450000 河*** 国省代码: 河南;41
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 布谷 过滤器 hash 方法
【权利要求书】:

1.基于布谷哈希和布隆过滤器的Hash建表方法,其特征在于,所述方法将硬件存储空间划分为m个组,每组包含一个存储表和n个过滤表,即共有m个存储表,对应为ST(1)、ST(2)…存储表ST(m);共有m*n个过滤表,对应为FT(11)、FT(12)…FT(1n),FT(21)、FT(22)…FT(2n),…,FT(m1)、FT(m2)…FT(mn);所述存储表的长度为2k,宽度为k比特;所述过滤表的长度为2k,宽度为1比特;每个过滤表对应一个Hash函数,共有m*n个不同的Hash函数,分别为hash(11)、hash(12)…hash(1n),hash(21)、hash(22)…hash(2n),…,hash(m1)、hash(m2)…hash(mn);所述Hash函数用于把输入的数据转换为k比特的定长数据,不同的Hash函数输出数据的长度相同、数值不同;另外选取m*n个不同的Hash函数备用;定义一个max_insert值,如果对某次输入数据的操作次数超过所述max_insert值,则表示填表失败;包括以下步骤:

步骤1:初始化所有表项为0;

步骤2:对于每一个输入Hash_Input,使用第一组Hash函数计算其在存储表1中的插入位置ST(1)[addr(1i)],i∈[1,n],插入存储表1中,如果没有踢出数据,就对下一个输入执行步骤2,如果踢出了数据,执行步骤3;

所述步骤2包括:

步骤2.1:对Hash_Input采用hash(11) 进行计算,获得hash(11)对应位置地址addr(11),读取FT(11)对应位置地址FT(11)[addr(11)],判断FT(11)[addr(11)]是否为0,如果为0,则将FT(11)[addr(11)]置1,将Hash_Input填入ST(1)[addr(11)]中,填充完成,处理新的输入,否则执行步骤2.2;

步骤2.2:对Hash_Input采用hash(12) 进行计算,获得hash(12)对应位置地址addr(12),读取FT(11)及FT(12)对应位置地址FT(11)[addr(12)]及FT(12)[addr(12)],判断FT(11)[addr(12)]及FT(12)[addr(12)]是否为0,如果都为0,则将FT(12)[addr(12)]置1,将Hash_Input填入ST(1)[addr(12)]中,填充完成,处理新的输入,否则执行步骤2.3;

步骤2.3:依次类推,填充完成,处理新的输入,否则执行步骤2.4;

步骤2.4:对Hash_Input采用hash(1n) 进行计算,获得hash(1n)对应位置地址addr(1n),读取FT(11)至FT(1n)对应位置,判断FT(11)[addr(1n)]、FT(12)[addr(1n)]至FT(1n)[addr(1n)]是否为0,如果都为0,则将FT(1n)[addr(1n)]置1,将Hash_Input填入ST(1)[addr(1n)]中,填充完成,处理新的输入,否则,依然将Hash_Input填入ST(1)[addr(1n)]中,执行步骤3;

步骤3:将踢出数据变为新的Hash_Input,使用第二组Hash函数计算出其在存储表2中的插入位置ST(2)[addr(2i)],i∈[1,n],插入存储表2中,如果没有踢出数据,就对下一个输入执行步骤2,如果踢出了数据,执行步骤4;

所述步骤3包括:

步骤3.1:将原存于ST(1)[addr(1n)]中的数据作为新的Hash_Input,对Hash_Input采用hash(21) 进行计算,获得地址addr(21),读取FT(21)对应位置,判断FT(21)[addr(21)]是否为0,如果为0,则将FT(21)[addr(21)]置1,将Hash_Input填入ST(2)[addr(21)]中,填充完成,处理新的输入,否则执行步骤3.2;

步骤3.2:对Hash_Input采用hash(22) 进行计算,获得hash(22)对应位置地址addr(22),读取FT(21)及FT(22)对应位置,判断FT(21)[addr(22)]以及FT(22)[addr(22)]是否为0,如果都为0,则将FT(22)[addr(22)]置1,将Hash_Input填入ST(2)[addr(22)]中,填充完成,处理新的输入,否则执行步骤3.3;

步骤3.3:依次类推,填充完成,处理新的输入,否则执行步骤3.4;

步骤3.4:对Hash_Input采用hash(2n) 进行计算,获得hash(2n)对应位置地址addr(2n),读取FT(21)至FT(2n)对应位置,判断FT(21)[addr(2n)]、FT(22)[addr(2n)]至FT(2n)[addr(2n)]是否为0,如果都为0,则将FT(2n)[addr(2n)]置1,将Hash_Input填入ST(2)[addr(2n)]中,填充完成,处理新的输入,否则,依然将Hash_Input填入ST(2)[addr(2n)]中,执行步骤4;

步骤4:将原存于ST(2)[addr(2n)]中的数据变为新的Hash_Input,并依此法继续处理,若至ST(m)依然没有填充成功,将Hash_Input填入ST(m)[addr(mn)]中,将原存于ST(m)[addr(mn)]中的数据作为新的Hash_Input,执行步骤2;

步骤5:如果步骤2-步骤4重复的次数超过max_insert,则表示无法填充表项,使用备用的Hash函数替换现有Hash函数,执行步骤1;如果已经替换过Hash函数,则建表失败。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学;天津市滨海新区信息技术创新中心,未经中国人民解放军战略支援部队信息工程大学;天津市滨海新区信息技术创新中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810422766.7/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top