一种布谷鸟过滤器及数据插入、查询、删除方法技术

技术编号:38755396 阅读:28 留言:0更新日期:2023-09-10 09:40
本发明专利技术提出了一种布谷鸟过滤器及数据插入、查询、删除方法,涉及计算机信息表示与检索技术领域,布谷鸟过滤器由指纹记录表和位置标记表构成;所述指纹记录表,由m个桶组成,用来保存插入的数据指纹,其中,每个桶有b个保存数据指纹的槽;所述位置标记表,由m个向量组成,为每个桶创建一个向量,用来记录数据指纹在指纹记录表中的插入位置信息;其中,每个数据指纹对应两个候选桶,从中选择一个桶的一个槽来保存数据指纹,当且仅当最终保存在第二个候选桶中时,在第二个候选桶对应的向量中,记录槽的位置下标值;本发明专利技术具有更高的数据指纹计算效率、更低的数据查询假阳率,解决布谷鸟过滤器存在查询假阳的技术问题。器存在查询假阳的技术问题。器存在查询假阳的技术问题。

【技术实现步骤摘要】
一种布谷鸟过滤器及数据插入、查询、删除方法


[0001]本专利技术属于计算机信息表示与检索
,尤其涉及一种布谷鸟过滤器及数据插入、查询、删除方法。

技术介绍

[0002]本部分的陈述仅仅是提供了与本专利技术相关的
技术介绍
信息,不必然构成在先技术。
[0003]近似成员查询数据结构(approximate membership query data structure,AMQ)以一种紧凑(compact)格式保存了数据域U上的一个键集S的概率表示,并支持数据的插入与查询操作,部分AMQs支持数据删除操作;对于集合中已有元素的查询,它能够高效地完成集合成员查询,对于集合外元素的查询,它存在一个可控的误报概率(以下称为假阳率),即查询一个不存在于集合内的元素时存在一定概率返回该元素存在于集合中;AMQ最大的特点是其高效的空间效率,在一个可接受的假阳率下,AMQ可以在内存资源有限的设备如网络路由器、交换机或loT设备上工作。
[0004]布隆过滤器(Bloom Filter,BF)是AMQ的典型示例,它支持对一组键的集合S进行插入和查询操作,如果查询集合S中存在的键,布隆过滤器能够快速完成查询;而对于集合S以外的键,由于它是一种概率结构,查找返回“不存在”的概率至少为1

ε,其中n是已经添加元素的数量,k为使用哈希函数的数量,m表示布隆过滤器的长度,这表明BF提供了可控的假阳率ε,它在空间效率和查询准确率之间提供了一种权衡机制,即布隆过滤器的长度会直接影响误报率,布隆过滤器越长其假阳率越大;另外,哈希函数的个数也需要权衡,个数越多布隆过滤器的效率越低,但是如果太少,假阳率就会变高。近年来,BF被广泛应用于数据包分类、深度包检测(DPI)的有效负载检查、减少磁盘I/O、避免数据库缓存穿透以及移动终端以及loT设备上的数据服务——分布式连接和半连接、索引、辅助元数据和查询处理问题等,其应用的主要优势是在空间有限的前提下,可以在FPGA等专用硬件中以非常紧凑的形式存储和访问大量分类规则,在过去的十年中,当硬件存储空间受限或频繁访问外存导致高延迟时,布隆过滤器是一种常见的解决方案。
[0005]与普通哈希表或二叉树相比,BF的主要优点是大小固定以及独立于结构内元素数量的恒定查询和插入效率;BF的主要缺点在于它不支持数据删除操作,计数布隆过滤器(Counting Bloom Filter,CBF)解决了BF不支持数据删除的问题,但是它需要比BF多三到四倍的空间去维持与BF相同的假阳率,而且一旦所需的存储空间比RAM大,过滤器性能就会显著下降,因为BF使用随机读写,不能有效地扩展到外存,例如闪存当中;其次,目前过滤器的假阳率已经被降至非常低的程度,但仍旧有一定概率发生查询误报的情况。
[0006]最近,有学者提出了带有假阳率消除域(False Positive Free Zone,FPFZ)的BF,他们通过使用元素到过滤器中具有特殊属性的位置的映射,实现了过滤器中插入的元素数量少于给定阈值时会完全消除给定域内的假阳率;但是在所有情况下FPFZ都很小,受支持
的域和数据量也很有限,极大限制了该技术的可应用范围。
[0007]相较于BF,布谷鸟过滤器(Cuckoo Filter,CF)支持数据的动态删除。在空间效率方面,CF通过使用一个哈希函数计算并保存原始集合数据的指纹而非原始数据,在保证低假阳率的同时具有更小的空间占用;在时间效率方面,CF使用布谷鸟哈希计算元素插入位置,但是在元素插入过程中由于哈希碰撞的存在有一定概率需要进行数据重定位;大量研究工作对布谷鸟过滤器的插入性能和查询性能又进行了进一步优化,降低了元素插入过程中重定位的发生概率和过滤器本身的内存占用;布谷鸟过滤器结构决定了假阳率和空间效率本身存在矛盾关系,二者此消彼长,因此对布谷鸟过滤器的优化需要综合考虑其结构的假阳率和所需的内存空间。
[0008]目前,很多的专家学者针对于不同应用场景对CF进行了结构和算法上的改进,在平衡布谷鸟过滤器的存储空间和假阳率方面,据了解没有工作消除了布谷鸟过滤器的假阳率,并且多数工作提出的布谷鸟过滤器变种存在严重的效率问题,因此仍需要对CF的结构进行进一步研究和优化。

