CN116701440A - 一种布谷鸟过滤器及数据插入、查询、删除方法 - Google Patents
一种布谷鸟过滤器及数据插入、查询、删除方法 Download PDFInfo
- Publication number
- CN116701440A CN116701440A CN202310712462.5A CN202310712462A CN116701440A CN 116701440 A CN116701440 A CN 116701440A CN 202310712462 A CN202310712462 A CN 202310712462A CN 116701440 A CN116701440 A CN 116701440A
- Authority
- CN
- China
- Prior art keywords
- data
- fingerprint
- candidate
- slot
- bucket
- 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
- 241000544061 Cuculus canorus Species 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000003780 insertion Methods 0.000 title claims abstract description 28
- 230000037431 insertion Effects 0.000 title claims abstract description 28
- 238000012217 deletion Methods 0.000 title claims abstract description 17
- 230000037430 deletion Effects 0.000 title claims abstract description 17
- 239000013598 vector Substances 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims description 14
- 238000012966 insertion method Methods 0.000 claims description 6
- 239000003550 marker Substances 0.000 claims description 6
- 230000009977 dual effect Effects 0.000 claims description 3
- NGPDZEACIWDCKX-UHFFFAOYSA-N Tauremesin Natural products CC1(O)C=CC(=O)C2(C)C1C1OC(=O)C(C)C1CC2 NGPDZEACIWDCKX-UHFFFAOYSA-N 0.000 claims description 2
- NGPDZEACIWDCKX-DHKWMEDESA-N Tauremizin Natural products C([C@@]1(O)C)=CC(=O)[C@@]2(C)[C@H]1[C@H]1OC(=O)[C@@H](C)[C@@H]1CC2 NGPDZEACIWDCKX-DHKWMEDESA-N 0.000 claims description 2
- NGPDZEACIWDCKX-WUDKWMPASA-N Vulgarin Chemical compound C([C@]1(O)C)=CC(=O)[C@@]2(C)[C@H]1[C@H]1OC(=O)[C@@H](C)[C@@H]1CC2 NGPDZEACIWDCKX-WUDKWMPASA-N 0.000 claims description 2
- 239000011800 void material Substances 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
-
- 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/2282—Tablespace storage structures; Management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Collating Specific Patterns (AREA)
Abstract
本发明提出了一种布谷鸟过滤器及数据插入、查询、删除方法,涉及计算机信息表示与检索技术领域,布谷鸟过滤器由指纹记录表和位置标记表构成;所述指纹记录表,由m个桶组成,用来保存插入的数据指纹,其中,每个桶有b个保存数据指纹的槽;所述位置标记表,由m个向量组成,为每个桶创建一个向量,用来记录数据指纹在指纹记录表中的插入位置信息;其中,每个数据指纹对应两个候选桶,从中选择一个桶的一个槽来保存数据指纹,当且仅当最终保存在第二个候选桶中时,在第二个候选桶对应的向量中,记录槽的位置下标值;本发明具有更高的数据指纹计算效率、更低的数据查询假阳率,解决布谷鸟过滤器存在查询假阳的技术问题。
Description
技术领域
本发明属于计算机信息表示与检索技术领域,尤其涉及一种布谷鸟过滤器及数据插入、查询、删除方法。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
近似成员查询数据结构(approximate membership query data structure,AMQ)以一种紧凑(compact)格式保存了数据域U上的一个键集S的概率表示,并支持数据的插入与查询操作,部分AMQs支持数据删除操作;对于集合中已有元素的查询,它能够高效地完成集合成员查询,对于集合外元素的查询,它存在一个可控的误报概率(以下称为假阳率),即查询一个不存在于集合内的元素时存在一定概率返回该元素存在于集合中;AMQ最大的特点是其高效的空间效率,在一个可接受的假阳率下,AMQ可以在内存资源有限的设备如网络路由器、交换机或loT设备上工作。
布隆过滤器(Bloom Filter,BF)是AMQ的典型示例,它支持对一组键的集合S进行插入和查询操作,如果查询集合S中存在的键,布隆过滤器能够快速完成查询;而对于集合S以外的键,由于它是一种概率结构,查找返回“不存在”的概率至少为1-ε,其中n是已经添加元素的数量,k为使用哈希函数的数量,m表示布隆过滤器的长度,这表明BF提供了可控的假阳率ε,它在空间效率和查询准确率之间提供了一种权衡机制,即布隆过滤器的长度会直接影响误报率,布隆过滤器越长其假阳率越大;另外,哈希函数的个数也需要权衡,个数越多布隆过滤器的效率越低,但是如果太少,假阳率就会变高。近年来,BF被广泛应用于数据包分类、深度包检测(DPI)的有效负载检查、减少磁盘I/O、避免数据库缓存穿透以及移动终端以及loT设备上的数据服务——分布式连接和半连接、索引、辅助元数据和查询处理问题等,其应用的主要优势是在空间有限的前提下,可以在FPGA等专用硬件中以非常紧凑的形式存储和访问大量分类规则,在过去的十年中,当硬件存储空间受限或频繁访问外存导致高延迟时,布隆过滤器是一种常见的解决方案。
与普通哈希表或二叉树相比,BF的主要优点是大小固定以及独立于结构内元素数量的恒定查询和插入效率;BF的主要缺点在于它不支持数据删除操作,计数布隆过滤器(Counting Bloom Filter,CBF)解决了BF不支持数据删除的问题,但是它需要比BF多三到四倍的空间去维持与BF相同的假阳率,而且一旦所需的存储空间比RAM大,过滤器性能就会显著下降,因为BF使用随机读写,不能有效地扩展到外存,例如闪存当中;其次,目前过滤器的假阳率已经被降至非常低的程度,但仍旧有一定概率发生查询误报的情况。
最近,有学者提出了带有假阳率消除域(False Positive Free Zone,FPFZ)的BF,他们通过使用元素到过滤器中具有特殊属性的位置的映射,实现了过滤器中插入的元素数量少于给定阈值时会完全消除给定域内的假阳率;但是在所有情况下FPFZ都很小,受支持的域和数据量也很有限,极大限制了该技术的可应用范围。
相较于BF,布谷鸟过滤器(Cuckoo Filter,CF)支持数据的动态删除。在空间效率方面,CF通过使用一个哈希函数计算并保存原始集合数据的指纹而非原始数据,在保证低假阳率的同时具有更小的空间占用;在时间效率方面,CF使用布谷鸟哈希计算元素插入位置,但是在元素插入过程中由于哈希碰撞的存在有一定概率需要进行数据重定位;大量研究工作对布谷鸟过滤器的插入性能和查询性能又进行了进一步优化,降低了元素插入过程中重定位的发生概率和过滤器本身的内存占用;布谷鸟过滤器结构决定了假阳率和空间效率本身存在矛盾关系,二者此消彼长,因此对布谷鸟过滤器的优化需要综合考虑其结构的假阳率和所需的内存空间。
目前,很多的专家学者针对于不同应用场景对CF进行了结构和算法上的改进,在平衡布谷鸟过滤器的存储空间和假阳率方面,据了解没有工作消除了布谷鸟过滤器的假阳率,并且多数工作提出的布谷鸟过滤器变种存在严重的效率问题,因此仍需要对CF的结构进行进一步研究和优化。
发明内容
为克服上述现有技术的不足,本发明提供了一种布谷鸟过滤器及数据插入、查询、删除方法,构造的布谷鸟过滤器由指纹记录表(Fingerprint Record Table,FRT)和位置标记表(Position Flag Table,PFT)构成,FCT用来保存插入数据的指纹,PFT用来记录指纹表中数据指纹的插入位置信息,解决布谷鸟过滤器存在查询假阳的技术问题。
为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:
本发明第一方面提供了一种布谷鸟过滤器。
一种布谷鸟过滤器,由指纹记录表和位置标记表构成;
所述指纹记录表,由m个桶组成,用来保存插入的数据指纹,其中,每个桶有b个保存数据指纹的槽;
所述位置标记表,由m个向量组成,为每个桶创建一个向量,用来记录数据指纹在指纹记录表中的插入位置信息;
其中,每个数据指纹对应两个候选桶,从中选择一个桶的一个槽来保存数据指纹,当且仅当最终保存在第二个候选桶中时,在第二个候选桶对应的向量中,记录槽的位置下标值。
进一步的,所述桶的个数m,是2的指数次方。
进一步的,所述数据指纹的计算方式为:
获取待插入数据;
通过哈希函数和取模操作,计算待插入数据的数据摘要:
digx=ha(x)mod 2n
其中,n为数据摘要长度,ha(·)表示定长输出的哈希函数;
基于待插入数据和数据摘要,直接取用数据摘要的低位部分作为待插入数据的数据指纹。
进一步的,所述两个候选桶的计算方式,具体为:
其中,表示第一个候选桶,/>表示第二个候选桶,表示待插入的数据,digx表示数据摘要,x表示数据指纹,l为指纹长度,hb(·)表示定长输出的哈希函数,表示桶的个数。
本发明第二方面提供了一种数据插入方法。
一种数据插入方法,基于第一方面提供的一种布谷鸟过滤器,当插入一个数据x时,首先计算x对应的数据摘要digx、数据指纹fx和两个候选桶 然后进行插入,插入过程为:
从两个候选桶中选择一个桶的一个空槽ej来保存数据指纹,如果两个候选桶都没有空槽,则选择一个槽ej,通过驱逐过程驱逐槽ej中的原有数据指纹fx′,将数据指纹fx保存到空出来的槽ej中;
如果数据指纹fx最终保存在第二个候选桶中,则将槽ej的位置下标值j存入桶对应的向量中。
进一步的,所述从两个候选桶中选择一个桶的一个空槽ej来保存数据指纹,具体分为两种情况:
(1)如果两个侯选桶都有空槽,则随机选择一个桶,将数据指纹存入任意一个空槽ej,j∈[0,b),j是槽ej的位置下标值;
(2)若两个候选桶中只有一个桶中有空槽,则将数据指纹存入该桶的任意一个空槽ej,∈[0,b),j是槽ej的位置下标值。
进一步的,所述两个候选桶都已经没有空槽,则驱逐过程具体为:
从两个候选桶中随机选择一个桶,随机驱逐桶中任意一个槽ej,∈[0,b)中的数据指纹fx′,并将fx存入ej中,更新桶对应向量/>的位置下标值;
被驱逐元素fx′计算当前插入位置的对偶位置,如果该桶中存在空槽,则将fx′插入该空槽中并更新对应向量的位置下标值,如果没有空槽,则重复驱逐过程,直到所有项都被存入过滤器中。
本发明第三方面提供了一种数据查找方法。
一种数据查找方法,基于第一方面提供的一种布谷鸟过滤器,当查找一个数据y时,首先计算y对应的数据摘要digx、数据指纹fy和两个候选桶 然后将数据指纹fy和这两个桶内的所有指纹进行匹配:
如果第一个候选桶中槽ej,∈[0,b)保存的指纹与fy匹配,则在/>中查找j,如果不存在,则返回查找成功,否则返回查找失败;如果第二个候选桶/>中槽ek,∈[0,b)保存的指纹与fy匹配,则在/>中查找k,如果存在,则返回查找成功,否则返回查找失败。
本发明第四方面提供了一种数据删除方法。
一种数据删除方法,基于第一方面提供的一种布谷鸟过滤器,当删除一个数据z时,查找被删除数据z的数据指纹,分为两种情况进行后续操作:
如果查找成功,则将数据指纹从指纹记录表中的对应位置删除,并删除对应向量中的位置标记,返回删除成功;
如果查找失败,则说明该元素不存在于过滤器中,返回删除失败。
进一步的,所述查找成功时的删除操作,具体为:
如果待删除的数据指纹在第一个候选桶中,则将数据指纹从第一个候选桶中删除;
如果待删除的数据指纹在第二个候选桶中,则将数据指纹从第二个候选桶中删除,并删除第二个候选桶对应向量中的位置标记。
以上一个或多个技术方案存在以下有益效果:
本发明具有更高的数据指纹计算效率:在数据插入阶段,在获得数据指纹时直接取用数据摘要的低位部分,减少了一个哈希操作,降低了数据插入时延。
本发明具有更低的数据查询假阳率:通过仅记录保存在第二个候选桶中的位置下标值的方式,将数组下标巧妙地融入了数据指纹中,在不增加指纹长度的前提下显著增加了指纹比对长度,将布谷鸟过滤器的假阳率降低了m倍(m是指纹记录表的桶数),并且在指纹长度为8bits时,在实际操作中,平均有93.1%的概率假阳率为0;在指纹长度为12bits,相较于CF的0.04%,本过滤器有99.3%的概率的假阳率为0。
本发明在相同假阳率下具有更小的空间成本:在假阳率为0的前提下,本过滤器需要的指纹长度仅为8.76993bits,而CF则需要34.3597bits。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为第一个实施例布谷鸟过滤器的结构示意图。
图2为第一个实施例指纹记录表的结构示意图。
图3为第一个实施例在槽数b=2,4,8和桶数m=215,220,225时1在矩阵F所有元素中的占比图。
图4为第一个实施例位置标记表的结构示意图。
图5为第二个实施例的方法流程图。
图6为第三个实施例的方法流程图。
图7为第四个实施例的方法流程图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本发明使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
实施例一
在一个或多个实施方式中,公开了一种基于数据指纹位置标记的布谷鸟过滤器,图1是布谷鸟过滤器的结构示意图,如图1所示,由指纹记录表(Fingerprint RecordTable,FRT)和位置标记表(Position Flag Table,PFT)构成,指纹记录表FCT用来保存插入数据的指纹,位置标记表PFT用来记录指纹表中数据指纹的插入位置信息。
(1)指纹记录表
图2是指纹记录表的结构示意图,如图2所示,指纹记录表FCT由m个数组(以下称为桶bucket)组成,其中,要求m必须是2的指数次方,这个要求带来的好处是进行异或运算时,可以保证计算出来的下标一定是落在数组中的;每个桶有b个可以保存数据指纹f的存储单元e(以下称为槽)。
在布谷鸟过滤器中插入或查找或删除数据前,都要计算数据对应的数据摘要、数据指纹和两个候选桶,以待插入数据x为例,首先,计算待插入数据x的数据摘要:
digx=ha(x)mod 2n (1)
其中,n为数据摘要长度,ha(x)为输出特定长度二进制串的哈希函数。
然后,基于待插入数据和数据摘要,直接取用数据摘要的低位部分作为待插入数据的数据指纹,公式表示为:
fx=digxmod 2l (2)
其中,l为指纹长度;直接取用数据摘要的低位部分作为待插入数据的数据指纹,减少了一个哈希操作,降低了数据插入时延,具有更高的数据指纹计算效率。
最后,确定待插入数据x的两个不同候选桶位置:
其中,hb(x)为定长输出的哈希函数。
(2)位置标记表PFT
本实施例中的位置标记表PFT并没有采用常规的由0和1构成的矩阵Fm×b来记录数据指纹在指纹记录表FCT中的保存位置信息,而是通过仅记录保存在第二个候选桶中的位置下标值的方式,在不增加指纹长度的前提下显著增加了指纹比对长度,降低数据查询假阳率。
常规思路下,使用1比特表示每个数据指纹被插入的桶的位置,0和1分别表示p1位置和p2位置,位置标记表PFT是一个由0和1构成的矩阵Fm×b,每一行占用b bits,存储位置标记表PFT所需要的内存空间为mb bits。由于哈希函数存在碰撞的情况,导致过滤器的负载不能达到100%,因此在指纹记录表FRT中存在许多空槽,并且F在初始化的时候为零矩阵,因此比特0还表示指纹记录表FRT对应位置为空,这意味着F中保存了许多无效的位置信息。
通过观察并分析现有布谷鸟过滤器数据插入的特点,发现大多数数据指纹都会被插入到它们的p1位置,图3是在槽数b=2,4,8和桶数m=215,220,225时1在矩阵F所有元素中的占比图,这意味着在矩阵F中0的数量要远多于1,极端情况下矩阵F近似为稀疏矩阵。
基于此结论,只保存每个桶中被插入第二个候选桶p2位置的数据指纹在桶中的下标,使用m个向量(vector)组成位置标记表PFT,每个向量保存指纹记录表FRT对应桶中插入p2位置的数据指纹的位置下标,每个下标大小为logb,图4是位置标记表的结构图示意图。
借助位置标记表PFT的位置信息,在数据查询过程中,如果在指纹记录表FRT中发现了匹配的指纹,还需要在位置标记表PFT的对应向量中确认两个指纹是来自同一个桶位置,即在对应向量中能否查询到这两个指纹在桶内的下标,如图4所示。待查询数据y的指纹被哈希到bucket[i+1],并且bucket[i+1]是y的p2位置,假设位置标记表FRT中x的指纹与y相匹配,此时在vector[i+1]中找到x桶内的位置下标,表明当前桶也是x的p2位置,意味着x和y整个数据摘要都相同,因此返回查找成功。
实施例二
在一个或多个实施例中,公开了一种基于布谷鸟过滤器的数据插入方法,采用实施例一所提供的基于数据指纹位置标记的布谷鸟过滤器,当插入一个数据x时,首先计算x对应的数据摘要digx,然后计算x的指纹fx和两个候选桶数据插入流程如图5所示,插入算法如表1所示,其中插入过程分为三种情况:
(1)如果两个侯选桶和/>都有空槽,则随机选择一个桶/>将指纹fx存入任意一个空槽ej,j∈[0,b),如果i=2,即数据指纹fx最终保存在第二个候选桶中,则将j存入/>
(2)若两个候选桶中只有一个桶中剩余有空槽,则将fx
存入该桶的任意一个空槽ej,j∈[0,b)。如果i=2,即数据指纹fx最终保存在第二个候选桶中,则将j存入
(3)若两个候选桶都已经没有空槽,则从和/>中随机选择一个桶/>随机驱逐/>中任意一个槽ej,j∈[0,b)中的数据指纹fx′并将fx存入ej中,若/>等于/>并且等于/>则在向量/>中插入j;但当/>等于/>并且/>等于/>则在向量/>中删除j;如果i=2,即数据指纹fx最终保存在第二个候选桶中,则将j存入/>
被驱逐元素fx′计算当前插入位置的对偶位置如果该桶中存在空槽,则将fx′插入该空槽中并更新PFT中对应向量的位置下标值,如没有空槽,则重复上述驱逐过程,直到所有项都被存入过滤器中;此处存在一个最大驱逐次数MAXKICKNUM,如果驱逐过程超过MAXKI CKNUM,则元素插入失败,算法退出。
表1插入算法
实施例三
在一个或多个实施例中,公开了一种基于布谷鸟过滤器的数据查找方法,采用实施例一所提供的基于数据指纹位置标记的布谷鸟过滤器,数据查找流程如图6所示,查找算法如表2所示,当查找一个数据y时,首先计算y的数据摘要digy和数据指纹fy,然后计算y的两个插入候选桶位置将数据指纹fy和这两个桶内的所有指纹进行匹配:
如果桶中槽ej,j∈[0,b)保存的指纹与fy匹配,则在/>中查找j,如果不存在,则返回查找成功,否则返回查找失败。
如果桶中槽ek,k∈[0,b)保存的指纹与fy匹配,则在/>中查找k,如果存在,则返回查找成功,否则返回查找失败。
表2查找算法
实施例四
在一个或多个实施例中,公开了一种基于布谷鸟过滤器的数据删除方法,采用实施例一所提供的基于数据指纹位置标记的布谷鸟过滤器,删除流程如图7所示,删除算法如表3所示,当删除一个数据z时,首先通过实施例三提供的查找方法在过滤器中查找待删除元素z,依据查找结果进行相应操作:
(1)如果返回查找成功,则将该指纹从FRT中的对应位置删除,并删除PFT对应向量中的位置标记,返回删除成功,具体的:
如果待删除的数据指纹在第一个候选桶中,则将数据指纹从第一个候选桶中删除;
如果待删除的数据指纹在第二个候选桶中,则将数据指纹从第二个候选桶中删除,并删除第二个候选桶对应向量中的位置标记。
(2)如果查找失败,则说明该元素不存在于过滤器中,返回删除失败。
表3删除算法
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于数据指纹位置标记的布谷鸟过滤器,其特征在于,由指纹记录表和位置标记表构成;
所述指纹记录表,由m个桶组成,用来保存插入的数据指纹,其中,每个桶有b个保存数据指纹的槽;
所述位置标记表,由m个向量组成,为每个桶创建一个向量,用来记录数据指纹在指纹记录表中的插入位置信息;
其中,每个数据指纹对应两个候选桶,从中选择一个桶的一个槽来保存数据指纹,当且仅当最终保存在第二个候选桶中时,在第二个候选桶对应的向量中,记录槽的位置下标值。
2.如权利要求1所述的基于数据指纹位置标记的布谷鸟过滤器,其特征在于,所述桶的个数m,是2的指数次方。
3.如权利要求1所述的基于数据指纹位置标记的布谷鸟过滤器,其特征在于,所述数据指纹的计算方式为:
获取待插入数据;
通过哈希函数和取模操作,计算待插入数据的数据摘要:
digx=ha(x)mod 2n
其中,n为数据摘要长度,ha(·)表示定长输出的哈希函数;
基于待插入数据和数据摘要,直接取用数据摘要的低位部分作为待插入数据的数据指纹。
4.如权利要求1所述的基于数据指纹位置标记的布谷鸟过滤器,其特征在于,所述两个候选桶的计算方式,具体为:
其中,表示第一个候选桶,/>表示第二个候选桶,x表示待插入的数据,digx表示数据摘要,fx表示数据指纹,l为指纹长度,hb(·)表示定长输出的哈希函数,表示桶的个数。
5.一种基于布谷鸟过滤器的数据插入方法,其特征在于,所述布谷鸟过滤器为如权利要求1-4任一项所述的基于数据指纹位置标记的布谷鸟过滤器,当插入一个数据x时,首先计算x对应的数据摘要digx、数据指纹fx和两个候选桶然后进行插入,插入过程为:
从两个候选桶中选择一个桶的一个空槽ej来保存数据指纹,如果两个候选桶都没有空槽,则选择一个槽ej,通过驱逐过程驱逐槽ej中的原有数据指纹fx′,将数据指纹fx保存到空出来的槽ej中;
如果数据指纹fx最终保存在第二个候选桶中,则将槽ej的位置下标值j存入桶对应的向量中。
6.如权利要求5所述的一种基于布谷鸟过滤器的数据插入方法,其特征在于,所述从两个候选桶中选择一个桶的一个空槽ej来保存数据指纹,具体分为两种情况:
(1)如果两个侯选桶都有空槽,则随机选择一个桶,将数据指纹存入任意一个空槽ej,j∈[0,b),j是槽ej的位置下标值;
(2)若两个候选桶中只有一个桶中有空槽,则将数据指纹存入该桶的任意一个空槽ej,j∈[0,b),j是槽ej的位置下标值。
7.如权利要求5所述的一种基于布谷鸟过滤器的数据插入方法,其特征在于,所述两个候选桶都已经没有空槽,则驱逐过程具体为:
从两个候选桶中随机选择一个桶,随机驱逐桶中任意一个槽ej,∈[0,b)中的数据指纹fx′,并将fx存入ej中,更新桶对应向量/>的位置下标值;
被驱逐元素fx′计算当前插入位置的对偶位置,如果该桶中存在空槽,则将fx′插入该空槽中并更新对应向量的位置下标值,如果没有空槽,则重复驱逐过程,直到所有项都被存入过滤器中。
8.一种基于布谷鸟过滤器的数据查找方法,其特征在于,所述布谷鸟过滤器为如权利要求1-4任一项所述的基于数据指纹位置标记的布谷鸟过滤器,当查找一个数据y时,首先计算y对应的数据摘要digx、数据指纹fy和两个候选桶然后将数据指纹fy和这两个桶内的所有指纹进行匹配:
如果第一个候选桶中槽ej,j∈[0,b)保存的指纹与fy匹配,则在/>中查找j,如果不存在,则返回查找成功,否则返回查找失败;
如果第二个候选桶中槽ek,k∈[0,b)保存的指纹与fy匹配,则在/>中查找k,如果存在,则返回查找成功,否则返回查找失败。
9.一种基于布谷鸟过滤器的数据删除方法,其特征在于,所述布谷鸟过滤器为如权利要求1-4任一项所述的基于数据指纹位置标记的布谷鸟过滤器,当删除一个数据z时,查找被删除数据z的数据指纹,分为两种情况进行后续操作:
如果查找成功,则将数据指纹从指纹记录表中的对应位置删除,并删除对应向量中的位置标记,返回删除成功;
如果查找失败,则说明该元素不存在于过滤器中,返回删除失败。
10.如权利要求9所述的一种基于布谷鸟过滤器的数据删除方法,其特征在于,所述查找成功时的删除操作,具体为:
如果待删除的数据指纹在第一个候选桶中,则将数据指纹从第一个候选桶中删除;
如果待删除的数据指纹在第二个候选桶中,则将数据指纹从第二个候选桶中删除,并删除第二个候选桶对应向量中的位置标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310712462.5A CN116701440B (zh) | 2023-06-15 | 2023-06-15 | 一种布谷鸟过滤器及数据插入、查询、删除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310712462.5A CN116701440B (zh) | 2023-06-15 | 2023-06-15 | 一种布谷鸟过滤器及数据插入、查询、删除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116701440A true CN116701440A (zh) | 2023-09-05 |
CN116701440B CN116701440B (zh) | 2024-04-16 |
Family
ID=87842966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310712462.5A Active CN116701440B (zh) | 2023-06-15 | 2023-06-15 | 一种布谷鸟过滤器及数据插入、查询、删除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701440B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891858A (zh) * | 2024-03-14 | 2024-04-16 | 苏州大学 | 一种时空高效的并行近似成员查询方法及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170235496A1 (en) * | 2016-02-11 | 2017-08-17 | Dell Products L.P. | Data deduplication with augmented cuckoo filters |
EP3418909A1 (en) * | 2017-06-19 | 2018-12-26 | Thomson Licensing | A method for accessing a key in a cuckoo hash table |
US20190266252A1 (en) * | 2018-02-27 | 2019-08-29 | Advanced Micro Devices, Inc. | Cuckoo filters and cuckoo hash tables with biasing, compression, and decoupled logical sparsity |
CN110222088A (zh) * | 2019-05-20 | 2019-09-10 | 华中科技大学 | 基于插入位置选择的数据近似集合表示方法及系统 |
US20200167327A1 (en) * | 2018-11-28 | 2020-05-28 | Advanced Micro Devices, Inc. | System and method for self-resizing associative probabilistic hash-based data structures |
CN112148928A (zh) * | 2020-09-18 | 2020-12-29 | 鹏城实验室 | 一种基于指纹家族的布谷鸟过滤器 |
CN113535706A (zh) * | 2021-08-03 | 2021-10-22 | 重庆赛渝深科技有限公司 | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 |
CN113535705A (zh) * | 2021-08-03 | 2021-10-22 | 佛山赛思禅科技有限公司 | Sfad布谷鸟过滤器及基于sfad布谷鸟过滤器重复数据删除方法 |
CN114625719A (zh) * | 2022-03-18 | 2022-06-14 | 中国人民解放军国防科技大学 | 一种基于移动滤波框架的动态集合管理方法和系统 |
CN116126928A (zh) * | 2021-11-11 | 2023-05-16 | 中国科学院声学研究所 | 一种基于可变指纹布谷鸟过滤器的信息查找系统 |
-
2023
- 2023-06-15 CN CN202310712462.5A patent/CN116701440B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170235496A1 (en) * | 2016-02-11 | 2017-08-17 | Dell Products L.P. | Data deduplication with augmented cuckoo filters |
EP3418909A1 (en) * | 2017-06-19 | 2018-12-26 | Thomson Licensing | A method for accessing a key in a cuckoo hash table |
US20190266252A1 (en) * | 2018-02-27 | 2019-08-29 | Advanced Micro Devices, Inc. | Cuckoo filters and cuckoo hash tables with biasing, compression, and decoupled logical sparsity |
US20200167327A1 (en) * | 2018-11-28 | 2020-05-28 | Advanced Micro Devices, Inc. | System and method for self-resizing associative probabilistic hash-based data structures |
CN110222088A (zh) * | 2019-05-20 | 2019-09-10 | 华中科技大学 | 基于插入位置选择的数据近似集合表示方法及系统 |
CN112148928A (zh) * | 2020-09-18 | 2020-12-29 | 鹏城实验室 | 一种基于指纹家族的布谷鸟过滤器 |
CN113535706A (zh) * | 2021-08-03 | 2021-10-22 | 重庆赛渝深科技有限公司 | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 |
CN113535705A (zh) * | 2021-08-03 | 2021-10-22 | 佛山赛思禅科技有限公司 | Sfad布谷鸟过滤器及基于sfad布谷鸟过滤器重复数据删除方法 |
CN116126928A (zh) * | 2021-11-11 | 2023-05-16 | 中国科学院声学研究所 | 一种基于可变指纹布谷鸟过滤器的信息查找系统 |
CN114625719A (zh) * | 2022-03-18 | 2022-06-14 | 中国人民解放军国防科技大学 | 一种基于移动滤波框架的动态集合管理方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891858A (zh) * | 2024-03-14 | 2024-04-16 | 苏州大学 | 一种时空高效的并行近似成员查询方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116701440B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107153707B (zh) | 一种针对非易失内存的哈希表构建方法及系统 | |
CN101655861B (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
US8225060B2 (en) | Data de-duplication by predicting the locations of sub-blocks within the repository | |
CN102333036B (zh) | 一种实现高速路由查找的方法和系统 | |
WO2013152678A1 (zh) | 元数据查询方法和装置 | |
CN112486994B (zh) | 一种基于日志结构合并树的键值存储的数据快速读取方法 | |
CN116701440B (zh) | 一种布谷鸟过滤器及数据插入、查询、删除方法 | |
US7987205B1 (en) | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115510092B (zh) | 一种基于布谷鸟过滤器的近似成员查询优化方法 | |
CN113553476A (zh) | 一种利用哈希减少写停顿的键值存储方法 | |
CN115718819A (zh) | 一种索引构建方法、数据读取方法及索引构建装置 | |
CN102354301B (zh) | 缓存分区方法 | |
Bercea et al. | Fully-dynamic space-efficient dictionaries and filters with constant number of memory accesses | |
CN113688130B (zh) | 一种内存数据库存储引擎管理方法 | |
CN113392040B (zh) | 一种地址映射方法、装置、设备 | |
CN114691041A (zh) | 键值存储系统、垃圾回收方法 | |
CN112434085B (zh) | 基于Roaring Bitmap的用户数据统计方法 | |
US7953721B1 (en) | Integrated search engine devices that support database key dumping and methods of operating same | |
CN112269784A (zh) | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 | |
CN113886391B (zh) | 基于离散型的双指纹存储布谷鸟过滤器的数据处理方法 | |
CN116382588A (zh) | 一种基于学习索引的LSM-Tree存储引擎读放大问题优化方法 | |
CN112463837B (zh) | 一种关系型数据库数据存储查询方法 | |
CN113342706A (zh) | 一种基于非易失性内存的写优化可扩展哈希索引结构以及插入、刷新和删除方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |