CN110716931A - 一种基于哈希指纹的布鲁姆过滤器 - Google Patents

一种基于哈希指纹的布鲁姆过滤器 Download PDF

Info

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
Application number
CN201910839187.7A
Other languages
English (en)
Inventor
陈庶樵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanshuling Network Technology Co Ltd
Original Assignee
Shanshuling Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanshuling Network Technology Co Ltd filed Critical Shanshuling Network Technology Co Ltd
Priority to CN201910839187.7A priority Critical patent/CN110716931A/zh
Publication of CN110716931A publication Critical patent/CN110716931A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query 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自身结构的研究也有了重大进展。“计数型”布鲁姆过滤器(
Figure BDA0002193140310000021
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个桶,误判概率经计算得到为:
Figure BDA0002193140310000041
其中,le为元素标识符长度,α1为第一维子布鲁姆过滤器所包含桶数占总桶数的比例系数,∑αi=1,
误判概率不受几何元素个数、向量位数以及哈希函数个数的影响。
根据本发明的一些实施例,根据哈希指纹的布鲁姆过滤器的集合分布,元素的存放在子布鲁姆过滤器中依照维度次序存放。
根据本发明的一些实施例,桶的深度和桶中存储单元的长度基于元素的分布特性调整,将分布密集的子集合分配至较深的桶。
根据本发明的一些实施例,当元素定位到满载的桶时,计算复杂度增加1个单位。
本发明具有以下有益效果:
1.引入了“哈希指纹”的概念。哈希指纹主要包括桶索引、单元索引和元素标识。桶索引和单元索引分别用于快速定位相应的桶和存储单元,元素标识用来区分每个集合元素。根据误判概率的表达式,可知HFBF的误判概率不再受集合元素个数n、向量位数m以及哈希函数个数k的影响。
2.构造了HFBF的几何分布结构。HFBF将NCBF分割成呈几何分布的若干
Figure BDA0002193140310000051
-GBF,每个
Figure BDA0002193140310000052
-GBF等分成若干等深度的桶。由于HFBF的“几何分布”特性,使得大部分被插入或者查询的元素存放在前几维
Figure BDA0002193140310000053
-GBF 中,降低了计算复杂度。
3.基于桶负载存储的哈希冲突处理机制。元素插入时,顺序计算每个-GBF哈希桶地址,直到找到负载未满的桶存储。如果桶的深度越大,桶就能容纳更多的哈希冲突元素,能进一步降低溢出概率。
4.基于“微分方程”理论,建立了
Figure BDA0002193140310000055
-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)
令g(k)=kln(1-e-nk/c),当
Figure BDA0002193140310000072
时,可得:kopt=ln2·(c/n),
Figure BDA0002193140310000071
其中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]即为
Figure BDA0002193140310000091
HFBF引入了“哈希指纹”(Hash Fingerprint)的概念,即每个桶的存储单元值是由对应哈希函数计算得到的,其内容主要包括桶索引(Bucket Index, BI)、单元索引(CellIndex,CI)和元素标识(Element Identifier,EI)。桶索引和单元索引分别用于快速定位相应的桶和存储单元,元素标识用来区分每个集合元素。因此,对于元素
Figure BDA0002193140310000094
当且仅当存在某集合元素x∈S,使得H(y)=H(x)时,HFBF才会产生误判。
如下为用伪码给出了HFBF元素的插入和查询流程:
插入流程:
查询流程:
Figure BDA0002193140310000093
Figure BDA0002193140310000101
删除过程和查询过程类似,就不再赘述。其中最为重要的步骤为:HFBF 生成对应每个Tj的哈希函数hj,hj在[1,αjm]值域上服从均匀分布;顺序计算集合元素的哈希值——“BI+CI+EI”,直到找到负载未满的桶(即:桶深度小于h),并将元素值置于该存储单元中。不难看出,如果某元素对应的k 个桶都是满负载的,就会出现“溢出”现象。
为了对HFBF进行性能评价,本发明定义了以下三项指标:
定义1,错误概率e:对于任意的x∈S,
Figure BDA0002193140310000102
存在H(y)=H(x)时,会产生“误判概率”fGBF;当集合元素x插入时,如果sizeof(h1(x)),…,sizeof(hk(x))全部等于h(即对应的k个桶都已满载),则元素x将被丢弃,此现象发生的概率为“溢出概率”γGBF。错误概率即为e=fGBFGBF
定义2,计算复杂度ζ:由于新到达的数据可能会触发更新或者查询存储器的操作。计算复杂度往往定义为每次更新或者查询操作中访问存储单元的次数。类似的,HFBF的计算复杂度ξ即为每个元素插入时,平均访问存储单元的次数。对HFBF而言,当元素哈希定位到某一满负载的桶时,则此次访问就是无效的,其计算复杂度也相应增加了1。
定义3,空间利用率η:每元素占用的空间大小。HFBF为了提高空间利用率,引入了“哈希指纹”的概念,用有效的几个比特来标识结合元素;为了降低每桶满负载的概率,HFBF还可以针对每一个子布鲁姆过滤器使用多个哈希函数,以便提高其均衡性能,本文第四节第三部分进行了阐述。为了方便对HFBF模型进行刻画和描述,特进行了以下定义:
定义4,简单HFBF:HFBF是由k维子布鲁姆过滤器组成,每一维子布鲁姆过滤器定义为简单几何布鲁姆过滤器(
Figure BDA0002193140310000111
Geometric Bloom Filter, -GBF,在附图中简写为GBF)。
定义5,访问时间:定义访问时间t=i/n表示第i个元素访问的时刻,t=1 表示所有的n个元素都已经插入完毕。对HFBF而言,“访问存储单元的次数”区别于“元素插入的次数”,这是因为HFBF一次集合元素的插入有可能会引起多次对存储单元的访问。
由于HFBF由若干
Figure BDA0002193140310000113
-GBF组成,下面首先对
Figure BDA0002193140310000114
-GBF进行数学建模。图5为本发明提供的简单几何布鲁姆过滤器结构示意图,-GBF 由若干个等深的桶组成,集合元素通过哈希函数hj映射到各个桶中。令 mj=αjm,哈希函数hj在[1,mj]上服从均匀分布。如果某集合元素对应的桶已满负载,则该元素将被丢弃;否则,插入该桶。如图5所示,由于元素x 对应的桶已满,元素x将被丢弃;而元素y则被插入相应的位置。
假设初始化时,
Figure BDA0002193140310000116
-GBF是空载的,不包括任何元素;之后,
Figure BDA0002193140310000117
-GBF插入nj个元素。当t=1时,所有的nj个元素都已插入完毕。设 Fx(i/nj)表示第i个元素插入时,存储x个元素的桶在
Figure BDA0002193140310000118
-GBF所有桶中所占的比例,则
Figure BDA0002193140310000119
并令Δ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)才会相应减少或增加。
因此,可得到如下表达式:
Figure BDA0002193140310000121
上式满足初始条件:F0(0)=1且Fi(0)=0(i≠0)。两边同时除以1/nj,进一步得到:
Figure BDA0002193140310000122
当nj→+∞时,1/nj→0,用t替换
Figure BDA0002193140310000123
可得到如下近似微分表达式:
Figure BDA0002193140310000124
若令fx(t)满足等式:
Figure BDA0002193140310000125
当nj趋于非常大时,存在非常小的常量ε,使得
Figure BDA0002193140310000126
成立。因此,当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时刻溢出元素的 平均个数
Figure RE-GDA0002314542220000128
除以njt后得到
Figure RE-GDA0002314542220000129
-GBF的溢出概率表达 式如下:
Figure BDA0002193140310000133
图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由若干
Figure BDA0002193140310000134
-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。基于以上事实,可得:
在(7)式的基础上,将lj(t)替换njt,可以得出t时刻第j个
Figure BDA0002193140310000136
-GBF 含有x个元素的比例
Figure BDA0002193140310000137
的表达式:
Figure BDA0002193140310000141
同理,基于(8)式,将lj(t)替换njt,可以得到t时刻第j个
Figure BDA0002193140310000142
-GBF 的溢出概率表达式:
Figure BDA0002193140310000143
根据定义2可知:为了达到计算复杂度ξ,HFBF需要访问nξ次存储单元。设t=tξ(0≤tξ≤1)时,HFBF的计算复杂度达到ξ。由于k个哈希函数服从均匀分布,所以当t=tξ时,访问Tj的次数lj(tξ)应与访问HFBF的总数 n·ξ成比例,即
Figure BDA0002193140310000144
Figure BDA0002193140310000145
代入(11)式可得:
Figure BDA0002193140310000146
基于以上解析表达式,下面给出关于HFBF结构的定理。
定理1,如果给定HFBF的计算复杂度ξ,则组成HFBF的k个
Figure BDA0002193140310000147
-GBF的大小αj(j∈[1,k])满足等式
Figure BDA0002193140310000148
即HFBF结构服从几何分布。
证明:由(9)式和(12)式可知,lj(tξ)=ntξ·p(ξ)j-1。因为αj=lj(tξ)/nξ,则αj=(tξ·p(ξ)j-1)/ξ。又
Figure BDA0002193140310000149
可推出:
Figure BDA00021931403100001410
代入
Figure BDA00021931403100001411
中,可得
Figure BDA00021931403100001412
当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模型中,由于每个
Figure RE-GDA0002314542220000151
-GBF使用了一个哈希函数,有可能 导致元素在某个或者某几个桶上负载多重,导致溢出概率增大。可通过增 加哈希函数的个数使各个桶的负载达到均衡,以减小溢出概率。因此,对 每个
Figure RE-GDA0002314542220000152
-GBF,元素的插入流程如下:当插入元素e时,由d个独立的哈 希函数计算元素e的桶地址,分别记作h1(e),h2(e),…,hd(e)。然后,将e插入 到B(h1(e)),B(h2(e)),…,B(hd(e))中负载最轻的那个桶中。如果存在多个负载最 轻的桶,则任意选择其中一个。
均衡改进可减少溢出概率,但是同时又增加了计算复杂度,可根据需要在两者之间进行折衷。
推论阐述如下:
推论1,如果
Figure BDA0002193140310000153
-GBF满足以下条件:①哈希函数服从均匀分布;②哈希函数的个数d=1。则当插入元素的个数n→∞时,任意桶存储元素的个数x满足概率不等式:p(x≥3lnn/lnlnn)≤1/n。
推论2,如果
Figure BDA0002193140310000154
-GBF满足以下条件:①哈希函数服从均匀分布;②哈希函数的个数d≥2;③元素插入时,选择d个桶中负载最小进行存储 (如果存在多个负载最轻的桶,则任意选择其中一个)。那么当插入元素的个数n→∞时,任意桶存储元素的个数x满足概率不等式: p(x≥lnlnn/lnd)≤o(1/n)。
推论2表明:当哈希函数的个数大于等于2时,均衡性的改善只与系数lnd有关。为了对均衡性进行比较,定义均衡增益比
Figure BDA0002193140310000161
d≥2。图12(a)为根据本发明的一些实施例中,当n较小时均衡增益变化曲线图;图12(b)为根据本发明的一些实施例中,当n趋于很大时均衡增益变化曲线图;图12是d=4时,G(n)随n的变化曲线,可以看出:当n比较小时,哈希冲突概率比较小,均衡增益提高不明显;当n趋于非常大,
Figure BDA0002193140310000162
-GBF的均衡性得到明显提高。
在上述方案中,构成HFBF的
Figure BDA0002193140310000163
-GBF由若干个等深的桶组成,集合元素通过哈希函数hj映射到各个桶中。如果某集合元素对应的桶已满负载,则该元素将被丢弃;否则,插入该桶。
优选地,事先根据数据元素的分布特性,调整各个桶的深度和桶中存储单元的长度,通过对分布密集的子集合分配较深的桶(即h较大),降低溢出概率。
根据定义1,HFBF的错误概率由两部分组成:误判概率+溢出概率,即e=fGBFGBF。溢出概率由(13)式给出,而误判概率是由哈希冲突引起的,下面的定理给出了HFBF的误判概率。
定理2,设HFBF“哈希指纹”的长度为l=lb+lc+le,其中lb、lc、le分别代表桶索引长度、单元索引长度、元素标识符长度,则HFBF误判概率表达式为:
证明:假设哈希函数取值服从均匀分布,考虑HFBF所能承载最多元素n=mh的情况,当元素
Figure BDA0002193140310000165
出现误判时,当且仅当存在集合元素x∈S,使得H(y)=H(x)时,HFBF才会产生误判。因此,可得误判概率为
Figure BDA0002193140310000166
因为HFBF中第一个
Figure BDA0002193140310000167
-GBF桶的数量最多,所以令
Figure BDA0002193140310000168
Figure BDA0002193140310000169
Figure BDA00021931403100001610
误判概率与m,n,k无关。
实验中设定n=4m,m=4096,h=4,le=10,则
Figure BDA00021931403100001611
为了保证空间大小一致,令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时的错误概率与计算复杂度的关系柱状图。当
Figure BDA0002193140310000171
时,误判概率达到最小,图14示出了根据本发明的一些实施例中的错误概率与计算复杂度柱状关系对比图,该图14验证了这一点。同时,图14还表明:当ξ=1时,HFBF错误概率稍微比NCBF大,随着ξ的增大,HFBF的错误概率要比NCBF误判概率的最小值要小很多。这主要是由于HFBF结构具有很好的哈希冲突处理机制:只有被插入元素对应的桶满载时,才会继续搜索下一个
Figure BDA0002193140310000172
-GBF,使得尽量多的集合元素存放在前面的
Figure BDA0002193140310000173
-GBF中。
根据定义3,空间复杂度用每个元素所占用比特数来衡量,即表1给出了在错误概率近似相等的情况下,NCBF 和HFBF空间复杂度的对比。由(13)式可知,HFBF的错误概率只与 <m,n,h,ξ>有关,因此,每组测试都是在<m,n,h,ξ>确定的情况下进行的。同时,为了保证计算复杂度的公平性,令NCBF哈希函数的个数等于ξ。实验中设定元素基数N=4096,并分别在h,m/n变化的情况下进行了比较。可以看出:在错误概率一定的情况下,HFBF空间利用率的空间利用率比 NCBF大约提高20%。
表1空间复杂度比较
Figure BDA0002193140310000181
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和 /或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种基于哈希指纹的布鲁姆过滤器,其特征在于,所述基于哈希指纹的布鲁姆过滤器通过如下方式形成:
将计数型布鲁姆过滤器的结构分隔成多维子布鲁姆过滤器;
将每一维所述子布鲁姆过滤器再次分隔成若干个桶;
所述每个桶的存储单元通过对应哈希函数计算得到。
2.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述每个桶中的所述存储单元数量相等。
3.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述哈希指纹包括:
桶索引,用于快速定位相应的桶;
单元索引,用于快速定位相应的存储单元;以及
元素标识,用于区分每个集合元素。
4.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述基于哈希指纹的布鲁姆过滤器生成对应每个所述子布鲁姆过滤器的所述哈希函数,顺序计算所述集合元素的哈希值,直到找到负载未满的所述桶,并将元素置于所述存储单元中。
5.根据权利要求4所述的基于哈希指纹的布鲁姆过滤器,其特征在于,当所述元素对应的桶都是满负载时,所述元素被丢弃。
6.根据权利要求1所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述基于哈希指纹的布鲁姆过滤器的性能指标包括:
错误概率,所述错误概率为误判概率和溢出概率的总和;
计算复杂度;所述计算复杂度为每个元素插入时,平均访问存储单元的次数;
空间利用率;所述空间利用率为每个元素占用的空间大小。
7.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,哈希空间H={hj,j=1,…,k},每个哈希函数hj(j=1,…,k)对应子布鲁姆过滤器Tj,每个子布鲁姆过滤器T1,T2,…,Tj,…,Tk分别对应α1m,α2m,…,αjm,…,αkm个桶,所述误判概率经计算得到为:
Figure FDA0002193140300000021
其中,le为所述元素标识符长度,α1为第一维所述子布鲁姆过滤器所包含桶数占总桶数的比例系数,∑αi=1,
所述误判概率不受几何元素个数、向量位数以及哈希函数个数的影响。
8.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,根据所述哈希指纹的布鲁姆过滤器的集合分布,所述元素的存放在所述子布鲁姆过滤器中依照维度次序存放。
9.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,所述桶的深度和所述桶中所述存储单元的长度基于所述元素的分布特性调整,将分布密集的子集合分配至较深的所述桶。
10.根据权利要求6所述的基于哈希指纹的布鲁姆过滤器,其特征在于,当元素定位到满载的桶时,所述计算复杂度增加1个单位。
CN201910839187.7A 2019-09-05 2019-09-05 一种基于哈希指纹的布鲁姆过滤器 Pending CN110716931A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112068958A (zh) * 2020-08-31 2020-12-11 常州微亿智造科技有限公司 布隆过滤器和数据处理方法

Citations (2)

* Cited by examiner, † Cited by third party
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中名字查找的哈希布鲁姆过滤器及数据转发方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
张震;汪斌强;陈庶樵;郭通;: "几何布鲁姆过滤器的设计与分析" *

Cited By (1)

* Cited by examiner, † Cited by third party
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