技术实现思路

[0009]为克服上述现有技术的不足,本专利技术提供了一种布谷鸟过滤器及数据插入、查询、删除方法,构造的布谷鸟过滤器由指纹记录表(Fingerprint Record Table,FRT)和位置标记表(Position Flag Table,PFT)构成,FCT用来保存插入数据的指纹,PFT用来记录指纹表中数据指纹的插入位置信息,解决布谷鸟过滤器存在查询假阳的技术问题。
[0010]为实现上述目的,本专利技术的一个或多个实施例提供了如下技术方案:
[0011]本专利技术第一方面提供了一种布谷鸟过滤器。
[0012]一种布谷鸟过滤器,由指纹记录表和位置标记表构成;
[0013]所述指纹记录表,由m个桶组成,用来保存插入的数据指纹,其中,每个桶有b个保存数据指纹的槽;
[0014]所述位置标记表,由m个向量组成,为每个桶创建一个向量,用来记录数据指纹在指纹记录表中的插入位置信息;
[0015]其中,每个数据指纹对应两个候选桶,从中选择一个桶的一个槽来保存数据指纹,当且仅当最终保存在第二个候选桶中时,在第二个候选桶对应的向量中,记录槽的位置下标值。
[0016]进一步的,所述桶的个数m,是2的指数次方。
[0017]进一步的,所述数据指纹的计算方式为:
[0018]获取待插入数据;
[0019]通过哈希函数和取模操作,计算待插入数据的数据摘要:
[0020]dig
x
=h
a
(x)mod 2
n
[0021]其中,n为数据摘要长度,h
a
(
·
)表示定长输出的哈希函数;
[0022]基于待插入数据和数据摘要,直接取用数据摘要的低位部分作为待插入数据的数据指纹。
[0023]进一步的,所述两个候选桶的计算方式,具体为:
[0024][0025][0026]其中,表示第一个候选桶,表示第二个候选桶,表示待插入的数据,dig
x
表示数据摘要,
x
表示数据指纹,l为指纹长度,h
b
(
·
)表示定长输出的哈希函数,表示桶的个数。
[0027]本专利技术第二方面提供了一种数据插入方法。
[0028]一种数据插入方法,基于第一方面提供的一种布谷鸟过滤器,当插入一个数据x时,首先计算x对应的数据摘要dig
x
、数据指纹f
x
和两个候选桶和两个候选桶然后进行插入,插入过程为:
[0029]从两个候选桶中选择一个桶的一个空槽e
j
来保存数据指纹,如果两个候选桶都没有空槽,则选择一个槽e
j
,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于数据指纹位置标记的布谷鸟过滤器,其特征在于,由指纹记录表和位置标记表构成;所述指纹记录表,由m个桶组成,用来保存插入的数据指纹,其中,每个桶有b个保存数据指纹的槽;所述位置标记表,由m个向量组成,为每个桶创建一个向量,用来记录数据指纹在指纹记录表中的插入位置信息;其中,每个数据指纹对应两个候选桶,从中选择一个桶的一个槽来保存数据指纹,当且仅当最终保存在第二个候选桶中时,在第二个候选桶对应的向量中,记录槽的位置下标值。2.如权利要求1所述的基于数据指纹位置标记的布谷鸟过滤器,其特征在于,所述桶的个数m,是2的指数次方。3.如权利要求1所述的基于数据指纹位置标记的布谷鸟过滤器,其特征在于,所述数据指纹的计算方式为:获取待插入数据;通过哈希函数和取模操作,计算待插入数据的数据摘要:dig
x
=h
a
(x)mod 2
n
其中,n为数据摘要长度,h
a
(
·
)表示定长输出的哈希函数;基于待插入数据和数据摘要,直接取用数据摘要的低位部分作为待插入数据的数据指纹。4.如权利要求1所述的基于数据指纹位置标记的布谷鸟过滤器,其特征在于,所述两个候选桶的计算方式,具体为:候选桶的计算方式,具体为:其中,表示第一个候选桶,表示第二个候选桶,x表示待插入的数据,dig
x
表示数据摘要,f
x
表示数据指纹,l为指纹长度,h
b
(
·
)表示定长输出的哈希函数,表示桶的个数。5.一种基于布谷鸟过滤器的数据插入方法,其特征在于,所述布谷鸟过滤器为如权利要求1

4任一项所述的基于数据指纹位置标记的布谷鸟过滤器,当插入一个数据x时,首先计算x对应的数据摘要dig
x
、数据指纹f
x
和两个候选桶然后进行插入,插入过程为:从两个候选桶中选择一个桶的一个空槽e
j
来保存数据指纹,如果两个候选桶都没有空槽,则选择一个槽e
j
,通过驱逐过程驱逐槽e
j
中的原有数据指纹f
x

,将数据指纹f
x
保存到空出来的槽e
j
中;如果数据指纹f
x
最终保存在第二个候选桶中,则将槽e
j
的位置下标值j存入桶对应的向量中。6.如权利要求5所述的一种基于布谷鸟过滤器的数据插入方法,其特征在于,所述从两个候选桶中选择一个桶的一个空槽e
j
来保存数据指纹,具体分为两种情况:(1)如果...

【专利技术属性】
技术研发人员:赵川魏宇楠赵圣楠荆山陈贞翔杨波
申请(专利权)人:泉城省实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1