CN101901248A - 一种布隆过滤器的生成、更新以及查询元素方法和装置 - Google Patents
一种布隆过滤器的生成、更新以及查询元素方法和装置 Download PDFInfo
- Publication number
- CN101901248A CN101901248A CN 201010142165 CN201010142165A CN101901248A CN 101901248 A CN101901248 A CN 101901248A CN 201010142165 CN201010142165 CN 201010142165 CN 201010142165 A CN201010142165 A CN 201010142165A CN 101901248 A CN101901248 A CN 101901248A
- Authority
- CN
- China
- Prior art keywords
- subclass
- hash function
- bit vector
- correspondence
- bloom filter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 239000013598 vector Substances 0.000 claims abstract description 212
- 238000012217 deletion Methods 0.000 claims description 23
- 230000037430 deletion Effects 0.000 claims description 23
- 230000006870 function Effects 0.000 abstract description 203
- 101150060512 SPATA6 gene Proteins 0.000 description 222
- 238000012360 testing method Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 239000012467 final product Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 235000009776 Rathbunia alamosensis Nutrition 0.000 description 1
- 244000097202 Rathbunia alamosensis Species 0.000 description 1
- 235000004240 Triticum spelta Nutrition 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及元素查询匹配的算法领域,特别是公开了一种布隆过滤器的生成、更新以及查询元素的方法和装置。本发明提供的布隆过滤器的生成方法包括:根据分组散列函数将布隆过滤器表示的集合中的所有元素分为M个子集合,并分别对每一个子集合,确定子集合的位向量长度Li以及Ni个子集合散列函数,根据Ni个子集合散列函数,将子集合中的每一个元素确定Ni个散列值,将位向量中散列值对应的位向量的位置设置标识,生成该子集合的位向量,并生成包含分组散列函数、M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器,采用本发明的方法,在增加或删除元素时,只需重建子集合的位向量,减少了重建整个布隆过滤器位向量的时间开销。
Description
技术领域
本发明涉及元素查询匹配的算法领域,特别是涉及一种布隆过滤器的生成、更新以及查询元素的方法和装置。
背景技术
在设计计算机软件时,经常要判断一个元素是否在一个集合中。比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中);又比如在URL(Universal Resource Locator,统一资源定位符)过滤软件中,判断一个URL是否在过滤名单中等等。最直接的方法就是将集合中的全部元素存储在计算机中,遇到一个新元素时,将它和集合中的元素进行直接比较即可。为了提高查找的速度,通常使用散列表(也叫哈希表,HashTable)来存储集合。散列表,是一种根据元素的关键码值来快速映射其存储位置的数据结构,这个映射函数也就是通常我们所说的散列函数。散列表的结构如图1所示,集合中的元素首先经过散列函数得到其散列位置,然后将元素记录到该位置的散列链表中,由于不同元素经过散列函数可能得到同样的散列值,因此同一个散列位置上可能有多个元素,也即通常所说的散列冲突,一般是将冲突的元素以链表的方式进行组织。图1中,假设散列函数为HASH,并且A1、A2,...A8是集合中的元素,那么从图中可看出HASH(A1)=HASH(A2)=H1,HASH(A3)=HASH(A4)=H2,HASH(A5)=HASH(A6)=H3,HASH(A7)=HASH(A8)=H4。
散列表的好处是能够快速准确的判断元素是否在集合中,缺点就是需要较大的存储空间。当集合比较小时,这个问题不显著,但是当集合元素很庞大时,散列表存储空间的问题就显现出来了。比如说,一个电子邮件提供商(如网易、新浪等),总是需要过滤来自发送垃圾邮件的人的垃圾邮件,最直接的办法就是记录下那些发垃圾邮件的Email地址,通常为了提高判断的速度,我们还需要将这些Email地址通过散列表的方式保存在内存中(因为内存访问的速度要远远快于硬盘访问速度),但是那些垃圾邮件发送者总是在不停地注册新的Email地址,全世界少说也有几十亿个发垃圾邮件的Email地址,按照每个Email地址平均长度20个字节(20字节是按照通常的平均长度来算的,是个经验值)来算,一亿个Email地址也需要消耗2G的内存空间,几十亿就需要几十甚至上百G的内存空间。很显然,一般的服务器是不可能有这么大的内存空间的。
布隆过滤器由巴顿布隆于一九七零年提出,其原理如下:一个布隆过滤器由k个相互独立的散列函数h1,h2,......,hk和一个长度为m的位向量组成,其中,每个散列函数的值域均为{0,1,......,m-1},又因为一个字节有8个比特位,因此位向量实际占的内存空间为m/8个字节,位向量的所有的位均初始化为0。集合S={s1,s2,......,sn},用k个散列函数对集合S中的每一个元素计算一个散列序列(h1(s),h2(s),......,hk(s)),然后将位向量中对应的散列序列位设为1,则称该布隆过滤器装入了数据元素集合S,或者说该布隆过滤器表示了数据元素集合S。例如若h1(s1)=5,则将位向量的第6位设为1,h2(s1)=10,则将位向量的第11位设为1,直到hk(s1)=n-1,将位向量的第n位设为1,则称布隆过滤器中装入了数据元素s1,当集合S中的每一个数据元素均装入布隆过滤器中,则称布隆过滤器表示了数据元素集合S。当查询某个数据元素是否在集合S中时,用同样的k个散列函数对数据元素计算一个散列序列,如果散列序列所对应的位向量上的每一位均为1,则认为该数据元素属于S,否则不属于S。与完全存储数据相比,采用布隆过滤器,能够节省存储空间,使用布隆过滤器绝不会漏掉任何一个属于集合中的元素,但是布隆过滤器在进行元素查询时,可能存在假通过的现象,也就是将不属于集合中的元素误认为属于集合中,但只要这种假通过的概率是我们可以接受的,就可以使用布隆过滤器来查找元素。
一个使用了k个散列函数的m位长的布隆过滤器中装入n个元素后,位向量中某一位仍为0的概率为:(1-1/m)kn(1)
则假通过率p为:p=[1-(1-1/m)kn]k(2)
(1)式和(2)式中,集合元素的个数n一般是事先知道的,则设定一个可以接受的假通过率,就可以确定出位向量长度m以及散列函数个数k;根据公式(2)可以确定出不同组的m及k,可根据实际情况进行选择,m越大,需要的存储空间越大,k越大,查询时需要的时间越多,因此可根据存储空间以及查询时间两方面来选择合适的位向量长度m以及散列函数个数k。
下面结合垃圾Email地址的例子,对布隆过滤器做一个简单的描述。
假定垃圾Email地址的数量有一亿个,先建立一个长度为十六亿比特的位向量,即两亿字节的向量,然后将这十六亿个二进制位全部初始化为零。对于每一个已知的垃圾Email地址,用八个不同的散列函数(F1,F2,......,F8)产生八个散列值(f1,f2,......,f8),将这八个散列值对应的位向量的位置全部置1。将这一亿个垃圾Email地址都进行这样的处理后,一个针对这些垃圾Email地址的布隆过滤器就生成了。如图2所示,为某一个垃圾Email地址采用布隆过滤器表示的示例图,对于垃圾邮件XXX@163.com,采用八个不同的散列函数(F1,F2,......,F8)产生八个散列值(f1,f2,......,f8),将这八个散列值对应的位向量的位置全部置1,则称布隆过滤器中装入了该垃圾邮件地址。
当要判断一个Email地址Y是否是垃圾Email地址时,用相同的八个散列函数(F1,F2,......,F8)对这个地址产生八个散列值(t1,t2,......,t8),如果t1,t2,...,t8所对应的位向量的位置均为1,则Y是垃圾Email地址。
使用布隆过滤器来过滤垃圾Email地址绝不会漏掉任何一个在黑名单中的可疑地址。但是它有可能将一个不在黑名单中的Email地址判定为在黑名单中。但是,只要假通过率是可以接受的,就可以使用布隆过滤器来查询元素。
在假通过率可接受的前提下,布隆过滤器很好的解决了存储的空间问题,但传统的布隆过滤器还存在一些不足之处,当布隆过滤器表示的数据元素集合中元素动态增加和删除时,传统的布隆过滤器可能无法较好的适应,如当需要删除集合中某个元素时,即布隆过滤器表示的集合中的某个元素需要动态删除时,必须要重建整个布隆过滤器的位向量;当集合中增加元素时,布隆过滤器的假通过率会不断攀升,并最终导致假通过率超出可接受的范围,如果要使假通过率在可接受的范围内,则当集合中元素增加时,也需要重建整个布隆过滤器的位向量。当集合中的元素较少时,重建整个布隆过滤器的问题可能并不显著,但当集合元素很庞大的时候,重建布隆过滤器所带来的时间开销是不容忽视的。
发明内容
本发明提供一种布隆过滤器的生成、更新以及元素查询方法和装置,能够避免传统的布隆过滤器在增加或删除元素时,需要重建整个布隆过滤器的位向量,带来的重建开销问题。
本发明实施例提供的一种布隆过滤器的生成方法,包括:
确定一个散列函数作为分组散列函数;
根据所述分组散列函数,将所述布隆过滤器表示的数据元素集合分为M个子集合;
确定每一个子集合对应的位向量长度Li和散列函数个数Ni;
对M个子集合中的每一个子集合执行:根据子集合对应的散列函数个数Ni,选择Ni个散列函数作为子集合的散列函数,以及将子集合中的每一个元素分别根据该子集合的Ni个散列函数确定Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,生成该子集合的位向量;
生成包含所述分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。
其中,所述根据分组散列函数,将布隆过滤器表示的数据元素集合分为M个子集合具体为:
根据所述分组散列函数确定所述布隆过滤器表示的数据元素集合中每一个元素的分组散列值;
根据每一个元素的分组散列值将数据元素集合中的元素分为M个子集合。
其中,所述根据每一个元素的分组散列值将数据元素集合中的元素分为M个子集合具体为:
根据每一个元素的分组散列值对M取余数,将余数相同的元素划分为一个子集合,将数据元素集合中的元素分为M个子集合。
其中,所述确定每一个子集合对应的位向量长度Li和散列函数个数Ni具体为:
分别根据使用所述布隆过滤器过滤元素时设定的最高假通过率,以及每一个子集合中的元素个数,确定每一个子集合对应的位向量长度Li和散列函数个数Ni。
其中,所述确定每一个子集合对应的位向量长度Li和散列函数个数Ni具体为:
分别根据使用所述布隆过滤器过滤元素时设定的最高假通过率,以及每一个子集合中的元素个数和每一个子集合设定的元素的预留增加个数,确定每一个子集合对应的位向量长度Li和散列函数个数Ni。
其中,对各个子集合,子集合散列函数的个数Ni相同。
本发明实施例提供的一种对生成的布隆过滤器更新的方法,包括:
当布隆过滤器表示的数据元素集合中删除或增加一个元素时,根据分组散列函数确定所述元素对应的子集合;
在该子集合中增加或删除所述元素,并将该子集合对应的位向量、子集合散列函数删除;
重新确定所述子集合对应的位向量长度Li′以及子集合散列函数个数Ni′;
根据所述子集合的散列函数个数Ni′,选择Ni′个散列函数作为子集合的散列函数;
对所述子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni ′个散列值对应的位向量的位置设置标识,生成该子集合的位向量。
其中,所述根据分组散列函数确定所述元素对应的子集合具体为:
根据分组散列函数确定所述元素的分组散列值,并根据分组散列值确定所述元素对应的子集合。
其中,所述方法还包括:
当在该子集合中增加所述元素时,确定所述子集合设定了预留增加元素以及预留增加元素的个数有剩余时,根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,更新该子集合的位向量。
其中,所述方法还包括:
当确定所述子集合的预留增加元素的个数没有剩余时,将该子集合对应的位向量、子集合散列函数删除;
返回重新确定所述子集合对应的位向量长度Li′以及子集合散列函数个数Ni′的步骤。
本发明实施例提供的一种利用上述生成的布隆过滤器查询元素的方法,包括:
根据分组散列函数确定需要查询的元素对应的子集合;
根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值;
当子集合对应的位向量的Ni个散列值对应的位置都设置标识时,确定所述元素属于布隆过滤器表示的数据元素集合。
其中,所述根据分组散列函数确定需要查询的元素对应的子集合具体为:
根据分组散列函数确定所述元素的分组散列值,并根据分组散列值确定所述元素对应的子集合。
本发明实施例提供的一种布隆过滤器的生成装置,包括:
分组单元,用于确定一个散列函数作为分组散列函数,并根据所述分组散列函数,将所述布隆过滤器表示的数据元素集合分为M个子集合;
确定单元,用于确定每一个子集合对应的位向量长度Li和散列函数个数Ni;
执行单元,用于对M个子集合中的每一个子集合执行:根据子集合对应的散列函数个数Ni,选择Ni个散列函数作为子集合的散列函数,以及将子集合中的每一个元素分别根据该子集合的Ni个散列函数确定Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,生成该子集合的位向量,并生成包含所述分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。
本发明实施例提供的一种对上述生成的布隆过滤器更新的装置,包括:
删除单元,用于当布隆过滤器表示的数据元素集合中删除或增加一个元素时,根据分组散列函数确定所述元素对应的子集合,在该子集合中增加或删除所述元素,并将该子集合对应的位向量、子集合散列函数删除;
确定单元,用于重新确定所述子集合对应的位向量长度Li′以及子集合散列函数个数Ni′,根据所述子集合的散列函数个数Ni′,选择Ni′个散列函数作为子集合的散列函数;
执行单元,用于对所述子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni′个散列值对应的位向量的位置设置标识,生成该子集合的位向量。
其中,所述装置还包括:
更新单元,用于当在该子集合中增加所述元素时,确定所述子集合设定了预留增加元素以及预留增加元素的个数有剩余时,根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,更新该子集合的位向量。
其中,删除单元还用于当确定所述子集合的预留增加元素的个数没有剩余时,将该子集合对应的位向量、子集合散列函数删除。
本发明实施例提供的一种利用上述生成的布隆过滤器查询元素的装置,包括:
分组单元,用于根据分组散列函数确定需要查询的元素对应的子集合;
确定单元,用于根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值;
查询单元,用于当子集合对应的位向量的Ni个散列值对应的位置都设置标识时,确定所述元素属于布隆过滤器表示的数据元素集合中的元素。
本发明实施例提供的布隆过滤器的生成方法,能够根据分组散列函数将布隆过滤器表示的数据元素集合中的元素分为M个子集合,并分别确定每一个子集合的位向量长度以及子集合散列函数,将子集合中的每一个元素利用子集合的散列函数确定散列值,将散列值对应的位向量的位置设置标识,生成每一个子集合的位向量,并生成包含分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。采用本发明方法生成的布隆过滤器,当布隆过滤器表示的集合中需要增加或删除一个元素时,只需要根据分组散列函数确定该元素的对应的子集合,重建该子集合的位向量,能够避免传统的布隆过滤器在增加或删除元素时,需要重建整个布隆过滤器的位向量,节省重建开销。
附图说明
图1为现有技术中散列表结构示意图;
图2为现有技术某一个垃圾Email地址采用布隆过滤器表示的示例图;
图3为本发明实施例提供的布隆过滤器的生成方法流程示意图;
图4为本发明实施例提供的第一种对布隆过滤器更新的方法流程示意图;
图5为本发明实施例提供的第二种对布隆过滤器更新的方法流程示意图;
图6为本发明实施例提供的利用布隆过滤器查询元素的方法流程示意图;
图7为本发明实施例提供的布隆过滤器的生成装置结构框图;
图8为本发明实施例提供的对布隆过滤器更新的装置的结构框图;
图9为本发明实施例提供的利用布隆过滤器查询元素的装置的结构框图。
具体实施方式
基于现有的传统布隆过滤器,虽然节省了存储空间,但当传统的布隆过滤器表示的集合中需要增加或删除一个元素时,需要重建整个布隆过滤器的位向量,需要消耗大量的时间。
本发明实施例提供一种布隆过滤器的生成方法,能够根据分组散列函数将布隆过滤器表示的集合中的所有元素分为M个子集合,并分别对每一个子集合,确定子集合对应的位向量长度Li以及Ni个子集合散列函数,根据Ni个子集合散列函数,将子集合中的每一个元素确定Ni个散列值,将位向量中散列值对应的位向量的位置设置标识,生成该子集合的位向量,并生成包含分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。采用本发明实施例的方法生成的布隆过滤器,由于将布隆过滤器表示的数据元素集合中的元素分为M个子集合,对各个子集合分别生成位向量,各个子集合的位向量互不影响,因此当布隆过滤器表示的数据元素集合中增加或删除一个元素时,只需重建该元素的子集合对应的位向量,减少了重建整个布隆过滤器的代价,节省了时间。
本发明实施例提供一种布隆过滤器的生成方法,如图3所示,包括:
S301:确定一个散列函数作为分组散列函数;
S302:根据分组散列函数H0将布隆过滤器表示的数据元素集合分为M个子集合;
具体的:根据分组散列函数H0确定布隆过滤器表示的数据元素集合中每一个元素的分组散列值,根据每一个分组散列值将集合中的数据元素分为M个子集合;
其中,可将每一个数据元素的分组散列值对M取余数,将余数相同的数据元素分为一个子集合;或者,将每一个元素对5M取余数,将余数[0~4],[5~9],......[5M-5,5M-1]的元素分别分为一个子集合,则数据元素集合中的所有元素共分为M个子集合,当然,根据分组散列函数将数据元素集合中的数据元素分为M个子集合的方法还有很多,主要目的都是将数据元素集合中的元素比较均匀的分成M个子集合,这里不再一一列举。
假设一个集合S中包含100个元素,需要将集合分为10个子集合,则对集合中的每一个元素均能通过分组散列函数H0确定一个散列值,将散列值对10取余数,将余数相同的元素划分为一个子集合;
其中,还可以调整散列函数H0的值域为{0,1,2,......,m-1},则通过散列函数确定的集合中的每一个元素的散列值K(0≤K≤m-1),将散列值相同的元素划分为一个子集合;
S303:确定每一个子集合对应的位向量长度Li以及散列函数个数Ni;
其中,分别根据使用所述布隆过滤器过滤元素时设定的最高假通过率,以及每一个子集合中的元素个数,确定每一个子集合对应的位向量长度Li以及散列函数个数Ni;
其中,对各个子集合,子集合散列函数的个数Ni可以相同也可以不同,散列函数的个数与元素的查询性能相关,为了保证元素查询性能的一致性,较佳的各个子集合的散列函数个数相同;
因为Ni肯定是一个整数,可以采用将Ni值逐个带入公式(2)计算的方式,例如将Ni=1带入公式(2),即得:p=1-(1-1/Li)Di,其中,假通过率p是使用所述布隆过滤器过滤元素时设定的最高假通过率,Di是子集合中的元素的个数,p以及Di都是已知的,通过求解即可得当Ni=1时Li的值;同理,当Ni=2,3,...,k时都可以对应确定出一个对应的Li值,根据实际情况选取合适的Ni和Li值即可;因为散列函数个数太多,计算的时间太长,查询性能较差;位向量太长,存储空间较大;因此,可以从查询性能以及存储空间两方面考虑选取合适的位向量长度Li以及散列函数个数Ni;
或者,还可以分别根据使用所述布隆过滤器过滤元素时设定的最高假通过率,以及每一个子集合中的元素个数和每一个子集合设定的元素的预留增加个数,确定每一个子集合对应的位向量长度Li和散列函数个数Ni;
其中,将子集合的元素个数和子集合设定的元素的预留增加个数的和,作为Di代入公式(2)确定Li以及Ni;
假设该子集合中的元素个数为100万,该子集合中的元素的预留增加个数为5万,则根据子集合中元素个数以及预增加的元素的个数的和105万,根据公式(2)确定该子集合对应的位向量的位向量长度Li及散列函数个数Ni;
S304:对M个子集合中的每一个子集合执行:根据子集合对应的散列函数个数Ni,选择Ni个散列函数作为子集合的散列函数;
当然,若各个子集合的子集合散列函数个数Ni相同,则各个子集合的Ni个相互独立的散列函数也可以相同;
其中,在步骤S303以及S304中,对每一个子集合确定的位向量长度Li以及Ni个散列函数还可以采用实验的方法;
假设子集合Si对应的位向量的位向量长度Li和散列函数个数Ni,并选择Ni个子集合散列函数,其中,将子集合中的每一个元素分别用Ni个散列函数确定Ni个散列值,将散列值对应的位向量的位置置1,则位向量表示了子集合Si中的全部Di个元素,然后用一个测试元素集(该测试集中的元素都不属于子集合Si)测试,通过调整位向量的长度Li以及散列函数的个数Ni,使得测试集的假通过率在可接受的范围内,可接受的范围即假通过率小于为布隆过滤器设定的最高假通过率;
其中,还可以确定子集合中的元素的预增加个数,根据子集合中元素、元素的个数以及预增加的元素的个数,确定子集合对应的位向量长度Li以及Ni个散列函数;
初始设置子集合Si对应的位向量Vi的位向量长度Li和Ni个散列函数,确定子集合中元素的预留增加个数Di1,任意选择Di1个元素,将子集合中的Di元素以及所选择的Di1个元素分别用Ni个散列函数确定Ni个散列值,将该子集合对应的位向量的散列值对应的位向量位设置为1,则该位向量表示了Di+Di1个元素,采用一个测试元素集(该测试集中的元素都不属于子集合Si)测试,通过调整位向量的长度Li以及散列函数的个数Ni及对应的散列函数,使得测试集的假通过率在可接受的范围内,可接受的范围即假通过率小于为布隆过滤器设定的最高假通过率,即可确定出位向量长度Li及Ni个散列函数;
其中,在实际的实施过程中,对元素的查询性能有一定的要求,可以根据性能的要求确定出需要的散列函数的个数,对每一个子集合均采用同样的散列函数及个数,再分别对每一个子集合,根据子集合中元素的个数,根据公式(2)确定出需要的位向量的长度Li,或者采用实验的方法确定假通过率在可接受范围内的位向量的长度Li;
S305:对M个子集合中的每一个子集合执行:将子集合中的每一个元素分别根据该子集合的Ni个散列函数确定Ni个散列值,并将Ni个散列值对应的位向量的位置设置标识,生成该子集合的位向量;
其中,初始化时,将每一个子集合对应的位向量的所有位置置“0”,则在此步中可将散列值对应的位向量的位置置“1”;
其中,将某个元素的Ni个散列值对应的位向量的位置设置标识,表示了布隆过滤器中装入了该元素;
S306:生成包含分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。
上述步骤为一个完整的布隆过滤器的生成方法。
本发明实施例还提供一种对上述生成的布隆过滤器进行更新的方法,如图4所示,包括:
S401:当布隆过滤器表示的集合中需要增加或删除一个元素时,根据分组散列函数确定所述元素对应的子集合;
S402:在该子集合中增加或删除该元素,并将子集合对应的位向量、子集合散列函数删除;
S403:重新确定该子集合对应的位向量长度Li′以及散列函数个数Ni′;
S404:根据该子集合的散列函数个数Ni′,选择Ni′个散列函数作为子集合的散列函数;
S405:对子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni′个散列值对应的位向量的位置设置标识,生成该子集合的位向量。
利用这种更新方法,当布隆过滤器表示的数据元素集合中增加或删除一个元素时,只需对某一个子集合的位向量重建,避免了重建整个布隆过滤器的位向量,节省了时间。
进一步,为了在增加元素时,可以不必重建子集合的位向量,节省时间,则在上述更新方法中,在步骤S402中,当确定在该子集合中增加该元素时,确定该子集合设定了预留增加元素以及预留增加元素的个数有剩余时,根据该子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值,将散列值对应的位向量的位置设置标识,更新该子集合的位向量;当确定该子集合的预留增加元素的个数没有剩余时,继续步骤S402。
本发明实施例还提供第二种对上述生成的布隆过滤器进行更新的方法,图图5所示,包括:
S501:判断布隆过滤器表示的集合中增加还是删除一个元素,当判断结果是增加时,执行步骤S502,当判断结果是删除时,执行步骤S507;
S502:根据分组散列函数确定该元素对应的子集合;
S503:判断该子集合是否设定了预留的增加元素,判断结果为是时,执行步骤S504,判断结果为否时,执行步骤S506;
S504:判断该子集合的预留增加的元素个数是否有剩余,判断结果为是时,执行步骤S505,判断结果为否时,执行步骤S506;
S505:根据该子集合的Ni个子集合散列函数,确定该元素的Ni个散列值,将散列值对应的位向量的位置设置标识,更新该子集合的位向量,结束;
S506:在该子集合中增加该元素,执行步骤S508;
S507:根据分组散列函数确定该元素对应的子集合,并在该子集合中删除该元素,执行步骤S508;
S508:将子集合对应的位向量、子集合散列函数删除;
S509:重新确定子集合对应的位向量长度Li′以及子集合散列函数个数Ni′;
S510:根据该子集合的散列函数个数Ni′,选择Ni′个散列函数作为该子集合的散列函数;
S511:对该子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni′个散列值对应的位向量的位置设置标识,生成该子集合的位向量,结束。
采用这种更新方法,当布隆过滤器表示的集合中需要增加一个元素时,并且该元素的子集合中预留有预增加的元素的空间,并且当空间仍有剩余时,可直接将该元素利用该子集合的Ni个子集合散列函数确定Ni个散列值,并将位向量中Ni个散列值对应的位向量的位置设置标识,这样在增加元素时,可以不用重建对应子集合的位向量,节省了时间;只有当没有空间,以及需要删除元素时,才对子集合的位向量重建。
本发明实施例还提供一种利用上述生成的布隆过滤器查询元素的方法,如图6所示,包括:
S601:根据分组散列函数确定需要查询的元素对应的子集合;
其中,查询时根据分组散列函数确定需查询的元素对应的子集合的方法和生成布隆过滤器时采用的分组方法相同的;
S602:根据该子集合对应的Ni个子集合散列函数,确定该元素的Ni个散列值;
S603:在该子集合对应的位向量中查找,若该Ni个散列值对应的位向量的位置都设置标识时,则确定该元素是布隆过滤器表示的集合中的元素,若该Ni个散列值对应的位向量的位置不是都设置标识,则该元素不是布隆过滤器表示的集合中的元素。
上述实施例中的数据元素可以是垃圾Email地址、搜索引擎中需要的网页地址或者字典中的词条、英文单词等。在所有需要大规模存储空间以及查询领域均可以应用本发明实施例生成的布隆过滤器来进行存储以及查询。
下面结合垃圾Email地址过滤的实例来说明本发明实施例提供的技术方案。
1、假设已知的垃圾Email地址有1亿个,需要将垃圾Email地址分成100个子集合,则先确定一个散列函数作为分组散列函数,并根据分组散列函数H0确定每一个垃圾Email地址的散列值,将散列值对100取余数,将余数相同的垃圾Email地址划分为一个子集合;
或者,调整H0的值域为0~99,根据散列函数H0及值域确定每一个垃圾Email的散列值,根据散列值将所有垃圾Email地址分为100个子集合,其中,散列值相同的垃圾Email地址划分为一个子集合;
当然,还可以采用别的分组方式,目的都是将垃圾Email地址比较均匀的分成若干个子集合;
其中,散列函数H0是均匀的散列函数,因此垃圾Email地址被比较均匀地划分在100个子集合中,其中每个子集合所包含的垃圾Email地址个数都在100万个左右;
2、对其中一个子集合,假设设定的最高假通过率为千分之一,子集合中的垃圾Email地址个数为100万,根据公式(2),可确定子集合对应的位向量长度Li以及散列函数个数Ni,并选择Ni个散列函数作为子集合散列函数;
其中,若考虑到该子集合中可能需要增加垃圾Email地址,需要为该子集合对应的位向量预留一个预留空间,即在确定位向量长度以及散列函数个数时,需要考虑到该子集合中包含105万个垃圾Email地址时的位向量的长度以及散列函数的个数,这样即该子集合对应的位向量中预留了5万个垃圾Email的增加空间;
这样,当集合中需要增加一个垃圾Email地址时,通过散列函数H0找到对应的子集合、该子集合对应的位向量以及散列函数,若该子集合对应的利用散列函数确定增加的垃圾Email地址的散列值,将位向量中散列值对应的位向量位设为1即可。
其中,还可以采用测试的方法,选取不同的Li以及Ni个散列函数,分别将子集合中的每一个垃圾Email地址根据确定的Ni个散列函数确定Ni个散列值,将每一个垃圾Email地址的Ni个散列值对应的位向量的位置置1,将子集合中的全部垃圾Email地址确定出的散列值对应的位向量的位置都置1后,则该位向量便表示了该子集合中的所有垃圾Email地址,然后采用一个测试向量集测试布隆过滤器中该子集合的假通过率,如果假通过率在可接受的范围内,则Li、Ni以及Ni个散列函数即为该子集合对应的位向量的位向量长度、散列函数及个数。其中测试向量集的选取原则是测试向量集中的所有垃圾Email地址都不属于该子集合中的垃圾Email地址。
其中,为了保证查询性能的均匀性,可对各个子集合,采用同样个数的散列函数。这样可根据查询性能的需求以及存储空间两方面的限制(散列函数越多,查询元素时需要的时间越多,即查询性能越低,同时存储空间较少;散列函数越少,查询元素时需要的时间越少,即查询性能越高,同时存储空间较大)确定出需要的散列函数的个数,对每一个子集合均采用同样的散列函数及个数,再分别对每一个子集合,根据子集合中元素的个数,根据公式(2)确定出需要的位向量的长度Li,或者采用实验的方法确定假通过率在可接受范围内的位向量的长度Li;
3、对100个子集合中的每一个子集合执行:将子集合中的每一个垃圾Email地址分别根据该子集合的Ni个散列函数确定Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,在本例中初始时位向量的所有位置都置0,在此步中将Ni个散列值对应的位向量的位置都置1,生成该子集合的位向量,则该子集合对应的位向量即表示了该子集合中的所有垃圾Email地址。
4、这样,就生成了包含100个位向量、一个分组散列函数以及各个子集合散列函数的布隆过滤器。
布隆过滤器中的每一个位向量均表示了一个子集合中的所有元素,100个位向量表示了数据元素集合的所有元素。
对上述生成的布隆过滤器,如果需要在布隆过滤器所表示的垃圾Email地址中增加或删除具体某一个垃圾Email地址,先通过分组散列函数H0确定该垃圾Email地址对应的子集合,将该子集合对应的位向量以及子集合散列函数删除,并根据该子集合中增加后的或者剩余的垃圾Email地址重新确定该子集合对应的位向量长度Li′、散列函数个数Ni′以及Ni′个散列函数,这样就避免了现有的布隆过滤器在增加或删除元素时,需要对整个布隆过滤器重建的问题,只需对子集合对应的位向量重建,节省了时间开销;
或者,因为在上述生成的布隆过滤器中,每一个子集合对应的位向量中预先留有元素的增加空间,因此当需要在布隆过滤器所表示的垃圾Email地址中增加一个垃圾Email地址时,先通过分组散列函数H0确定该垃圾Email地址对应的子集合,判断该子集合是否设定有预留增加的元素空间,若有预留增加的元素空间,并且预留空间有剩余时,将该垃圾Email地址直接利用该子集合对应的Ni个散列函数确定出Ni个散列值,将位向量中该Ni个散列值对应的位向量位设为1,更新该子集合的位向量,即在该子集合的位向量中增加了该元素,也就是布隆过滤器中增加了一个元素;如果判断出该子集合对应的位向量中保留的元素的增加空间没有剩余时,直接删除该子集合对应的位向量,并根据该子集合增加后的总垃圾Email地址确定该子集合对应的位向量长度Li′、散列函数个数Ni′以及Ni′个散列函数,重新确定该子集合对应的位向量。
因为将所有的垃圾Email地址划分为100个子集合,不同子集合的位向量间互不影响,因此当增加或删除垃圾Email地址时,传统的布隆过滤器需要重建整个布隆过滤器的位向量,而采用本发明方法的布隆过滤器,只需要对某一个子集合对应的位向量进行重建,因此重建位向量的时间仅为传统布隆过滤器的100分之一。
当利用上述生成的布隆过滤器查询某个Email地址X时,先根据分组散列函数H0确定该Email地址X对应的子集合,根据该子集合对应的Ni个散列函数,确定该Email地址的Ni个散列值,查看该子集合对应的位向量,若Ni个散列值对应的位向量的位置都有标识,即散列值对应的位向量的位置都置1,则该Email地址属于垃圾Email地址,若Ni个散列值对应的位向量的位置不是都有标识,即散列值对应的位向量的位置不是都置1,则该Email地址不属于垃圾Email地址。
下面以实验数据来说明本发明实施例生成的布隆过滤器与传统布隆过滤器相比的有益之处:
表1.传统布隆过滤器与本发明的布隆过滤器性能比较
传统布隆过滤器 | 本发明的布隆过滤器 | |
内存空间 | 400M | 423M |
元素查询时间 | 2.6微秒 | 2.6微秒 |
预留空间额度内,元素动态增加时时间开销 | 2.6微秒 | 2.6微秒 |
预留空间额度外,元素动态增加时时间开销 | 511.5微秒 | 5.1微秒 |
元素动态删除时时间开销 | 511.5微秒 | 5.1微秒 |
从上表可以看出,本发明的生成的布隆过滤器与传统的布隆过滤器相比,因为采用了和传统布隆过滤器同样个数的散列函数,这样在本发明的布隆过滤器中每个子集合对应的位向量比传统的布隆过滤器少用了一个散列函数,因此本发明的布隆过滤器对内存空间的需求会大些,但是当集合中元素增加或删除,需要对布隆过滤器重建时,采用本发明方法生成的布隆过滤器,只需对某一个子集合的位向量重建,节省了时间。
采用本发明实施例提供的生成布隆过滤器的方法,以及对生成的布隆过滤器进行更新、查询的方法,在保证元素查询性能的前提下,避免了传统布隆过滤器增加或删除元素时,需要重建整个布隆过滤器位向量的问题,节省了重建时间。
本发明实施例还提供一种布隆过滤器的生成装置,如图7所示,包括:
分组单元71,用于确定一个散列函数作为分组散列函数,并根据该分组散列函数,将该布隆过滤器表示的数据元素集合分为M个子集合;
确定单元72,用于确定每一个子集合对应的位向量长度Li和散列函数个数Ni;
执行单元73,用于对M个子集合中的每一个子集合执行:根据子集合对应的散列函数个数Ni,选择Ni个散列函数作为子集合的散列函数,以及将子集合中的每一个元素分别根据该子集合的Ni个散列函数确定Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,生成该子集合的位向量,并生成包含分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。
本发明实施例还提供一种对生成的布隆过滤器更新的装置,如图8所示,包括:
删除单元81,用于当布隆过滤器表示的数据元素集合中删除或增加一个元素时,根据分组散列函数确定该元素对应的子集合,在该子集合中增加或删除该元素,并将该子集合对应的位向量、子集合散列函数删除;
确定单元82,用于重新确定该子集合对应的位向量长度Li′以及子集合散列函数个数Ni′,根据该子集合的散列函数个数Ni′,选择Ni′个散列函数作为子集合的散列函数;
执行单元83,用于对该子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni′个散列值对应的位向量的位置设置标识,生成该子集合的位向量。
进一步,上述更新的装置还包括:
更新单元84,用于当在该子集合中增加该元素时,确定该子集合设定了预留增加元素以及预留增加元素的个数有剩余时,根据该子集合的Ni个子集合散列函数,确定该元素的Ni个散列值,将散列值对应的位向量的位置设置标识,更新该子集合的位向量。
其中,删除单元81,还用于当确定该子集合的预留增加元素的个数没有剩余时,将该子集合对应的位向量、子集合散列函数删除。
本发明实施例还提供一种利用生成的布隆过滤器查询元素的装置,如图9所示,包括:
分组单元901,用于根据分组散列函数确定该元素对应的子集合;
确定单元902,用于根据该子集合的Ni个子集合散列函数,确定该元素的Ni个散列值;
查询单元903,用于当子集合对应的位向量的Ni个散列值对应的位置都设置标识时,确定该元素属于布隆过滤器表示的数据元素集合。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (17)
1.一种布隆过滤器的生成方法,其特征在于,包括:
确定一个散列函数作为分组散列函数;
根据所述分组散列函数,将所述布隆过滤器表示的数据元素集合分为M个子集合;
确定每一个子集合对应的位向量长度Li和散列函数个数Ni;
对M个子集合中的每一个子集合执行:根据子集合对应的散列函数个数Ni,选择Ni个散列函数作为子集合的散列函数,以及将子集合中的每一个元素分别根据该子集合的Ni个散列函数确定Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,生成该子集合的位向量;
生成包含所述分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。
2.如权利要求1所述的方法,其特征在于,所述根据分组散列函数,将布隆过滤器表示的数据元素集合分为M个子集合具体为:
根据所述分组散列函数确定所述布隆过滤器表示的数据元素集合中每一个元素的分组散列值;
根据每一个元素的分组散列值将数据元素集合中的元素分为M个子集合。
3.如权利要求2所述的方法,其特征在于,所述根据每一个元素的分组散列值将数据元素集合中的元素分为M个子集合具体为:
根据每一个元素的分组散列值对M取余数,将余数相同的元素划分为一个子集合,将数据元素集合中的元素分为M个子集合。
4.如权利要求1、2或3所述的方法,其特征在于,所述确定每一个子集合对应的位向量长度Li和散列函数个数Ni具体为:
分别根据使用所述布隆过滤器过滤元素时设定的最高假通过率,以及每一个子集合中的元素个数,确定每一个子集合对应的位向量长度Li和散列函数个数Ni。
5.如权利要求1、2或3所述的方法,其特征在于,所述确定每一个子集合对应的位向量长度Li和散列函数个数Ni具体为:
分别根据使用所述布隆过滤器过滤元素时设定的最高假通过率,以及每一个子集合中的元素个数和每一个子集合设定的元素的预留增加个数,确定每一个子集合对应的位向量长度Li和散列函数个数Ni。
6.如权利要求1所述的方法,其特征在于,对各个子集合,子集合散列函数的个数Ni相同。
7.一种对权利要求1生成的布隆过滤器更新的方法,其特征在于,包括:
当布隆过滤器表示的数据元素集合中删除或增加一个元素时,根据分组散列函数确定所述元素对应的子集合;
在该子集合中增加或删除所述元素,并将该子集合对应的位向量、子集合散列函数删除;
重新确定所述子集合对应的位向量长度Li ′以及子集合散列函数个数Ni′;
根据所述子集合的散列函数个数Ni′,选择Ni′个散列函数作为子集合的散列函数;
对所述子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni′个散列值对应的位向量的位置设置标识,生成该子集合的位向量。
8.如权利要求7所述的方法,其特征在于,所述根据分组散列函数确定所述元素对应的子集合具体为:
根据分组散列函数确定所述元素的分组散列值,并根据分组散列值确定所述元素对应的子集合。
9.如权利要求7所述的方法,其特征在于,还包括:
当在该子集合中增加所述元素时,确定所述子集合设定了预留增加元素以及预留增加元素的个数有剩余时,根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,更新该子集合的位向量。
10.如权利要求9所述的方法,其特征在于,还包括:
当确定所述子集合的预留增加元素的个数没有剩余时,将该子集合对应的位向量、子集合散列函数删除;
返回重新确定所述子集合对应的位向量长度Li′以及子集合散列函数个数Ni ′的步骤。
11.一种利用权利要求1生成的布隆过滤器查询元素的方法,其特征在于,包括:
根据分组散列函数确定需要查询的元素对应的子集合;
根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值;
当子集合对应的位向量的Ni个散列值对应的位置都设置标识时,确定所述元素属于布隆过滤器表示的数据元素集合。
12.如权利要求11所述的方法,其特征在于,所述根据分组散列函数确定需要查询的元素对应的子集合具体为:
根据分组散列函数确定所述元素的分组散列值,并根据分组散列值确定所述元素对应的子集合。
13.一种布隆过滤器的生成装置,其特征在于,包括:
分组单元,用于确定一个散列函数作为分组散列函数,并根据所述分组散列函数,将所述布隆过滤器表示的数据元素集合分为M个子集合;
确定单元,用于确定每一个子集合对应的位向量长度Li和散列函数个数Ni;
执行单元,用于对M个子集合中的每一个子集合执行:根据子集合对应的散列函数个数Ni,选择Ni个散列函数作为子集合的散列函数,以及将子集合中的每一个元素分别根据该子集合的Ni个散列函数确定Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,生成该子集合的位向量,并生成包含所述分组散列函数,以及M个子集合中每一个子集合的位向量和子集合散列函数的布隆过滤器。
14.一种对权利要求1生成的布隆过滤器更新的装置,其特征在于,包括:
删除单元,用于当布隆过滤器表示的数据元素集合中删除或增加一个元素时,根据分组散列函数确定所述元素对应的子集合,在该子集合中增加或删除所述元素,并将该子集合对应的位向量、子集合散列函数删除;
确定单元,用于重新确定所述子集合对应的位向量长度Li′以及子集合散列函数个数Ni′,根据所述子集合的散列函数个数Ni′,选择Ni′个散列函数作为子集合的散列函数;
执行单元,用于对所述子集合执行:将子集合中的每一个元素分别根据该子集合的Ni′个散列函数确定Ni′个散列值,将Ni′个散列值对应的位向量的位置设置标识,生成该子集合的位向量。
15.如权利要求14所述的装置,其特征在于,还包括:
更新单元,用于当在该子集合中增加所述元素时,确定所述子集合设定了预留增加元素以及预留增加元素的个数有剩余时,根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值,将Ni个散列值对应的位向量的位置设置标识,更新该子集合的位向量。
16.如权利要求15所述的装置,其特征在于,删除单元还用于当确定所述子集合的预留增加元素的个数没有剩余时,将该子集合对应的位向量、子集合散列函数删除。
17.一种利用权利要求1生成的布隆过滤器查询元素的装置,其特征在于,包括:
分组单元,用于根据分组散列函数确定需要查询的元素对应的子集合;
确定单元,用于根据所述子集合的Ni个子集合散列函数,确定所述元素的Ni个散列值;
查询单元,用于当子集合对应的位向量的Ni个散列值对应的位置都设置标识时,确定所述元素属于布隆过滤器表示的数据元素集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101421654A CN101901248B (zh) | 2010-04-07 | 2010-04-07 | 一种布隆过滤器的生成、更新以及查询元素方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101421654A CN101901248B (zh) | 2010-04-07 | 2010-04-07 | 一种布隆过滤器的生成、更新以及查询元素方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101901248A true CN101901248A (zh) | 2010-12-01 |
CN101901248B CN101901248B (zh) | 2012-08-15 |
Family
ID=43226782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101421654A Expired - Fee Related CN101901248B (zh) | 2010-04-07 | 2010-04-07 | 一种布隆过滤器的生成、更新以及查询元素方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101901248B (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253991A (zh) * | 2011-05-25 | 2011-11-23 | 北京星网锐捷网络技术有限公司 | Url存储方法、网页过滤方法、装置及系统 |
CN102799617A (zh) * | 2012-06-19 | 2012-11-28 | 华中科技大学 | 多层Bloom Filter的构建及查询优化方法 |
CN103095453A (zh) * | 2011-07-08 | 2013-05-08 | Sap股份公司 | 应用私有集合交集的公钥加密的布隆过滤器 |
CN103559215A (zh) * | 2013-10-14 | 2014-02-05 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN104317795A (zh) * | 2014-08-28 | 2015-01-28 | 华为技术有限公司 | 一种二维过滤器的生成方法、查询方法及装置 |
CN104424256A (zh) * | 2013-08-28 | 2015-03-18 | 华为技术有限公司 | 布隆过滤器生成方法和装置 |
CN105530328A (zh) * | 2014-10-17 | 2016-04-27 | 思科技术公司 | 使用布隆过滤器参数用于唯一地址计算的地址自动配置 |
CN103559215B (zh) * | 2013-10-14 | 2016-11-30 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN106445944A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种数据查询请求的处理方法、装置及电子设备 |
CN106850541A (zh) * | 2016-12-13 | 2017-06-13 | 华为技术有限公司 | 一种物联网中节点的地址确定方法和装置 |
CN106970930A (zh) * | 2016-10-10 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 消息发送确定方法及装置、数据表创建方法及装置 |
WO2017162102A1 (zh) * | 2016-03-25 | 2017-09-28 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置以及数据表处理方法和装置 |
CN107368596A (zh) * | 2017-07-26 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种布隆过滤器查询集合元素的方法及装置 |
CN107851022A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 向量长度查询指令 |
CN107844359A (zh) * | 2016-09-20 | 2018-03-27 | 杭州华为数字技术有限公司 | 一种仿真方法及装置 |
CN108027826A (zh) * | 2015-09-09 | 2018-05-11 | 亚马逊科技有限公司 | 元素从概率数据结构的删除 |
WO2018228030A1 (zh) * | 2017-06-13 | 2018-12-20 | 华为技术有限公司 | 一种布隆过滤器中数据的处理方法以及布隆过滤器 |
CN109977113A (zh) * | 2019-01-25 | 2019-07-05 | 北京工业大学 | 一种用于医疗影像数据的基于布隆过滤器的HBase索引设计方法 |
CN110362590A (zh) * | 2018-04-02 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、系统、电子设备及计算机可读介质 |
CN110990640A (zh) * | 2019-11-15 | 2020-04-10 | 北京浪潮数据技术有限公司 | 一种数据判定方法、装置、设备及计算机可读存储介质 |
CN110996316A (zh) * | 2019-12-12 | 2020-04-10 | 东莞理工学院 | 一种两层无线传感器网络中的安全数据检索方法 |
CN112532598A (zh) * | 2020-11-19 | 2021-03-19 | 南京大学 | 一种用于实时入侵检测系统的过滤方法 |
CN112818188A (zh) * | 2020-08-19 | 2021-05-18 | 北京辰信领创信息技术有限公司 | 一种支持删除的布隆过滤的设计方法 |
CN112836239A (zh) * | 2021-02-19 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 保护隐私的双方协同确定目标对象数据的方法及装置 |
CN113709105A (zh) * | 2021-07-20 | 2021-11-26 | 深圳市风云实业有限公司 | 基于计数型布隆过滤器的SYN Flood攻击检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101150483A (zh) * | 2007-11-02 | 2008-03-26 | 华为技术有限公司 | 路由表调整方法、路由查询方法和装置及路由表存储装置 |
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
-
2010
- 2010-04-07 CN CN2010101421654A patent/CN101901248B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN101150483A (zh) * | 2007-11-02 | 2008-03-26 | 华为技术有限公司 | 路由表调整方法、路由查询方法和装置及路由表存储装置 |
Non-Patent Citations (2)
Title |
---|
《广西师范大学学报:自然科学版》 20100331 苏国荣等 《一种去除重复URL的算法》 122-126 1-17 第28卷, 第1期 2 * |
《现代图书情报技术》 20080331 丁振国等 《基于Bloom Fliter的大规模网页去重策略研究》 45-50 1-17 , 第3期 2 * |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253991A (zh) * | 2011-05-25 | 2011-11-23 | 北京星网锐捷网络技术有限公司 | Url存储方法、网页过滤方法、装置及系统 |
CN102253991B (zh) * | 2011-05-25 | 2014-07-30 | 北京星网锐捷网络技术有限公司 | Url存储方法、网页过滤方法、装置及系统 |
CN103095453A (zh) * | 2011-07-08 | 2013-05-08 | Sap股份公司 | 应用私有集合交集的公钥加密的布隆过滤器 |
CN103095453B (zh) * | 2011-07-08 | 2017-11-03 | Sap欧洲公司 | 应用私有集合交集的公钥加密的布隆过滤器 |
CN102799617A (zh) * | 2012-06-19 | 2012-11-28 | 华中科技大学 | 多层Bloom Filter的构建及查询优化方法 |
CN102799617B (zh) * | 2012-06-19 | 2014-09-24 | 华中科技大学 | 多层Bloom Filter的构建及查询优化方法 |
US10664445B2 (en) | 2013-08-28 | 2020-05-26 | Huawei Technologies Co., Ltd. | Bloom filter generation method and apparatus |
CN104424256B (zh) * | 2013-08-28 | 2017-12-12 | 华为技术有限公司 | 布隆过滤器生成方法和装置 |
CN104424256A (zh) * | 2013-08-28 | 2015-03-18 | 华为技术有限公司 | 布隆过滤器生成方法和装置 |
CN103559215B (zh) * | 2013-10-14 | 2016-11-30 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN103559215A (zh) * | 2013-10-14 | 2014-02-05 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN104317795A (zh) * | 2014-08-28 | 2015-01-28 | 华为技术有限公司 | 一种二维过滤器的生成方法、查询方法及装置 |
CN105530328A (zh) * | 2014-10-17 | 2016-04-27 | 思科技术公司 | 使用布隆过滤器参数用于唯一地址计算的地址自动配置 |
CN105530328B (zh) * | 2014-10-17 | 2019-05-10 | 思科技术公司 | 使用布隆过滤器参数用于唯一地址计算的方法和装置 |
CN107851022A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 向量长度查询指令 |
US11314514B2 (en) | 2015-07-31 | 2022-04-26 | Arm Limited | Vector length querying instruction |
CN106445944A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种数据查询请求的处理方法、装置及电子设备 |
CN108027826A (zh) * | 2015-09-09 | 2018-05-11 | 亚马逊科技有限公司 | 元素从概率数据结构的删除 |
CN107229663A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置以及数据表处理方法和装置 |
WO2017162102A1 (zh) * | 2016-03-25 | 2017-09-28 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置以及数据表处理方法和装置 |
TWI746517B (zh) * | 2016-03-25 | 2021-11-21 | 香港商阿里巴巴集團服務有限公司 | 資料處理方法和裝置以及資料表處理方法和裝置 |
CN107844359A (zh) * | 2016-09-20 | 2018-03-27 | 杭州华为数字技术有限公司 | 一种仿真方法及装置 |
CN106970930A (zh) * | 2016-10-10 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 消息发送确定方法及装置、数据表创建方法及装置 |
CN106850541A (zh) * | 2016-12-13 | 2017-06-13 | 华为技术有限公司 | 一种物联网中节点的地址确定方法和装置 |
CN106850541B (zh) * | 2016-12-13 | 2020-11-06 | 华为技术有限公司 | 一种物联网中节点的地址确定方法和装置 |
WO2018228030A1 (zh) * | 2017-06-13 | 2018-12-20 | 华为技术有限公司 | 一种布隆过滤器中数据的处理方法以及布隆过滤器 |
CN107368596A (zh) * | 2017-07-26 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种布隆过滤器查询集合元素的方法及装置 |
CN110362590A (zh) * | 2018-04-02 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、系统、电子设备及计算机可读介质 |
CN109977113A (zh) * | 2019-01-25 | 2019-07-05 | 北京工业大学 | 一种用于医疗影像数据的基于布隆过滤器的HBase索引设计方法 |
CN110990640A (zh) * | 2019-11-15 | 2020-04-10 | 北京浪潮数据技术有限公司 | 一种数据判定方法、装置、设备及计算机可读存储介质 |
CN110990640B (zh) * | 2019-11-15 | 2022-07-05 | 北京浪潮数据技术有限公司 | 一种数据判定方法、装置、设备及计算机可读存储介质 |
CN110996316A (zh) * | 2019-12-12 | 2020-04-10 | 东莞理工学院 | 一种两层无线传感器网络中的安全数据检索方法 |
CN110996316B (zh) * | 2019-12-12 | 2021-09-24 | 东莞理工学院 | 一种两层无线传感器网络中的安全数据检索方法 |
CN112818188A (zh) * | 2020-08-19 | 2021-05-18 | 北京辰信领创信息技术有限公司 | 一种支持删除的布隆过滤的设计方法 |
CN112532598A (zh) * | 2020-11-19 | 2021-03-19 | 南京大学 | 一种用于实时入侵检测系统的过滤方法 |
CN112836239A (zh) * | 2021-02-19 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 保护隐私的双方协同确定目标对象数据的方法及装置 |
CN113709105A (zh) * | 2021-07-20 | 2021-11-26 | 深圳市风云实业有限公司 | 基于计数型布隆过滤器的SYN Flood攻击检测方法 |
CN113709105B (zh) * | 2021-07-20 | 2023-08-29 | 深圳市风云实业有限公司 | 基于计数型布隆过滤器的SYN Flood攻击检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101901248B (zh) | 2012-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101901248B (zh) | 一种布隆过滤器的生成、更新以及查询元素方法和装置 | |
CN100462979C (zh) | 分布式索引文件的检索方法、检索系统及检索服务器 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN101944124A (zh) | 分布式文件系统管理方法、装置以及对应的文件系统 | |
CN102467572B (zh) | 支持重复数据删除程序的数据区块查询方法 | |
CN104679778A (zh) | 一种搜索结果的生成方法及装置 | |
CN101504670A (zh) | 数据操作方法、系统、客户端和数据服务器 | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN105630847A (zh) | 数据存储方法、数据查询方法、装置及系统 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN105843933B (zh) | 分布式内存列式数据库的索引建立方法 | |
CN105117351A (zh) | 向缓存写入数据的方法及装置 | |
CN106991102A (zh) | 倒排索引中键值对的处理方法及处理系统 | |
CN102591855A (zh) | 一种数据标识方法及系统 | |
CN104407879A (zh) | 一种电网时序大数据并行加载方法 | |
CN102253991A (zh) | Url存储方法、网页过滤方法、装置及系统 | |
CN103970875A (zh) | 一种并行重复数据删除方法 | |
CN103077208A (zh) | 统一资源定位符匹配处理方法及装置 | |
CN104486777A (zh) | 一种实现数据处理的方法及装置 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN103778120A (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件系统 | |
CN103092886B (zh) | 一种数据查询操作的实现方法、装置及系统 | |
CN104636368A (zh) | 数据检索方法、装置及服务器 | |
CN115695014A (zh) | 访问控制列表构建和数据报文处理方法、装置、系统 | |
CN101639851B (zh) | 一种数据存储、查询的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120815 |
|
CF01 | Termination of patent right due to non-payment of annual fee |