[发明专利]一种布隆过滤器的生成方法在审
申请号: | 201811018910.7 | 申请日: | 2018-09-03 |
公开(公告)号: | CN109408505A | 公开(公告)日: | 2019-03-01 |
发明(设计)人: | 周先东;齐高华;卢志炜;孟彦;朱静轩 | 申请(专利权)人: | 中新网络信息安全股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 上海精晟知识产权代理有限公司 31253 | 代理人: | 冯子玲 |
地址: | 230088 安徽省合肥*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 布隆过滤器 散列函数 位向量 集合 子集合 分组 重建 删除 数据元素集合 算法技术 元素查询 传统的 匹配 | ||
本发明涉及元素查询匹配的算法技术领域,具体涉及一种布隆过滤器的生成方法,包括确定一个散列函数作为分组散列函数、根据所述分组散列函数,将所述布隆过滤器表示的数据元素集合分为M个子集合、确定每一个子集合对应的位向量长度Li和散列函数个数Ni。本发明生成的布隆过滤器,当布隆过滤器表示的集合中需要增加或删除一个元素时,只需要根据分组散列函数确定该元素的对应的子集合,重建该子集合的位向量,能够避免传统的布隆过滤器在增加或删除元素时,需要重建整个布隆过滤器的位向量,节省重建开销。
技术领域
本发明涉及元素查询匹配的算法技术领域,具体涉及一种布隆过滤器的生成方法。
背景技术
在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合中。比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中);在FBI,一个嫌疑人的名字是否已经在嫌疑名单上;在网络爬虫里,一个网址是否被访问过等等。最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新元素时,将它和集合中的元素直接比较即可。一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它的好处是快速准确,缺点是费存储空间。当集合比较小时,这个问题不显著,但是当集合巨大时,哈希表存储效率低的问题就显现出来了,我们需要寻求更好的解决方法。
布隆过滤器(BloomFilter)是1970年由布隆提出的一种空间空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并判断一个元素是否属于这个集合。使用布隆过滤器,存在第一类出错(Falsepositive),但是不会存在第二类错误(Falsenegative),因此,布隆过滤器拥有100%的召回率。也就是说,布隆过滤器能够准确判断一个元素不在集合内,但只能判断一个元素可能在集合内。因此,BloomFilter不适合“零错误”的应用场合。在能够容忍低错误的应用场合下,BloomFilter通过极少的错误换取了存储空间的极大节省。我们可以向布隆过滤器里添加元素,但是不能从中移除元素(普通布隆过滤器,增强的布隆过滤器是可以移除元素的)。随着布隆过滤器中元素的增加,犯第一类错误的可能性也随之增大。
一个空的布隆过滤器有长度为M比特的bit数组构成,且所有位都初始化0。一个元素通过K个不同的hash函数随机散列到bit数组的K个位置上,K必须远小于M。K和M的大小由错误率(falsepositiverate)决定。Bloom Filter 的一个例子集合S{x,y,z}。带有颜色的箭头表示元素经过k(k=3)hash 函数的到在M(bit数组)中的位置。元素W不在S集合中,因为元素W经过k 个hash函数得到在M(bit数组)的k个位置中存在值为0的位置。
向集合S中添加元素x:x经过k个散列函数后,在M中得到k个位置,然后,将这k个位置的值设置为1。
判断x元素是否在集合S中:x经过k个散列函数后,的到k个位置的值,如果这k个值中间存在为0的,说明元素x不在集合中——元素x曾经插入到过集合S,则M中的k个位置会全部置为1;如果M中的k个位置全为1,则有两种情形。情形一:这个元素在这个集合中;情形二:曾经有元素插入的时候将这k个位置的值置为1了。
在假通过率可接受的前提下,布隆过滤器很好的解决了存储的空间问题,但传统的布隆过滤器还存在一些不足之处,当布隆过滤器表示的数据元素集合中元素动态增加和删除时,传统的布隆过滤器可能无法较好的适应,如当需要删除集合中某个元素时,即布隆过滤器表示的集合中的某个元素需要动态删除时,必须要重建整个布隆过滤器的位向量;当集合中增加元素时,布隆过滤器的假通过率会不断攀升,并最终导致假通过率超出可接受的范围,如果要使假通过率在可接受的范围内,则当集合中元素增加时,也需要重建整个布隆过滤器的位向量。当集合中的元素较少时,重建整个布隆过滤器的问题可能并不显著,但当集合元素很庞大的时候,重建布隆过滤器所带来的时间开销是不容忽视的。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中新网络信息安全股份有限公司,未经中新网络信息安全股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811018910.7/2.html,转载请声明来源钻瓜专利网。