[发明专利]动态存储键值对的布鲁姆过滤器树结构及键值对存储方法有效
申请号: | 201710542207.5 | 申请日: | 2017-07-05 |
公开(公告)号: | CN107330094B | 公开(公告)日: | 2020-06-16 |
发明(设计)人: | 潘海娜;凌纯清;谢鲲 | 申请(专利权)人: | 湖南大学 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/245 |
代理公司: | 长沙正奇专利事务所有限责任公司 43113 | 代理人: | 马强;王娟 |
地址: | 410082 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 存储 键值 布鲁姆 过滤器 结构 方法 | ||
1.一种布鲁姆过滤器树结构进行键值对存储的方法,布鲁姆过滤器树结构,包括完全d叉树,每一棵完全d叉树的每一个节点都是一个布鲁姆过滤器;每一棵完全d叉树的每个叶子节点表示一个值value;每一个节点的存储单元大小是该节点的父节点的存储单元大小的一半,根节点包括d×k个不相同的哈希函数,即根节点包括d个哈希组,每组中包含k个哈希函数;其特征在于,包括:
插入操作:当需要插入一个键值对(key,value)时,首先查看value是否已经插入到布鲁姆过滤器中,如果未插入,则需要进行后续的增加新value操作;如果value已经存在于布鲁姆过滤器树中,则直接进行键值对插入,根据value查找该value对应的叶节点,得到此叶节点位置编码,确定一条从根节点到此叶节点的唯一路径,计算根节点的两组哈希函数,即对key使用k个哈希函数hi,1,hi,2,...,hi,k,计算hi,1key,hi,2key,...,hi,kkey,其中i表示选取哈希函数的组号,i=1或2;将i=1计算的哈希值保存在数组A中,将i=2计算的哈希值保存在数组B中;接着,根据叶节点的第一位编码,在根节点选取A、B数组中的一组值进行插入,即对A或B数组进行右移零位操作,然后根据叶节点的第一位编码,得到下一个需要进行插入操作的布鲁姆过滤器,再根据叶节点的第二位编码,选取A、B数组中的一组值进行右移一位操作,得到插入位置,进行插入;继续进行上述操作,对每一层布鲁姆过滤器插入key,直到插到value对应的叶节点为止;
查询操作:需要查询一个键值key对应的value时,首先,计算根节点的两组哈希函数hi,1key,hi,2key,...,hi,kkey,i=1或2,将它们的值分别保存在A、B两组数组中;在根节点分别对A、B两数组值对应的位置单元进行查询操作,查到第一位编码值;根据得到的编码值,转到下一个节点继续查询,此时,对A、B两数组进行右移操作,在对应的位置单元进行查询,得到一个编码值;继续进行上述操作,直到查找到叶节点为止,最后得到一个完整的编码值,根据这个叶节点编码进行解码操作得到对应的value;
增加新value操作:要添加一个新的value到布鲁姆过滤器中,分以下两种情况:如果原来的布鲁姆过滤器是一棵未满二叉树,当需要添加新的value时,直接在布鲁姆过滤器的末尾添加新的叶节点,这个叶节点表示新添加的value;如果原来的布鲁姆过滤器是一棵满二叉树,则在根节点的上方添加一个新布鲁姆过滤器,这个新添加的布鲁姆过滤器的大小是原布鲁姆过滤器树的根节点的2倍,此时,这个新的布鲁姆过滤器就变成了新的布鲁姆过滤器树的根节点,原来的布鲁姆过滤器就变成了这个新根节点的左子树,再创建一棵比原布鲁姆过滤器树高少一层的满二叉树作为新的根节点的右子树,把原根节点上置1的位置全部左移一位,插入到新的根节点中,此时新的根节点的两组H3哈希函数比原来的两组H3哈希函数多一层,即在基函数中多选取一行,继续在布鲁姆过滤器的末尾添加新的叶节点。
2.根据权利要求1所述的方法,其特征在于,所述插入操作中,在根节点选取待插入的数组的方法为:如果编码值为0,则选取A数组,如果编码值为1,则选取B数组。
3.根据权利要求1所述的方法,其特征在于,所述插入操作中,根据叶节点的第一位编码,得到下一个需要进行插入操作的布鲁姆过滤器的方法为:如果编码值为0,则操作左节点,如果编码值为1,则操作右节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南大学,未经湖南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710542207.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于文件系统的数据回收方法及系统
- 下一篇:一种访问管理方法及装置