CN101082923A - 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 - Google Patents
一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 Download PDFInfo
- Publication number
- CN101082923A CN101082923A CN 200710035385 CN200710035385A CN101082923A CN 101082923 A CN101082923 A CN 101082923A CN 200710035385 CN200710035385 CN 200710035385 CN 200710035385 A CN200710035385 A CN 200710035385A CN 101082923 A CN101082923 A CN 101082923A
- Authority
- CN
- China
- Prior art keywords
- sbf
- bloom filter
- vector
- expand
- hash function
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种可扩展布鲁姆过滤器(Scalable Bloom filter)查询方法,在数据集元素个数增长的情况下,通过添加长度成倍增长过滤器向量来保持很低的误判率,并给出了一种可扩展布鲁姆过滤器查询方法的元素插入方法。实验表明,可扩展布鲁姆过滤器的元素查询误判率永远小于动态布鲁姆过滤器,可以控制查询误判率在1%,在3.0GHz的CPU机器中,一次元素查询时间仅20μs,比DBF查询速度快很多倍。本发明在现有的布鲁姆过滤器应用领域都可以适应,由于支持集合的动态扩展,因此比现有的布鲁姆过滤器具有更加广泛的应用前景。
Description
技术领域
本发明是涉及分布式计算技术领域,特别是涉及分布式系统产生大量数据、需要进行交互查询的应用,具体是一种可扩展布鲁姆过滤器查询方法及其元素插入方法。
背景技术
随着计算技术和因特网的高速发展,数据量不断加大,网络的异构性和复杂性不断增加,日趋多样化和复杂化的计算机环境,需要在形式、规模、功能和性能等多个层次展开计算系统的可扩展性研究。存储系统的可扩展性是当前计算机研究的热点。布鲁姆过滤器对数据集合采用一个位串表示并能有效支持元素的哈希查找,是一种能够表示集合、支持集合查询的简洁数据结构。面对不断发展的计算机和网络环境,数据膨胀时,研究可扩展的布鲁姆过滤结构支持动态集合查询成为布鲁姆过滤器在分布式系统应用中迫切需要解决的问题。
布鲁姆过滤器(Bloom Filter)对数据集合采用一个位串表示并能有效支持集合元素的哈希查找,是一种能够表示集合、支持集合查询的简洁数据结构,它能够有效的过滤掉不属于集合的元素,因其是由B.Bloom提出的而称为布鲁姆过滤器(Bloom Filter)。由于其哈希查找的常数时间和存储空间开销较小,从而使它具有很好的实用价值。
布鲁姆过滤器自1970年提出以来,被广泛应用到各种计算机系统中,以提高庞大数据集的查找效率。早期的应用主要集中在数据库操作和字典查询操作。最近,随着网络研究的发展以及新的覆盖网和P2P网络应用技术的涌现,布鲁姆过滤器已经越来越广泛的应用于网络中,例如:覆盖网和P2P网节点协作交互、资源路由、数据帧路由标签、网络测量管理、网络安全等。
目前布鲁姆过滤器查询算法主要有:标准的布鲁姆过滤器算法,计数器布鲁姆过滤器算法,压缩布鲁姆过滤器算法,Spectral布鲁姆过滤器算法,拆分型布鲁姆过滤器查询算法,动态布鲁姆过滤器算法和分档布鲁姆过滤器算法。
目前的布鲁姆过滤器算法大都忽略了布鲁姆过滤器可扩展性问题。现有的布鲁姆过滤器大多是用固定的过滤器设计参数来表示固定的静态集合,根据固定的集合元素规模和其在实际应用中所能容忍的最大误判概率,确定其运算时哈希函数个数和过滤器向量的长度。因此,当集合变大时,以往大多数布鲁姆过滤器的设计可能导致不能容忍的查询误判概率,误判率迅速增长到1。
布鲁姆过滤器可扩展性主要是当集合元素动态增长超出过滤器设计的容量时,如何调整布鲁姆过滤器参数,使得布鲁姆过滤器有较低的查询误判率,同时具有可接受的计算性能,保证过滤器的可用性。就目前的算法来说,拆分型布鲁姆过滤器(Split Bloom filter)和动态布鲁姆过滤器(Dynamic Bloomfilter,DBF)都企图通过将过滤器的位向量转换为由多个位向量组成的矩阵来解决可扩展性问题,这两种方法都是通过添加同样大小的布鲁姆过滤器向量来适应集合规模的增长。虽然这两种方法可以有效的缓解由于集合规模的增长而导致的标准布鲁姆过滤器误判率迅速攀升。但是,这种线性扩展向量的方法在实际使用时,随着元素个数增加,向量个数快速攀升,误判率增长速度快,缓解程度有限。同时,此类方法的查询时间复杂度较高,查询的时间复杂度仍有改进的空间。
发明内容
本发明要解决的技术问题是,针对现有技术存在的缺陷,提出一种可扩展的布鲁姆过滤器(Scalable Bloom filter,简称SBF)查询方法及其元素插入方法。当集合元素不断增长时,通过不断增加长度成倍增长的布鲁姆过滤器向量来调整查询误判率。并以此为基础,给出了新的可扩展布鲁姆过滤器的元素的插入、查询方法。本发明提出的可扩展布鲁姆过滤器支持集合规模的扩张,在现有的布鲁姆过滤器应用领域都可以适应,如分布式计算、计算机网络资源定位、数据库的交互查询、P2P网络资源交互、传感器网络信息交换、计算机网络监测、计算机缓存系统设计等产生大量数据、需要进行交互查询的应用领域。本发明尤其适用于集合动态膨胀的应用场合,具有十分广泛的应用前景。
本发明的解决方案是:一种可扩展布鲁姆过滤器(Scalable Bloom filter:以下简称SBF)查询方法,该方法为:
1)布鲁姆过滤器的扩展:当可扩展布鲁姆过滤器SBF所表示的集合元素增长超过可扩展布鲁姆过滤器容量限制时,添加一个长度为前一个可扩展布鲁姆过滤器向量的2倍的向量,即添加了可扩展布鲁姆过滤器向量的向量长度mi=2mi-1,此时添加了可扩展布鲁姆过滤器向量的向量容量限制也为前一个向量容量限制的2倍,即ni=2ni-1;
2)可扩展布鲁姆过滤器元素查询步骤:
第一步:利用SBF查询元素x是否在集合S中,令j=i;
第二步:通过k个哈希函数计算x在SBFj的k个映射位,检查所有位是否都为1;
第三步:所述结果为是时,元素x是SBFj表示的元素,x在集合S中,返回True;
第四步:所述结果为否时,元素x不是SBFj表示的元素,需要继续检查x是否为SBFj-1表示的元素,j←j-1,转到2持续检查x是否为当前向量SBFj直至j=-1。
本发明还包括一种可扩展布鲁姆过滤器的元素插入方法,若c为SBF已经表示的元素个数,则可扩展布鲁姆过滤器查询算法SBF的元素插入流程为:
第一步,新元素x插入SBF时,首先检查
成不成立;
第二步,如果步骤1中式成立,创建新的过滤器向量SBFi+1,通过k个哈希函数计算x在SBFi+1的k个映射位,并置位,将x插入到SBFi+1中,c←c+1,i←i+1;
第三步,如果步骤1中式不成立,通过k个哈希函数计算x在SBFi的k个映射位,并置位,将x插入到当前过滤器向量SBFi中,c←c+1。
本发明提供的所述可扩展布鲁姆过滤器基本原理为:可扩展布鲁姆过滤器SBF扩展流程为:
1.初始化标准布鲁姆过滤器BF={n,m,k},指定可以容忍的误判率上限f0,将BF作为可扩展布鲁姆过滤器的第一个过滤器向量SBF0;
2.根据式
计算SBF0中最大可以表示的元素个数n0,即SBF0的容量限制,使误判率f≤f0;
3.当集合扩展到元素个数n>n0,在SBF中添加新的长度为m1=2×m过滤器向量SBF1;
4.当集合扩展到n>3n0,添加长度为m2=4×m的过滤器向量SBF2到SBF中;
5.集合规模n>(2i-1)n0,SBF进行第i次扩展,添加长度mi=2i×m的过滤器向量SBFi。
在i轮扩展后,可扩展布鲁姆过滤器SBF能够表示的集合规模为
(2i+1-1)n0。 (2)
上述式(2)证明如下:假设可扩展的布鲁姆过滤器SBF包含的过滤器向量序列为{SBF0,SBF1,SBF2,...,SBFi,...},向量长度为m0=m,m1,m2,...,mi,...,每个向量可以表示的最多元素个数为n0,n1,n2,...,ni,...,那么i轮扩展后,SBF能够表示的最大集合规模为ni_max。
SBF第一轮扩展时,长度为2×m的过滤器向量SBF1加到SBF中。为了使SBF1的误判率f≤f0,通过式(1),可以计算出SBF1最多能表示的元素个数n1:
SBF算法i轮扩展时,类似于第一轮扩展的推导,可以直接计算出SBFi向量能够表示的最多元素个数ni:
可扩展布鲁姆过滤器经过i轮扩展后,SBF能够最多表示的元素个数为各个向量最多表示的元素个数之和。即:
ni_max=n0+n1+L+ni=n0+2n0+L+2in0=(2i+1-1)n0. (5)
由上可知,可扩展布鲁姆过滤器SBF当元素增长超过过滤器容量限制时,就产生一个新的长度为前一个布鲁姆过滤器向量的2倍的向量,即新向量长度mi=2mi-1,此时新向量容量限制也为前一个向量容量限制的2倍,即ni=2ni-1。所以虽然布鲁姆过滤器向量长度扩展按指数增长,但是,其可容纳的元素个数也按指数增长,这样一来,扩展次数减少,弥补了向量高速扩展的缺陷。
本发明提供所述可扩展布鲁姆过滤器元素插入方法为:
令c为SBF已经表示的元素个数,则可扩展布鲁姆过滤器查询算法SBF的元素插入流程为:
1.新元素x插入SBF时,首先检查
2.是,创建新的过滤器向量SBFi+1,通过k个哈希函数计算x在SBFi+1的k个映射位,并置位,将x插入到SBFi+1中,c←c+1,i←i+1。
3.否,通过k个哈希函数计算x在SBFi的k个映射位,并置位,将x插入到当前过滤器向量SBFi中,c←c+1。
表示规模为n的动态集合时,SBF需要扩展i轮,包括L个过滤器向量,最后一个向量SBFi表示的元素个数为t个,需要存储总空间为MSBF位,产生的查询误判率为fSBF,其中:
i=log2(n/n0+1) (6)
和
证明如下:假设SBF的初始过滤器向量为BF={n,m,k}。那么经过i轮扩展后,SBF包含的过滤器向量序列的长度变化过程为:
m0=m→m1=2m0→m2=2m1L→mi=2mi-1
随着过滤器向量长度扩展,每个过滤器容量限制从n0到n1的变化过程为:
n0→n1=2n0→n2=2n1L→ni=2ni-1
假设规模为n的动态集合用SBF表示需要扩展i轮。根据式(5),可以得到下面关系:
(2i-1)n0=ni-1_max<n≤ni_max=(2i+1-1)n0 (10)
直接计算式(10),扩展轮数i为:
log2(n/n0+1)-1≤i<log2(n/n0+1)
因为扩展轮数i应为整数,式(6)得证。
很明显,扩展i轮后,使用可扩展布鲁姆过滤表示n个元素,需要的过滤器向量个数为L=i+1log2(n/n0+1)+1。SBF需要的空间MSBF应为各个过滤器向量SBFj(0≤j≤i空间之和:
MSBF=m0+m1+L+mi=m+2m+4m+L2im=m(2i+1-1) (11)
用式(6)中i=log2(n/n0+1)代入式(11),式(8)可证。
可扩展布鲁姆过滤器SBF中前i个向量SBFj可以容纳的元素个数为2jn0(0≤j≤i-1),所以前i个过滤器发生查询误判率为:
从式(12)中发现前i个过滤器的查询误判率完全相同,最后一个过滤器向量表示的元素个数t为:
最后一个过滤器发生查询误判率为:
显然,可扩展布鲁姆过滤器可能产生的误判率为:
由式(12)gBF(mj,k,nj)=fBF(m,k,n0)和式(6)i=log2(n/n0+1),可扩展布鲁姆过滤器SBF误判率能直接计算为式(9)。
本发明所述可扩展布鲁姆过滤器元素查询方法的工作原理如下所述:可扩展布鲁姆过滤器元素查询流程包括:
1.利用SBF查询元素x是否在集合S中,令j=i;
2.通过k个哈希函数计算x在SBFj的k个映射位,检查所有位是否都为1?
3.是。元素x是SBFj表示的元素,x在集合S中,返回True;
4.否。元素x不是SBj表示的元素,需要继续检查x是否为SBFj-1表示的元素,j←j-1,转到2持续检查x是否为当前向量SBFj直至j=-1。
综上所述,本发明主要针对布鲁姆过滤器可扩展性问题,提出了一种有效的可扩展布鲁姆过滤器(Scalable Bloom filter)查询方法和元素插入方法。本发明在数据集元素个数增长的情况下,通过添加长度成倍增长过滤器向量来保持很低的误判率。
因为目前仅存在拆分和动态两种支持集合扩展的布鲁姆过滤器查询方法,而且两个思路十分类似,因此下述部分从三个方面将本发明直接和动态布鲁姆过滤器(DBF)算法进行比较:
1)误判率:
假设可扩展布鲁姆过滤器SBF和动态布鲁姆过滤器DBF的最初过滤器向量相同都是BF,fBF和fDBF分别表示两方法的查询误判率。当集合扩展到规模为N时,二者的关系为:
式(15)证明如下:动态布鲁姆过滤器误判率和可扩展布鲁姆过滤器误判率分别为:
当DBF的最后一个过滤器向量表示的元素个数到n0,SBF最后一个过滤器向量表示的元素个数到2in0时,上式可简化为:
令
那么
因为
0<x<1,极限为0显然成立。 ■
由上述可知,随着集合的不断扩张,动态布鲁姆过滤器的查询误判率增长速度远远大于可扩展布鲁姆过滤器的查询误判率增长速度。即使当集合规模增长到很大时,可扩展布鲁姆过滤器的查询误判率仍可以控制在比较小的范围。
图1是三种算法随着集合的增长误判率的比较。图中布鲁姆过滤器的初始向量长度m=1280bit,使用哈希函数个数k=7,过滤器设计时集合容量限制为n0=133。从图中可以看出,三种算法随着元素集合增长,误判率变化规律。当集合元素个数n<n0时,三种算法误判率相同。随着元素个数增加,标准布鲁姆过滤器误判率急速增长,迅速趋向1,导致标准布鲁姆过滤器不可用。使用动态布鲁姆过滤器,误判率也是随着元素个数增加而增长,但是相对标准布鲁姆过滤器来说,其增长的速度较慢,可以有效的减缓布鲁姆过滤器的增长问题。而可扩展布鲁姆过滤器随着元素个数的增长,误判率增长很慢,远远小于前两种算法。
图2是动态算法和可扩展算法的误判率之比。计算表明,当m=1280bit,k=7,n0=133,n由134扩展到6000时,动态布鲁姆过滤器与可扩展布鲁姆过滤器误判率之比的平均值约为4.69,这说明可扩展布鲁姆过滤器误判率平均为动态布鲁姆过滤器误判率的21.3%。
2)查询时间:
可扩展布鲁姆过滤器查询算法的平均查询时间为
O(k×lgn) (16)
式(16)证明如下:
1、理想情况下,待查询的元素正好表示在最后的过滤器向量SBFi,查询元素是否在集合中只需要一次查询过程,需要k次匹配操作。
2、最坏情况下,必须检查所有的(i+1)过滤器向量才能完成元素是否在集合的查询,因此需要k×(i+1)次匹配操作。
因此,使用可扩展布鲁姆过滤器查询算法的平均查询时间为
O((k+k×(i+1))/2)=O(k×(i+2)/2)
=O(k×(log2(n/n0+1)+2)/2)=O(k×lgn)
发现可扩展布鲁姆过滤器查询时间复杂度和动态布鲁姆过滤器相比明显减少,由线性降低到对数。
图3是三种算法随着集合增长,查询时间比较图。当集合元素个数n<n0,三种算法的查询时间相同,都是常数k次匹配时间。标准布鲁姆过滤器的查询时间与n无关,是和x轴平行的直线,但当n很大时,误判率会越来越高。动态布鲁姆过滤器的查询时间随着集合元素个数线性增长,虽然n不大时,其查询复杂度小于可扩展布鲁姆过滤器,但其随n增长的速率远大于可扩展布鲁姆过滤器。
3)存储空间:
布鲁姆过滤器查询方法在分布式系统中得以广泛应用的最大优势在于存储空间简洁,本节讨论动态和可扩展布鲁姆过滤器存储空间的关系。
假设可扩展布鲁姆过滤器SBF和动态布鲁姆过滤器DBF的最初过滤器向量相同都是BF,所需的存储空间分别为MDBF和MSBF。当集合规模N→+∞时,下面关系成立
这里1-是小于1的数,在1的左边趋向1,2+大于2,在2的右边趋向2。
式(17)证明如下:将动态布鲁姆过滤器和可扩展布鲁姆过滤器存储空间表达式进行缩放,得:
(N/n0)·m≤MDBF≤(N/n0+1)·m
进而
上式化简得
图4三种方法存储空间比较,y轴表示的是存储空间,单位bit,x轴是集合规模。标准布鲁姆过滤器的存储空间与n无关,但当n很大时,误判率会越来越高,误判率变得不可容忍。动态和可扩展方法的存储空间随着元素增长而阶梯式增长,动态算法的阶梯更像现实生活中的楼梯,每级相等,而可扩展布鲁姆过滤器的阶梯逐渐变宽,向量长度按指数阶梯式增长,而跳变间隔也按指数阶梯式增长,SBF算法扩展轮数远远小于DBF算法。
图5进一步说明了式(17),可扩展布鲁姆过滤器最坏情况下的存储空间不过是动态布鲁姆过滤器的2倍。
由以上可知,本发明是一种有效的可扩展布鲁姆过滤器(Scalable Bloomfilter)和基于此的查询方法,在数据集元素个数增长的情况下,通过添加长度成倍增长过滤器向量来保持很低的误判率。理论证明和实验分析表明新的可扩展布鲁姆过滤器以比动态布鲁姆过滤器占有最多两倍的空间为代价,其元素查询误判率始终远远小于动态布鲁姆过滤器,新方法查询时间按对数增长,解决了现有算法查询时间增长过快问题,和目前的可扩展方法相比具有很大的性能优势。
附图说明
图1三种方法误判率比较曲线图;
图2误判率之比fDBF/fSBF曲线图;
图3三种方法查询时间比较曲线图;
图4三种方法存储空间比较曲线图;
图5SBFs和DBFs存储空间比曲线图;
图6H3哈希函数逻辑实现原理框图;
图7可扩展哈希函数设计示意图;
图8基于H3哈希函数实现的可扩展布鲁姆过滤器元素插入流程图;
图9基于H3哈希函数实现的可扩展布鲁姆过滤器元素查询流程图;
图10可扩展布鲁姆过滤器元素查询逻辑实现示意图。
具体实施方式
本实施例提供一种基于H3哈希函数实现的可扩展布鲁姆过滤器,其中采用的H3哈希函数是Carter和Wegman定义的一类通用哈希函数(universal Hash)。H3函数具有很强的散列性,是一种常见的布鲁姆过滤器的实现函数;又因其对每个输入元素的哈希计算仅需要简单的“与”和“异或”运算,便于实现,尤其是硬件实现,是计算机硬件最常用的哈希函数之一。
H3哈希函数是一个线性转换BT=Qr×wAT,将w-bit长度的元素A=a1a2Law转换为r-bit的哈希地址B=b1b2Lbr,即
其中转换矩阵Qr×w是一个0,1矩阵,每个转换矩阵对应一个H3哈希函数,其乘法运算和加法运算分别采用二进制与AND(g)和二进制异或XOR()运算,即
bi=(a1·qu1)(a2·qi2)L(aw·qiw)(i=1,2,L,r)
如果转换矩阵用列向量表示:Qr×w=(d1d2Ldw),将aigdi表示成:
那么:
BT=h(A)=(a1gd1)(a2gd2)L(awgdw) (18)
H3哈希函数示例。设w=8,r=2,输入元素经哈希函数计算由{0L 255}→{0L 3}。转换矩阵为:
则元素69和105的哈希地址可直接通过式(18)计算。
H3哈希函数采用的是逻辑运算AND(g)和异或XOR(),便于硬件或软件实现,如图6所示。
H3哈希函数由W个“与门”和一个“异或门”组成,其移位器(Shifier)用于获得输入元素的各位,对于每个哈希函数,列向量d1,d2,L,dw∈[0,2r-1]相互独立,那么“异或门”出来的结果就是哈希映射地址。
为了适应可扩展布鲁姆过滤器向量长度的调整,需采用哈希地址可调的哈希函数,下面介绍可扩展布鲁姆过滤器的哈希函数设计。
1.在哈希函数设计之前,定义以下参数:
n0:初始化过滤器向量最多能容纳的元素个数
w:集合元素的比特数
m:初始过滤器向量长度
f0:能容忍的最大误判率
N:预测的集合最大规模
2.令r=log2m,并计算哈希函数个数k
3.随机产生k个R×w的0,1矩阵QR×w[1],QR×w[2],...QR×w[k]作为可扩展布鲁姆过滤器的转换矩阵,其中
4.采用上述矩阵的前r行组成的转换矩阵作为元素的映射哈希函数,获取哈希地址将SBFr-log2m向量置位
5.可扩展布鲁姆过滤器每扩展一次,r←r+1,转到4
基于H3哈希函数的可扩展过滤器元素插入方法为:
可扩展布鲁姆过滤器元素插入流程如图8所示。新元素加入时,如果是第一个元素,产生一个符合设计初始化要求的标准布鲁姆过滤器,设置初始向量长度m0,最初的集合元素个数容量限制为n0,布鲁姆过滤器扩展轮数为0(表明还没有经过一次扩展),当前活动布鲁姆过滤器为刚产生的布鲁姆过滤器向量,所容纳的元素个数为0。新元素(element)插入时,首先需要判断现有的过滤器所容纳的元素个数是否已经达到过滤器容量限制,如超过限制,产生一个新的长度和容量均为当前活动布鲁姆过滤器2倍的过滤器向量,完成过滤器扩展,过滤器总容量限制同时也应加上新增加的过滤器容量。
完成过滤器扩展操作后,新元素插入操作需要根据当前的扩展轮数,按照上节的可扩展布鲁姆过滤器哈希函数设计,得到当前扩展轮数的相对应的k个H3哈希函数,然后计算出元素对应的k个向量位置,在当前活动布鲁姆过滤器置位(当前活动过滤器向量总是最后一个加入的过滤器向量),完成新元素的插入过程。
基于H3哈希函数的可扩展过滤器元素查询方法是:
基于图7的可扩展哈希函数设计,现给出由扩展后哈希地址反推到扩展前哈希地址的方法,该方法通过移位操作,由元素在最后一轮扩展的哈希地址可以一直反推到向量初始化时的哈希地址,只需一次哈希计算,便可以完成元素在各个过滤器向量的查找。
假设可扩展布鲁姆过滤器j轮扩展后的哈希转换矩阵为Q(r+j)×w[u],元素在过滤器向量SBFi的映射地址为Addrj[u](1≤u≤k),元素在过滤器向量SBFj-1的映射地址为Addrj-1[u](1≤u≤k),二者的关系为:
Addrj-1[u]=Addrj[u]>>1(1≤u≤k) (20)
基于上述式(20),可扩展布鲁姆过滤器查询算法流程可以优化为图9所示。为了判断元素(element)是否在集合中,首先按照最终扩展轮数计算对应的过滤器向量SBFi的k个哈希映射地址,判断是否是最后一轮插入的元素。如是,就返回True,表明元素在集合中;如不是,将这k个地址进行移位操作,得到其在过滤器向量SBFi-1的k个映射地址,判断是否是上一轮插入的元素,如是,表明元素在集合,否则,继续检查是否是再上一轮,如此循环,直至检查完所有的过滤器向量。
式(20)能够简化可扩展布鲁姆过滤器的软硬件实现。查询元素是否在集合中最坏需要检查所有的(i+1)个过滤器向量,但是只需要计算元素在最后一个过滤器向量SBFi的哈希地址,其他的地址全都可以通过移位操作直接推导。图10是可扩展的布鲁姆过滤器元素查询判断逻辑实现。
基于H3哈希函数的可扩展过滤器实验结果如下所述:
本实施例进行仿真实验来验证可扩展布鲁姆过滤器查询算法的性能,为了进行比较,本实施例具体实现了可扩展布鲁姆过滤器和动态布鲁姆过滤器的元素插入和元素查询。为了简化实验过程,直接采用的32bit整数集合作为元素集合,数据集合的元素是由计算机随机产生的32bit的无符号整数,元素范围为(0,232-1),H3哈希函数转换矩阵由32个随机产生的列向量组成。随机产生32×32的转换矩阵,作为算法实现中的哈希函数。
对于长度为m=131072=217的标准布鲁姆过滤器,可扩展H3哈希函数的初始列向量长度为r=17。仿真实验在HP服务器上进行,其具体的配置为:操作系统:Windows Server 2003,CPU:InterXeonTM 3.0GHz×2,内存:2.00GBDDR。
本实施例中集合规模从1,000,000到6,000,000,哈希函数个数k=6,k=8和k=11。对每一种算法参数组合进行100次实验。实验过程分为两步:
首先按照图8、图9完成集合元素插入,元素插入过程中,根据需要添加新的过滤器向量,完成过滤器算法的扩展;当所有的元素都映射到两种过滤器算法之后,可以直接获得两算法的存储空间。
第二步骤,实现查询算法,评估查询误判率和查询时间。为了得到查询误判率,采取100,000个不在集合中的元素完成布鲁姆过滤器查询,进行误判数目统计。如果所需查找元素的对应k个映射位置均为1,表明该元素在集合中,这就出现了误判,因为这100,000个元素都是不在集合中的元素。计算误判率为累计误判元素的个数和不在集合中元素总数的比值。同时,我们采取直接在SBF和DBF代码中加入计时器的方法获得100,000个元素的查询总时间。
对于上述实验过程,每个实验参数的组合,随机产生100次数据集合,完成100次实验,实验结果取100次的平均值。
集合规模(n) | k | SBF误判率 | DBF误判率 | SBF查询时间 | DBF查询时间 | SBF存储空间 | DBF存储空间 | SBF扩展次数 | DBF扩展次数 | ||||||
实验结果 | 理论结果 | 实验结果 | 理论结果 | 平均值 | 标准差 | 平均值 | 标准差 | ||||||||
平均值 | 标准差 | 平均值 | 标准差 | ||||||||||||
1,000,000 | 6 | 0.0063 | 0.00024 | 0.0062 | 0.1078 | 0.0009 | 0.1079 | 1221 | 9.9843 | 2481.3 | 12.004 | 16646144 | 16121856 | 6 | 122 |
8 | 0.0039 | 0.0002 | 0.0038 | 0.0679 | 0.001 | 0.0677 | 1596 | 17.808 | 3116.8 | 14.888 | 16646144 | 16121856 | 6 | 122 | |
11 | 0.0031 | 0.00019 | 0.003 | 0.0545 | 0.0008 | 0.0544 | 2160.2 | 11.631 | 4066 | 44.487 | 16646144 | 16121856 | 6 | 122 | |
2,000,000 | 11 | 0.0035 | 0.0002 | 0.0034 | 0.106 | 0.0009 | 0.1059 | 2195.7 | 19.075 | 6084.4 | 17.785 | 33423360 | 32112640 | 7 | 244 |
3,000,000 | 11 | 0.0038 | 0.0002 | 0.0037 | 0.1547 | 0.0012 | 0.1546 | 2235 | 38.297 | 8054.2 | 18.658 | 66977792 | 48103424 | 8 | 366 |
4,000,000 | 11 | 0.0041 | 0.0002 | 0.0039 | 0.2006 | 0.0014 | 0.2006 | 2240 | 6.846 | 9815.9 | 17.202 | 66977792 | 64094208 | 8 | 488 |
6,000,000 | 11 | 0.0044 | 0.00019 | 0.0041 | 0.2854 | 0.0013 | 0.2853 | 2791.3 | 85.313 | 15828 | 144.67 | 134086656 | 96075776 | 9 | 732 |
从表中,发现:
1.实验获得的误判率和理论计算值相当一致。
2.当初始过滤器向量m=131072bit,n0=8192,集合规模扩展到n=1,000,000,SBF
2.当初始过滤器向量m=131072bit,n0=8192,集合规模扩展到n=1,000,000,SBF算法需要进行6次扩展,共需16,646,144bit,而DBF算法需要进行122次扩展,共需16,121,856bit。SBF算法比DBF算法消耗稍多的空间,但是和DBF算法相比,误判率降低18倍,查询时间降低到一半。
3.当集合规模n=1,000,000,哈希函数个数k=11,SBF算法的查询误判率为0.003051,而DBF算法的误判率为0.054475,是SBF算法的18倍。当集合规模n=6,000,000是最初设计容量n0=8192的732倍时,仍然采用哈希函数个数k=11,SBF和DBF算法的查询误判率分别为0.004389和0.285391,此时DBF算法的误判率时SBF算法的65倍。随着集合的增长,DBF查询误判率增长速度大大超过SBF。
4.使用SBF算法查询100,000个元素仅需要2秒左右,那么在3GHz的机器中,一次元素查询只需要20μs,查询时间在实际应用中是可以接受的。
Claims (2)
1、一种可扩展布鲁姆过滤器查询方法,其特征在于,该方法为:
1)布鲁姆过滤器的扩展:当可扩展布鲁姆过滤器SBF所表示的集合元素增长超过可扩展布鲁姆过滤器容量限制时,添加一个长度为前一个可扩展布鲁姆过滤器向量的2倍的向量,即添加了可扩展布鲁姆过滤器向量的向量长度mi=2mi-1,此时添加了可扩展布鲁姆过滤器向量的向量容量限制也为前一个向量容量限制的2倍,即ni=2ni-1;
2)可扩展布鲁姆过滤器元素查询步骤:
第一步:利用SBF查询元素x是否在集合S中,令j=i;
第二步:通过k个哈希函数计算x在SBFj的k个映射位,检查所有位是否都为1;
第三步:所述结果为是时,元素x是SBFj表示的元素,x在集合S中,返回True;
第四步:所述结果为否时,元素x不是SBFj表示的元素,需要继续检查x是否为SBFj-1表示的元素,j←j-1,转到2持续检查x是否为当前向量SBFj直至j=-1。
2、一种如权利要求1所述可扩展布鲁姆过滤器查询方法的元素插入方法,其特征在于,若c为SBF已经表示的元素个数,则所述可扩展布鲁姆过滤器SBF查询方法的元素插入流程为:
第一步,新元素x插入SBF时,首先检查
成不成立;
第二步,如果步骤1中式成立,创建新的过滤器向量SBFi+1,通过k个哈希函数计算x在SBFi+1的k个映射位,并置位,将x插入到SBFi+1中,c←c+1,i←i+1;
第三步,如果步骤1中式不成立,通过k个哈希函数计算x在SBFi的k个映射位,并置位,将x插入到当前过滤器向量SBFi中,c←c+1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100353855A CN100487704C (zh) | 2007-07-18 | 2007-07-18 | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100353855A CN100487704C (zh) | 2007-07-18 | 2007-07-18 | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101082923A true CN101082923A (zh) | 2007-12-05 |
CN100487704C CN100487704C (zh) | 2009-05-13 |
Family
ID=38912496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100353855A Expired - Fee Related CN100487704C (zh) | 2007-07-18 | 2007-07-18 | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100487704C (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110171A (zh) * | 2011-03-22 | 2011-06-29 | 湖南大学 | 基于树形结构的布鲁姆过滤器的查询与更新方法 |
CN103559215A (zh) * | 2013-10-14 | 2014-02-05 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN104252604A (zh) * | 2014-09-01 | 2014-12-31 | 苏州锐盾信息科技有限公司 | 一种基于数据库的积木式动态加密方法 |
CN105320654A (zh) * | 2014-05-28 | 2016-02-10 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
CN106096466A (zh) * | 2015-04-27 | 2016-11-09 | 张大强 | 大规模无线射频系统中丢失标签的快速检测方法 |
CN103559215B (zh) * | 2013-10-14 | 2016-11-30 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN108460030A (zh) * | 2017-02-17 | 2018-08-28 | 北京大学 | 一种基于改进的布隆过滤器的集合元素判断方法 |
CN110933149A (zh) * | 2019-11-18 | 2020-03-27 | 湖南警察学院 | 一种云存储安全去重方法和系统 |
CN111857850A (zh) * | 2020-07-21 | 2020-10-30 | 掌阅科技股份有限公司 | 过滤器的初始化方法、电子设备及存储介质 |
CN112214534A (zh) * | 2020-10-21 | 2021-01-12 | 湖南大学 | 对有缺失的数据进行近似查询的方法、系统及存储介质 |
US20230221864A1 (en) * | 2022-01-10 | 2023-07-13 | Vmware, Inc. | Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table |
CN114018787B (zh) * | 2021-10-23 | 2023-10-20 | 广州市艾贝泰生物科技有限公司 | 颗粒检测单元、混合系统及混合方法 |
-
2007
- 2007-07-18 CN CNB2007100353855A patent/CN100487704C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110171B (zh) * | 2011-03-22 | 2013-05-22 | 湖南大学 | 基于树形结构的布鲁姆过滤器的查询与更新方法 |
CN102110171A (zh) * | 2011-03-22 | 2011-06-29 | 湖南大学 | 基于树形结构的布鲁姆过滤器的查询与更新方法 |
CN103559215A (zh) * | 2013-10-14 | 2014-02-05 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN103559215B (zh) * | 2013-10-14 | 2016-11-30 | 西安交通大学 | 一种面向内容网络中内容名存储结构的设计方法 |
CN105320654B (zh) * | 2014-05-28 | 2018-08-31 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
CN105320654A (zh) * | 2014-05-28 | 2016-02-10 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
CN104252604A (zh) * | 2014-09-01 | 2014-12-31 | 苏州锐盾信息科技有限公司 | 一种基于数据库的积木式动态加密方法 |
CN104252604B (zh) * | 2014-09-01 | 2017-04-26 | 苏州锐盾信息科技有限公司 | 一种基于数据库的积木式动态加密方法 |
CN106096466A (zh) * | 2015-04-27 | 2016-11-09 | 张大强 | 大规模无线射频系统中丢失标签的快速检测方法 |
CN108460030A (zh) * | 2017-02-17 | 2018-08-28 | 北京大学 | 一种基于改进的布隆过滤器的集合元素判断方法 |
CN110933149A (zh) * | 2019-11-18 | 2020-03-27 | 湖南警察学院 | 一种云存储安全去重方法和系统 |
CN111857850A (zh) * | 2020-07-21 | 2020-10-30 | 掌阅科技股份有限公司 | 过滤器的初始化方法、电子设备及存储介质 |
CN112214534A (zh) * | 2020-10-21 | 2021-01-12 | 湖南大学 | 对有缺失的数据进行近似查询的方法、系统及存储介质 |
CN112214534B (zh) * | 2020-10-21 | 2022-03-11 | 湖南大学 | 对有缺失的数据进行近似查询的方法、系统及存储介质 |
CN114018787B (zh) * | 2021-10-23 | 2023-10-20 | 广州市艾贝泰生物科技有限公司 | 颗粒检测单元、混合系统及混合方法 |
US20230221864A1 (en) * | 2022-01-10 | 2023-07-13 | Vmware, Inc. | Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table |
Also Published As
Publication number | Publication date |
---|---|
CN100487704C (zh) | 2009-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100487704C (zh) | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 | |
EP2146292B1 (en) | Method and apparatus for extracting information from a database | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN110599490A (zh) | 一种遥感影像数据存储方法和系统 | |
CN101827137A (zh) | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 | |
CN111625534A (zh) | 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法 | |
CN101141389A (zh) | 增强多位Trie树查找方法和装置 | |
CN108460030B (zh) | 一种基于改进的布隆过滤器的集合元素判断方法 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN101335509B (zh) | 产生正余弦信号的方法及数控振荡器 | |
CN113315705B (zh) | 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置 | |
CN105574021A (zh) | 一种数据库的数据压缩方法和装置 | |
Wang et al. | An hp-version spectral collocation method for nonlinear Volterra integro-differential equation with weakly singular kernels | |
CN101079897B (zh) | 一种便于存储节点数量扩增的并行存储系统构造方法 | |
Liu et al. | Several classes of linear codes with a few weights from defining sets over F _p+ u F _p F p+ u F p | |
CN103593159A (zh) | 一种高效率高精度除法实现方法及装置 | |
Soyer et al. | Sparse self‐stress matrices for the finite element force method | |
CN107562762A (zh) | 数据索引构建方法及装置 | |
CN105930104B (zh) | 数据存储方法和装置 | |
JP5949561B2 (ja) | 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム | |
Wang et al. | An iterative algorithm to eliminate edges for traveling salesman problem based on a new binomial distribution: Eliminating edges for TSP | |
Dette et al. | Optimal designs for free knot least squares splines | |
JP2017519317A (ja) | メモリ中にマルチアクセスを行う方法、装置、及びメモリシステム | |
Zamastil | Multidimensional WKB approximation for particle tunneling | |
US20240220500A1 (en) | Constant time data structure for single and distributed networks |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090513 Termination date: 20100718 |