CN110716931A - 一种基于哈希指纹的布鲁姆过滤器 - Google Patents
一种基于哈希指纹的布鲁姆过滤器 Download PDFInfo
- Publication number
- CN110716931A CN110716931A CN201910839187.7A CN201910839187A CN110716931A CN 110716931 A CN110716931 A CN 110716931A CN 201910839187 A CN201910839187 A CN 201910839187A CN 110716931 A CN110716931 A CN 110716931A
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- bucket
- hashed
- probability
- hash
- 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.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 42
- 239000013598 vector Substances 0.000 claims description 23
- 238000009826 distribution Methods 0.000 claims description 14
- 238000000034 method Methods 0.000 abstract description 12
- 230000014509 gene expression Effects 0.000 description 13
- 238000003780 insertion Methods 0.000 description 12
- 230000037431 insertion Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000009827 uniform distribution Methods 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于哈希指纹的布鲁姆过滤器,该基于哈希指纹的布鲁姆过滤器通过如下方式形成:将计数型布鲁姆过滤器的结构分隔成若干子布鲁姆过滤器;将每一维子布鲁姆过滤器再次分隔成若干个桶;之后引入哈希指纹方法,使每个桶的存储单元通过对应哈希函数计算得到。本发明提出的基于哈希指纹的布鲁姆过滤器实现了集合元素的简洁存储、快速查询。使得该基于哈希指纹的布鲁姆过滤器(HFBF)具有较低错误概率和计算复杂度的同时,也能保持较高的空间利用率。
Description
技术领域
本发明涉及空间高度复用的概要数据结构布鲁姆过滤器,更具体地,特别是指一种基于哈希指纹的布鲁姆过滤器。
背景技术
随着互联网规模的不断扩大、用户数量的快速膨胀、业务环境的日趋复杂,共享数据规模呈现几何增长,给网络资源的存储、访问、交互以及管理带来了巨大的挑战。如何快速表示和查询大规模数据、有效提取和存储内容概要信息是网络和分布式系统资源共享的关键,也一直是国内外学术界的研究热点。
布鲁姆过滤器(Bloom Filter)是一种空间高度复用的概要数据结构 (SynopsisData Structure),支持集合元素表示和查询,广泛应用于P2P网络、流量测量以及分布式系统中,能够满足高速网络发展中的资源交互需求。
布鲁姆过滤器采用一个位串向量表示,既能支持集合元素的表示和查询,又能有效地过滤不属于集合的元素。其算法结构的实质是将集合中的元素通过k个哈希函数映射到位串向量中,一个元素仅占用k个比特位。与传统的存储和查询算法(如:树型查询算法)相比较,布鲁姆过滤器所需空间与元素的自身大小无关,仅与元素映射到的向量位数有关,大大节约了存储空间。同时,该结构还具有计算复杂度低、并行程度高等优势,使之特别适合于硬件实现。因此,Bloom Filter具有很好的实用价值。
近年来,随着覆盖网和P2P网络的广泛应用,布鲁姆过滤器算法在网络领域得到了广泛应用,包括:
(1)P2P网络节点协作交互。在P2P网络中,Bloom Filter主要用于汇总网络节点的资源信息,并形成一个比特向量。系统中的每个节点拥有若干个这样的汇总向量,每个向量代表着该节点某个搜索方向上拥有的信息集合。当节点处理某个定位对象的请求时,通过查询这些向量,能够选择出最佳的搜索方向,从而避免了盲目搜索的低效性。
(2)高速IP互联网流量测量。Abhishek KumarJun(Jim)Xu在其论文 Space-CodeBloom Filter for EfficientPer-Flow Traffic Measurement中将空码布鲁姆过滤器(Space-code Bloom Filter)用于高速骨干网的逐流流量测量。C.Estan在其论文NewDirections in TrafficMeasurement and Accounting中应用多级布鲁姆过滤器(Multistage Filters)进行大流检测。电子学报“高速网络超链接主机检测中的流抽样算法研究”基于Bloom Filter数据结构提出了一种IP流的抽样方法,该方法具有10G的处理能力和较小的空间复杂度。Heeyeol Y,Mahapatra R在其论文A memory-efficienthashingby multi-predicate Bloom filters for packet classification中应用BloomFilter进行报文分类,提高了报文处理的并行速度。
(3)资源路由,利用Bloom Filter记录相邻节点组或节点生成树上的资源信息,通过一个多级的Bloom Filter结构存储资源的路由分级信息,进而快速定位最短路径路由并确定到达目的节点的跳数。
(4)分组路由,又名数据帧路由标签,基于Bloom Filter表示的路由标签信息封装在IP报文字段中,来判断数据帧是否经过重复的路由器,弥补了传统网络设计中仅通过TTL控制路由环路的缺陷。
目前,对Bloom Filter自身结构的研究也有了重大进展。“计数型”布鲁姆过滤器(Counting Bloom Filter,NCBF)是布鲁姆过滤器的一种重要的扩展结构,能够支持集合元素的动态插入、动态删除以及近似计数查询。
“压缩型”布鲁姆过滤器(Compressed Bloom Filter,CBF)数据结构,针对分布式Web Cache信息共享网络应用,该结构基于“信息压缩”理论,通过引入算术编码技术,能够有效地利用空间存储资源。
“光谱型”布鲁姆过滤器(Spectral Bloom Filter,SBF),用元素对应的 k个Counter计数器中最小的计数器作为元素出现的频度估计,从而能够过滤掉频度小于一定阈值的元素。
“分档型”布鲁姆过滤器(Basket Bloom Filter,BBF),采用“区分服务”的思想,将集合元素分成L档,并通过对高代价子集合分配多数目哈希函数,降低查询失效率;对低代价子集合分配少量的哈希函数,适当增加查询失效率,使集合查询失效总代价最小。
NCBF的计算复杂度依赖于哈希函数的个数k,即使其存储集合元素的个数为空,更新每个元素也要访问k次存储器,系统开销大;
SBF、CBF以及BBF都是针对不同的应用,对NCBF进行了改进,提升了Bloom Filter的查询性能。但是,也存在一定的缺陷:
SBF和CBF算法复杂,简单可用性较差,比NCBF更加难于硬件实现;
BBF试图根据查询失效率,动态改变哈希函数的个数,但是基于遗传算法的求解比较复杂,不适宜于计算敏感型的应用场合。
发明内容
针对这些问题,本发明提出了一种新的基于哈希指纹的布鲁姆过滤器结构,简称HFBF。该结构通过引入“哈希指纹”、布鲁姆过滤器两次分割、基于桶负载存放的方法,实现了集合元素的简洁存储、快速查询。
基于“微分方程”和“概率论”的相关知识,对该模型进行了理论分析和求解,建立了错误概率和计算复杂度的关系表达式,论证了分布特性。实验证明:与NCBF相比,该布鲁姆过滤器HFBF具有较低错误概率和计算复杂度的同时,也能保持较高的空间利用率。
本发明提出的基于哈希指纹的布鲁姆过滤器通过如下方式形成:将计数型布鲁姆过滤器的结构分隔成多维子布鲁姆过滤器;将每一维子布鲁姆过滤器再次分隔成若干个桶;每个桶的存储单元通过对应哈希函数计算得到。
根据本发明的一些实施例,每个桶中的存储单元数量相等。
根据本发明的一些实施例,哈希指纹包括:桶索引,用于快速定位相应的桶;单元索引,用于快速定位相应的存储单元;以及元素标识,用于区分每个集合元素。
根据本发明的一些实施例,基于哈希指纹的布鲁姆过滤器生成对应每个子布鲁姆过滤器的哈希函数,顺序计算集合元素的哈希值,直到找到负载未满的桶,并将元素置于存储单元中。
根据本发明的一些实施例,当元素对应的桶都是满负载时,元素被丢弃。
根据本发明的一些实施例,基于哈希指纹的布鲁姆过滤器的性能指标包括:
错误概率,错误概率为误判概率和溢出概率的总和;
计算复杂度;计算复杂度为每个元素插入时,平均访问存储单元的次数;
空间利用率;空间利用率为每个元素占用的空间大小。
根据本发明的一些实施例,哈希空间H={hj,j=1,…,k},每个哈希函数hj(j=1,…,k)对应子布鲁姆过滤器Tj,每个子布鲁姆过滤器T1,T2,…,Tj,…,Tk分别对应α1m,α2m,…,αjm,…,αkm个桶,误判概率经计算得到为:
其中,le为元素标识符长度,α1为第一维子布鲁姆过滤器所包含桶数占总桶数的比例系数,∑αi=1,
误判概率不受几何元素个数、向量位数以及哈希函数个数的影响。
根据本发明的一些实施例,根据哈希指纹的布鲁姆过滤器的集合分布,元素的存放在子布鲁姆过滤器中依照维度次序存放。
根据本发明的一些实施例,桶的深度和桶中存储单元的长度基于元素的分布特性调整,将分布密集的子集合分配至较深的桶。
根据本发明的一些实施例,当元素定位到满载的桶时,计算复杂度增加1个单位。
本发明具有以下有益效果:
1.引入了“哈希指纹”的概念。哈希指纹主要包括桶索引、单元索引和元素标识。桶索引和单元索引分别用于快速定位相应的桶和存储单元,元素标识用来区分每个集合元素。根据误判概率的表达式,可知HFBF的误判概率不再受集合元素个数n、向量位数m以及哈希函数个数k的影响。
2.构造了HFBF的几何分布结构。HFBF将NCBF分割成呈几何分布的若干-GBF,每个-GBF等分成若干等深度的桶。由于HFBF的“几何分布”特性,使得大部分被插入或者查询的元素存放在前几维-GBF 中,降低了计算复杂度。
3.基于桶负载存储的哈希冲突处理机制。元素插入时,顺序计算每个-GBF哈希桶地址,直到找到负载未满的桶存储。如果桶的深度越大,桶就能容纳更多的哈希冲突元素,能进一步降低溢出概率。
4.基于“微分方程”理论,建立了-GBF模型,并对HFBF模型进行了求解,给出了溢出概率和计算复杂的解析表达式。实验证明:与NCBF 相比,HFBF具有较低的错误概率和计算复杂度的同时,也能保持较高的空间利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为现有技术的布鲁姆过滤器结构示意图;
图2为现有技术的布鲁姆过滤器元素误判示意图;
图3为现有技术的计数型布鲁姆过滤器结构示意图;
图4为本发明提供的基于哈希指纹的布鲁姆过滤器结构示意图;
图5为本发明提供的简单几何布鲁姆过滤器结构示意图;
图6为根据本发明的一些实施例中,给定n=m,h=3条件下,fi(t)(i=0,1,2,3)的变化曲线图;
图7为根据本发明的一些实施例中,n=m,n=2m,n=3m条件下,f3(t) 的变化曲线图;
图8为根据本发明的一些实施例中,给定n/m=1条件下,溢出概率相对于不同h的变化曲线图;
图9为根据本发明的一些实施例中,给定h=3条件下,溢出概率相对不同的n/m的变化曲线图;
图10为根据本发明的一些实施例中,给定h=4条件下,溢出概率相对于不同的n/m的变化曲线图;
图11为根据本发明的一些实施例中,给定n/m=1条件下,溢出概率相对于计算复杂度的变化曲线图;
图12(a)为根据本发明的一些实施例中,当n较小时均衡增益变化曲线图;
图12(b)为根据本发明的一些实施例中,当n趋于很大时均衡增益变化曲线图;
图13为根据本发明的一些实施例中的错误概率对比曲线图;
图14为根据本发明的一些实施例中的错误概率与计算复杂度柱状关系对比图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例提出了一种基于哈希指纹的布鲁姆过滤器。
首先对于本发明中涉及的布鲁姆过滤器(Bloom Filter)的阐述如下:图1为现有技术的布鲁姆过滤器结构示意图。Bloom Filter的核心是一个V 向量和一组哈希函数。设集合S={s1,s2,…,sn}共有n个元素,通过k个哈希函数h1,h2,…,hk映射到长度为c的向量V中。每个哈希函数相互独立且取值范围为{0,1,…,c-1}。集合到向量V的映射过程1如下:将向量V所有比特位2初始化为0;当元素si插入集合S时,计算hj(si)(1≤j≤k),若hj(si)=q,则令BF[q]=1,将向量V对应位置置位;当查询元素x是否属于集合S时,检查向量V的k个位置(h1(x),h2(x),…,hk(x))是否为1,如果其中有一个为0,则x不属于S;若全部值为1,则x可能属于S。
在现有技术中,Bloom Filter在查询时会出现“假阳性误判”,即将不属于集合的元素误判为属于该集合。图2为现有技术的布鲁姆过滤器元素误判示意图,假设元素x不属于集合S,属于集合S的元素x1,x2对应位置置位,x被误判为属于该集合。一般用三元组{n,c,k}三元组来表示Bloom Filter算法,假设哈希函数取值服从均匀分布,当集合中所有元素映射完毕后(即执行nk次插入操作),V向量中任意一位为0的概率为:(1-1/c)kn≈e-nk/c。当元素出现误判时,向量V中对应的k个比特位2都必须为1,即元素的误判概率为:
fBF(n,c,k)=(1-e-kn/c)k=exp(kln(1-e-nk/c)) (1)
其中kopt为哈希函数的个数,应为整数kopt=[ln2·(c/n)]
其次对于本发明中涉及的计数型布鲁姆过滤器(NCBF)的阐述如下:
Bloom Filter能够支持集合元素的插入和散列查询,但不能支持元素的删除。图3为现有技术的计数型布鲁姆过滤器结构示意图,NCBF可以解决这一问题:将向量V的每一维i(i∈{1,2,…c})设置成一个计数器,初值为0;当要增加集合元素x时,令c(hj(x))=c(hj(x))+1,(j=1,2,…,k);当要删除集合元素x时,令c(hj(x))=c(hj(x))-1,(j=1,2,…,k)。根据文献:当一组无重复的元素插入到NCBF中时,每计数器用4bit就可以保证其溢出概率满足 P(max(c(i))≥16)≤1.37×10-15c。根据(1)式,布鲁姆过滤器的误判概率只和{n,c,k}有关,与每个计数器的大小无关。所以,NCBF的“假阳性”错误概率和Bloom Filter相等,即
fNCBF(n,c,k)=fBF(n,c,k)=(1-p)k=(1-e-kn/c)k (2)
虽然NCBF可以支持元素的动态删除,但是NCBF的计数器向量V的每个计数器需要根据最大可能的元素频率值设置其计数范围,因而NCBF 的空间效率较低。特别是当元素频率服从重尾分布(如:网络数据流的流量分布)时,NCBF的空间浪费比较严重。过大的计数器会使NCBF所需的存储空间成倍增加;而过小的计数器很容易造成元素表示时计数器溢出。因此,在实际应用时,需要对NCBF中计数器的长度进行预先估计,并根据集合元素的统计分布规律,谨慎选择计数器的长度。
NCBF基于哈希映射将所有的集合元素复用到一个计数器向量,每次更新操作都需要访问k个相关的计数器。
为了降低计算复杂度,HFBF模型对NCBF进行了两次分割:将NCBF 结构分割成若干子布鲁姆过滤器,并尽可能在前几维布鲁姆过滤器中完成元素的更新操作;将每维布鲁姆过滤器再次分割成若干等深度的桶。另外,通过引进“哈希指纹”的方法,使得HFBF的误判概率不再受集合元素个数n、向量位数m以及哈希函数个数k的影响。
图4为本发明提供的基于哈希指纹的布鲁姆过滤器结构示意图,HFBF 由k维子布鲁姆过滤器T1,T2,…,Tj,…,Tk组成,每维子布鲁姆过滤器Tj包含若干个桶,每个桶由相等数量的存储单元组成,每桶深度为h,集合元素存放在桶单元中。
设哈希空间H={hj,j=1,…,k},每个哈希函数hj(j=1,…,k)对应子布鲁姆过滤器Tj,每个子布鲁姆过滤器T1,T2,…,Tj,…,Tk分别对应α1m,α2m,…,αjm,…,αkm 个桶,其中∑αi=1,则第j个子布鲁姆过滤器Tj对应的桶向量BV[j]即为
HFBF引入了“哈希指纹”(Hash Fingerprint)的概念,即每个桶的存储单元值是由对应哈希函数计算得到的,其内容主要包括桶索引(Bucket Index, BI)、单元索引(CellIndex,CI)和元素标识(Element Identifier,EI)。桶索引和单元索引分别用于快速定位相应的桶和存储单元,元素标识用来区分每个集合元素。因此,对于元素当且仅当存在某集合元素x∈S,使得H(y)=H(x)时,HFBF才会产生误判。
如下为用伪码给出了HFBF元素的插入和查询流程:
插入流程:
查询流程:
删除过程和查询过程类似,就不再赘述。其中最为重要的步骤为:HFBF 生成对应每个Tj的哈希函数hj,hj在[1,αjm]值域上服从均匀分布;顺序计算集合元素的哈希值——“BI+CI+EI”,直到找到负载未满的桶(即:桶深度小于h),并将元素值置于该存储单元中。不难看出,如果某元素对应的k 个桶都是满负载的,就会出现“溢出”现象。
为了对HFBF进行性能评价,本发明定义了以下三项指标:
定义1,错误概率e:对于任意的x∈S,存在H(y)=H(x)时,会产生“误判概率”fGBF;当集合元素x插入时,如果sizeof(h1(x)),…,sizeof(hk(x))全部等于h(即对应的k个桶都已满载),则元素x将被丢弃,此现象发生的概率为“溢出概率”γGBF。错误概率即为e=fGBF+γGBF。
定义2,计算复杂度ζ:由于新到达的数据可能会触发更新或者查询存储器的操作。计算复杂度往往定义为每次更新或者查询操作中访问存储单元的次数。类似的,HFBF的计算复杂度ξ即为每个元素插入时,平均访问存储单元的次数。对HFBF而言,当元素哈希定位到某一满负载的桶时,则此次访问就是无效的,其计算复杂度也相应增加了1。
定义3,空间利用率η:每元素占用的空间大小。HFBF为了提高空间利用率,引入了“哈希指纹”的概念,用有效的几个比特来标识结合元素;为了降低每桶满负载的概率,HFBF还可以针对每一个子布鲁姆过滤器使用多个哈希函数,以便提高其均衡性能,本文第四节第三部分进行了阐述。为了方便对HFBF模型进行刻画和描述,特进行了以下定义:
定义5,访问时间:定义访问时间t=i/n表示第i个元素访问的时刻,t=1 表示所有的n个元素都已经插入完毕。对HFBF而言,“访问存储单元的次数”区别于“元素插入的次数”,这是因为HFBF一次集合元素的插入有可能会引起多次对存储单元的访问。
由于HFBF由若干-GBF组成,下面首先对-GBF进行数学建模。图5为本发明提供的简单几何布鲁姆过滤器结构示意图,-GBF 由若干个等深的桶组成,集合元素通过哈希函数hj映射到各个桶中。令 mj=αjm,哈希函数hj在[1,mj]上服从均匀分布。如果某集合元素对应的桶已满负载,则该元素将被丢弃;否则,插入该桶。如图5所示,由于元素x 对应的桶已满,元素x将被丢弃;而元素y则被插入相应的位置。
假设初始化时,-GBF是空载的,不包括任何元素;之后,-GBF插入nj个元素。当t=1时,所有的nj个元素都已插入完毕。设 Fx(i/nj)表示第i个元素插入时,存储x个元素的桶在-GBF所有桶中所占的比例,则并令ΔFx((i+1)/nj)=Fx((i+1)/nj)-Fx(i/nj)表示在 [i/nj,(i+1)/nj]时间窗内,含有x个元素的桶的变化量。当t=i/nj时,不难分析桶负载的变化规律:
(1)若x=0,当且仅当下一时刻(i+1)/nj,某元素均匀插入到“零负载”的桶时,F0(i/nj)才会减小;其他情况均不会变化;
(2)若x=h,当且仅当下一时刻(i+1)/nj,某元素均匀插入到桶负载等于h-1时,Fh-1(i/nj)才会增加;其他情况均不会变化;
(3)若x∈(1,h),当且仅当下一时刻(i+1)/nj,某元素均匀插入到桶负载等于x或者等于x-1时,Fx(i/nj)才会相应减少或增加。
因此,可得到如下表达式:
上式满足初始条件:F0(0)=1且Fi(0)=0(i≠0)。两边同时除以1/nj,进一步得到:
若令fx(t)满足等式:
当nj趋于非常大时,存在非常小的常量ε,使得成立。因此,当nj趋于非常大时, fx(t):Fx(t)=1。基于(6)式,容易得到f0(t)=e-mj/nj·t。通过迭代法,可以进一步得到fx(t)的解析表达式:
从上式可以看出,fx(t)服从参数λ=njt/mj的泊松分布。主要原因是: 对与给定的时间t,当nj趋于非常大时,参数为(njt,1/m)的二项分布泊松分 布近似为参数λ=njt/mj的泊松分布。由(7)式可以得到t时刻溢出元素的 平均个数除以njt后得到-GBF的溢出概率表达 式如下:
图6为根据本发明的一些实施例中,给定n=m,h=3条件下,fi(t)(i=0,1,2,3)的变化曲线图;图7为根据本发明的一些实施例中,n=m,n=2m,n=3m条件下,f3(t)的变化曲线图。图6表明:由于元素的连续插入,存储元素数量为0的桶所占比例逐渐下降;存储元素数量较少的桶所占比例增幅相对较快,并随着时间的推移逐渐减少。图7表明:集合元素数量相对越多,桶负载增幅也相对越快。
图8为根据本发明的一些实施例中,给定n/m=1条件下,溢出概率相对于不同h的变化曲线图;图9为根据本发明的一些实施例中,给定h=3 条件下,溢出概率相对不同的n/m的变化曲线图。从以上两图不难看出: n/m一定的情况下,随着h的增加,溢出概率逐渐减小;给定h,随着n/m 的增大,溢出概率也逐渐变大。
HFBF由若干-GBF(T1,T2,…,Tj,…,Tk)组成,集合元素只有访问到 Tj-1溢出时,才会访问Tj。令lj(t)表示t时刻访问Tj-1后溢出元素的个数,等同于要访问Tj的元素的个数。基于HFBF的插入流程,lj(t)也表示顺序访问T1,T2,…,Tj-1后溢出元素的个数;同时,由于所有的n个元素都要访问T1,所以l1(t)=nt。基于以上事实,可得:
根据定义2可知:为了达到计算复杂度ξ,HFBF需要访问nξ次存储单元。设t=tξ(0≤tξ≤1)时,HFBF的计算复杂度达到ξ。由于k个哈希函数服从均匀分布,所以当t=tξ时,访问Tj的次数lj(tξ)应与访问HFBF的总数 n·ξ成比例,即将代入(11)式可得:
基于以上解析表达式,下面给出关于HFBF结构的定理。
当t=tξ时,HFBF溢出元素个数=时刻tξ未插入的元素+插入过程中丢弃的元素,即n-ntξ+ntξ·(p(ξ)k)。容易得到HFBF的溢出概率表达式:
γGBF(tξ)=1-ξ(1-p(ξ))=γGBF(ξ) (13)
图10为根据本发明的一些实施例中,给定h=4条件下,溢出概率相对于不同的n/m的变化曲线图。可以看出:随着n/m的增加,溢出概率逐渐增大;当n/m取值较小时,溢出概率在ζ较小时就接近了0。图11为根据本发明的一些实施例中,给定n/m=1条件下,溢出概率相对于计算复杂度的变化曲线图,可以看出:h越大,溢出概率越小;并且当h取值较大时,溢出概率在ζ较小时就接近了0。以上仿真表明:溢出概率与计算复杂度ζ成反向单调关系;溢出概率与存储容量mh和集合元素数量n有关,并与 n/mh成正向单调关系。
在HFBF模型中,由于每个-GBF使用了一个哈希函数,有可能 导致元素在某个或者某几个桶上负载多重,导致溢出概率增大。可通过增 加哈希函数的个数使各个桶的负载达到均衡,以减小溢出概率。因此,对 每个-GBF,元素的插入流程如下:当插入元素e时,由d个独立的哈 希函数计算元素e的桶地址,分别记作h1(e),h2(e),…,hd(e)。然后,将e插入 到B(h1(e)),B(h2(e)),…,B(hd(e))中负载最轻的那个桶中。如果存在多个负载最 轻的桶,则任意选择其中一个。
均衡改进可减少溢出概率,但是同时又增加了计算复杂度,可根据需要在两者之间进行折衷。
推论阐述如下:
推论2,如果-GBF满足以下条件:①哈希函数服从均匀分布;②哈希函数的个数d≥2;③元素插入时,选择d个桶中负载最小进行存储 (如果存在多个负载最轻的桶,则任意选择其中一个)。那么当插入元素的个数n→∞时,任意桶存储元素的个数x满足概率不等式: p(x≥lnlnn/lnd)≤o(1/n)。
推论2表明:当哈希函数的个数大于等于2时,均衡性的改善只与系数lnd有关。为了对均衡性进行比较,定义均衡增益比d≥2。图12(a)为根据本发明的一些实施例中,当n较小时均衡增益变化曲线图;图12(b)为根据本发明的一些实施例中,当n趋于很大时均衡增益变化曲线图;图12是d=4时,G(n)随n的变化曲线,可以看出:当n比较小时,哈希冲突概率比较小,均衡增益提高不明显;当n趋于非常大,-GBF的均衡性得到明显提高。
优选地,事先根据数据元素的分布特性,调整各个桶的深度和桶中存储单元的长度,通过对分布密集的子集合分配较深的桶(即h较大),降低溢出概率。
根据定义1,HFBF的错误概率由两部分组成:误判概率+溢出概率,即e=fGBF+γGBF。溢出概率由(13)式给出,而误判概率是由哈希冲突引起的,下面的定理给出了HFBF的误判概率。
定理2,设HFBF“哈希指纹”的长度为l=lb+lc+le,其中lb、lc、le分别代表桶索引长度、单元索引长度、元素标识符长度,则HFBF误判概率表达式为:
证明:假设哈希函数取值服从均匀分布,考虑HFBF所能承载最多元素n=mh的情况,当元素出现误判时,当且仅当存在集合元素x∈S,使得H(y)=H(x)时,HFBF才会产生误判。因此,可得误判概率为因为HFBF中第一个-GBF桶的数量最多,所以令又则误判概率与m,n,k无关。
实验中设定n=4m,m=4096,h=4,le=10,则为了保证空间大小一致,令NCBF的空间大小等于mh(lb+le+lc)。根据2.2节的分析,设定NCBF每计数器用4比特,空间总消耗为4c bit,则c=mh(lb+le+lc)/4;另外,NCBF的计算复杂度为哈希函数的个数k=ξ。基于此,在空间大小一致的情况下,图13示出了根据本发明的一些实施例中的错误概率对比曲线图;分别通过函数解析式和实验模拟的方式,分析比较了NCBF和HFBF 的错误概率。其中,实验模拟了计算复杂度ξ=1,2,…,10时的错误概率。从图中可以看出为:当ξ≤1时,HFBF的错误概率大于NCBF;随着ξ的增大, HFBF能获得非常低的错误概率,而NCBF的误判概率还会增加。这主要是因为当ξ较小时,在空间大小相等的情况下,HFBF桶的数量较少,哈希冲突比较严重,导致错误概率增大。
在相同空间大小的前提下,对HFBF和NCBF进行了计算复杂度的比较。NCBF的计算复杂度为哈希函数的个数k,等同于HFBF的ξ。图14 模拟了计算复杂度k=1,2,…,20时的错误概率与计算复杂度的关系柱状图。当时,误判概率达到最小,图14示出了根据本发明的一些实施例中的错误概率与计算复杂度柱状关系对比图,该图14验证了这一点。同时,图14还表明:当ξ=1时,HFBF错误概率稍微比NCBF大,随着ξ的增大,HFBF的错误概率要比NCBF误判概率的最小值要小很多。这主要是由于HFBF结构具有很好的哈希冲突处理机制:只有被插入元素对应的桶满载时,才会继续搜索下一个-GBF,使得尽量多的集合元素存放在前面的-GBF中。
根据定义3,空间复杂度用每个元素所占用比特数来衡量,即表1给出了在错误概率近似相等的情况下,NCBF 和HFBF空间复杂度的对比。由(13)式可知,HFBF的错误概率只与 <m,n,h,ξ>有关,因此,每组测试都是在<m,n,h,ξ>确定的情况下进行的。同时,为了保证计算复杂度的公平性,令NCBF哈希函数的个数等于ξ。实验中设定元素基数N=4096,并分别在h,m/n变化的情况下进行了比较。可以看出:在错误概率一定的情况下,HFBF空间利用率的空间利用率比 NCBF大约提高20%。
表1空间复杂度比较
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和 /或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种基于哈希指纹的布鲁姆过滤器,其特征在于,所述基于哈希指纹的布鲁姆过滤器通过如下方式形成:
将计数型布鲁姆过滤器的结构分隔成多维子布鲁姆过滤器;
将每一维所述子布鲁姆过滤器再次分隔成若干个桶;
所述每个桶的存储单元通过对应哈希函数计算得到。
2.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述每个桶中的所述存储单元数量相等。
3.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述哈希指纹包括:
桶索引,用于快速定位相应的桶;
单元索引,用于快速定位相应的存储单元;以及
元素标识,用于区分每个集合元素。
4.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述基于哈希指纹的布鲁姆过滤器生成对应每个所述子布鲁姆过滤器的所述哈希函数,顺序计算所述集合元素的哈希值,直到找到负载未满的所述桶,并将元素置于所述存储单元中。
5.根据权利要求4所述的基于哈希指纹的布鲁姆过滤器,其特征在于,当所述元素对应的桶都是满负载时,所述元素被丢弃。
6.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述基于哈希指纹的布鲁姆过滤器的性能指标包括:
错误概率,所述错误概率为误判概率和溢出概率的总和;
计算复杂度;所述计算复杂度为每个元素插入时,平均访问存储单元的次数;
空间利用率;所述空间利用率为每个元素占用的空间大小。
8.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,根据所述哈希指纹的布鲁姆过滤器的集合分布,所述元素的存放在所述子布鲁姆过滤器中依照维度次序存放。
9.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述桶的深度和所述桶中所述存储单元的长度基于所述元素的分布特性调整,将分布密集的子集合分配至较深的所述桶。
10.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,当元素定位到满载的桶时,所述计算复杂度增加1个单位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839187.7A CN110716931A (zh) | 2019-09-05 | 2019-09-05 | 一种基于哈希指纹的布鲁姆过滤器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839187.7A CN110716931A (zh) | 2019-09-05 | 2019-09-05 | 一种基于哈希指纹的布鲁姆过滤器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716931A true CN110716931A (zh) | 2020-01-21 |
Family
ID=69210286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910839187.7A Pending CN110716931A (zh) | 2019-09-05 | 2019-09-05 | 一种基于哈希指纹的布鲁姆过滤器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716931A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068958A (zh) * | 2020-08-31 | 2020-12-11 | 常州微亿智造科技有限公司 | 布隆过滤器和数据处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020296A (zh) * | 2012-12-31 | 2013-04-03 | 湖南大学 | 一种高精度多维计数布鲁姆过滤器及其大数据处理方法 |
CN104579974A (zh) * | 2014-12-22 | 2015-04-29 | 湖南大学 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
-
2019
- 2019-09-05 CN CN201910839187.7A patent/CN110716931A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020296A (zh) * | 2012-12-31 | 2013-04-03 | 湖南大学 | 一种高精度多维计数布鲁姆过滤器及其大数据处理方法 |
CN104579974A (zh) * | 2014-12-22 | 2015-04-29 | 湖南大学 | 面向ndn中名字查找的哈希布鲁姆过滤器及数据转发方法 |
Non-Patent Citations (1)
Title |
---|
张震;汪斌强;陈庶樵;郭通;: "几何布鲁姆过滤器的设计与分析" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112068958A (zh) * | 2020-08-31 | 2020-12-11 | 常州微亿智造科技有限公司 | 布隆过滤器和数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | Wavingsketch: An unbiased and generic sketch for finding top-k items in data streams | |
Huang et al. | Ld-sketch: A distributed sketching design for accurate and scalable anomaly detection in network data streams | |
Wu et al. | Elastic bloom filter: deletable and expandable filter using elastic fingerprints | |
Zhong et al. | Burstsketch: Finding bursts in data streams | |
Zhao et al. | Dhs: Adaptive memory layout organization of sketch slots for fast and accurate data stream processing | |
Xiao et al. | Using parallel bloom filters for multiattribute representation on network services | |
Chen et al. | Distinct counting with a self-learning bitmap | |
CN111782700B (zh) | 基于双层结构的数据流频次估计方法、系统及介质 | |
Tong et al. | Coloring embedder: A memory efficient data structure for answering multi-set query | |
Gou et al. | Single hash: Use one hash function to build faster hash based data structures | |
Beyer et al. | Distinct-value synopses for multiset operations | |
Gong et al. | Abc: a practicable sketch framework for non-uniform multisets | |
Jiang et al. | Auxo: A scalable and efficient graph stream summarization structure | |
Li et al. | Ladderfilter: Filtering infrequent items with small memory and time overhead | |
CN110716931A (zh) | 一种基于哈希指纹的布鲁姆过滤器 | |
CN112783644B (zh) | 一种基于高频键值计数的分布式倾斜流处理方法和系统 | |
WO2019183962A1 (zh) | 一种基于等长度和等密度切割的网络数据包分类的方法 | |
CN111200542B (zh) | 一种基于确定性替换策略的网络流量管理方法及系统 | |
Hao et al. | Fast multiset membership testing using combinatorial bloom filters | |
Yan et al. | Priority-aware per-flow measurement using cuckoo sketch | |
Zhou et al. | Accurate per-flow measurement with bloom sketch | |
Liu et al. | SEAD counter: Self-adaptive counters with different counting ranges | |
Shahout et al. | Cell: counter estimation for per-flow traffic in streams and sliding windows | |
Fan et al. | Onesketch: A generic and accurate sketch for data streams | |
Wen et al. | Traffic identification algorithm based on improved LRU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200121 |
|
WD01 | Invention patent application deemed withdrawn after publication |