CN111552692B - 一种加减法布谷鸟过滤器 - Google Patents
一种加减法布谷鸟过滤器 Download PDFInfo
- Publication number
- CN111552692B CN111552692B CN202010360740.1A CN202010360740A CN111552692B CN 111552692 B CN111552692 B CN 111552692B CN 202010360740 A CN202010360740 A CN 202010360740A CN 111552692 B CN111552692 B CN 111552692B
- Authority
- CN
- China
- Prior art keywords
- bucket
- candidate
- data member
- fingerprint
- target
- 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.)
- Active
Links
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2443—Stored procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Collating Specific Patterns (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种加减法布谷鸟过滤器,所述加减法布谷鸟过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括第一分块和第二分块,所述第一分块和第二分块均包括预设数量的存储桶;当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作。本发明通过在执行数据成员操作时,采用基于指纹的加减法操作确定候选存储桶,不要求存储桶数必须为2的幂,从而减少每个数据成员的存储空间开销。
Description
技术领域
本发明涉及计算机信息表示与信息检索技术领域,特别涉及一种加减法布谷鸟过滤器。
背景技术
成员隶属查询(Membership Query)是许多网络应用和分布式系统(例如:协同缓存、数据包处理、键值存储和重复数据删除)的关键方法之一,要求满足存储空间开销低、快速查询和增量更新等三个关键需求。目前成员隶属查询普遍采用布鲁姆过滤器(BloomFilter)、标准布鲁姆过滤器(Standard Bloom Filter)、计数布鲁姆过滤器(CountingBloom Filter)以及布谷鸟过滤器(Cuckoo Filter)等,但是布鲁姆过滤器(Bloom Filter)及其变型难以同时满足上述三个关键需求。例如,标准布鲁姆过滤器支持数据成员插入和查询操作,但是不支持数据成员删除操作。计数布鲁姆过滤器是一种支持删除操作的布鲁姆过滤器,但是其存储空间开销高。布谷鸟过滤器是一种支持删除操作的空间高效布鲁姆过滤器,显著减少计数布鲁姆过滤器的存储空间开销,甚至比标准布鲁姆过滤器的存储空间开销低。但是,现有布谷鸟过滤器存在每个数据成员的存储空间开销随数据成员个数动态变化的问题,其原因是布谷鸟过滤器的异或操作要求存储桶数必须为2的幂(即2b,b为指数),导致最坏情况的每个数据成员的存储空间开销增大2倍。
因而现有技术还有待改进和提高。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种加减法布谷鸟过滤器。
为了解决上述技术问题,本发明所采用的技术方案如下:
一种加减法布谷鸟过滤器,其中,所述加减法布谷鸟过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括第一分块和第二分块,所述第一分块和第二分块均包括预设数量的存储桶;当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作,其中,所述预设数据成员为该数据成员管理操作对应的预设数据成员。
所述加减法布谷鸟过滤器,其中,所述数据成员管理操作包括插入操作、查询操作以及删除操作中的一种或多种。
所述加减法布谷鸟过滤器,其中,所述基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶具体包括:
确定预设数据成员对应的指纹以及第一候选存储桶,其中,所述第一候选存储桶包含于所述第一分块/第二分块;
基于所述第一候选存储桶,采用加减法操作确定所述预设数据成员对应的第二候选存储桶,其中,所述第二候选存储桶包含于所述第二分块/第一分块。
所述加减法布谷鸟过滤器,其中,当所述数据成员管理操作为插入操作时,所述基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
检测所述第一候选存储桶和所述第二候选存储桶是否存在空闲存储位置;
若存在空闲存储位置,则将预设数据成员对应的指纹存储于该空闲存储位置。
所述加减法布谷鸟过滤器,其中,所述基于确定得到的两个候选存储桶执行该数据成员管理操作包括:
若未存在空闲存储位置,则在所述第一候选存储桶和所述第二候选存储桶中选取一目标候选存储桶;
在所述目标候选存储桶内选取一目标指纹,将该预设数据成员对应的指纹存储于所述目标指纹对应的存储位置;
根据所述目标候选存储桶以及所述目标指纹,采用加减法操作确定所述目标指纹对应的参考存储桶,其中,所述参考存储桶所属分块与所述目标存储桶所属分块不同;
若参考存储桶具有空闲存储位置,则将目标指纹存储于该空闲存储位置。
所述加减法布谷鸟过滤器,其中,所述基于确定得到的两个候选存储桶执行该数据成员管理操作包括:
若参考存储桶未具有空闲存储位置,在所述参考存储桶内选取一目标存储位置,将目标指纹存储于该目标存储位置;
将该目标存储位置对应的指纹作为目标指纹,将该参考存储桶作为目标存储桶;
继续执行根据所述目标候选存储桶以及所述目标指纹,采用加减法操作确定所述目标指纹对应的参考存储桶的步骤,直至参考存储桶具有空闲存储位置或移动次数超过预设次数阈值。
所述加减法布谷鸟过滤器,其中,当所述数据成员管理操作为查询操作或删除操作时,所述基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
在所述第一候选存储桶和所述第二候选存储桶中查找该预设数据成员对应的指纹;
若查找到该预设数据成员对应的指纹,则对该指纹执行该数据成员管理操作。
所述加减法布谷鸟过滤器,其中,所述对该指纹执行该数据成员管理操作具体包括:
当数据成员管理操作为查询操作时,则显示数据成员管理操作成功;
当数据成员管理操作为删除操作时,则删除查找到的指纹。
所述加减法布谷鸟过滤器,其中,所述当所述数据成员管理操作为查询操作或删除操作时,所述基于确定得到的两个候选存储桶执行该数据成员管理操作包括:
若未查找到预设数据成员对应的指纹,则提示数据成员管理操作失败。
有益效果:与现有技术相比,本发明提供了一种加减法布谷鸟过滤器,所述加减法布谷鸟过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括第一分块和第二分块,所述第一分块和第二分块均包括预设数量的存储桶;当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作。本发明通过在执行数据成员操作时,采用基于指纹的加减法操作确定候选存储桶,不要求存储桶数必须为2的幂,从而减少每个数据成员的存储空间开销。
附图说明
图1为本发明提供的加减法布谷鸟过滤器的示意图。
图2为本发明提供的加减法布谷鸟过滤器执行插入操作的流程图。
图3为本发明提供的加减法布谷鸟过滤器中插入数据成员的一个示例。
图4为本发明提供的加减法布谷鸟过滤器中插入数据成员的另一个示例。
图5为本发明提供的加减法布谷鸟过滤器执行查询操作的流程图。
图6为本发明提供的加减法布谷鸟过滤器中查询数据成员的一个示例。
图7为本发明提供的加减法布谷鸟过滤器执行删除操作的流程图。
图8为本发明提供的加减法布谷鸟过滤器中删除数据成员的一个示例。
具体实施方式
本发明提供一种加减法布谷鸟过滤器,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
发明人经过研究发现,成员隶属查询(Membership Query)是许多网络应用和分布式系统(例如:协同缓存、数据包处理、键值存储和重复数据删除)的关键方法之一,要求满足存储空间开销低、快速查询和增量更新等三个关键需求。目前成员隶属查询普遍采用布鲁姆过滤器(Bloom Filter)、标准布鲁姆过滤器(Standard Bloom Filter)、计数布鲁姆过滤器(Counting Bloom Filter)和布谷鸟过滤器(Cuckoo Filter)等。
标准布鲁姆过滤器采用n个比特(即位图)来表示一个集合的m个数据成员(Item),即每个插入的数据成员采用k个哈希函数映射到位图的k个比特,该k个比特值设置为1。每个查询的数据成员采用相同的k个哈希函数映射到位图的k个比特,检查该k个比特值是否全为1;如果全为1,表明该数据成员在集合中;否则,表明该数据成员不在集合中。标准布鲁姆过滤器是一种空间高效的随机化数据结构,查询的假阳性错误率低(False PositiveRate)(即查询结果表明数据成员在集合中,但是该数据成员实际上不在该集合中),但不产生假阴性错误(False Negatives)(即如果查询结果表明数据成员不在集合中,那么该数据成员一定不在该集合中)。标准布鲁姆过滤器支持数据成员插入和查询操作,但是不支持数据成员删除操作。
计数布鲁姆过滤器是一种支持删除操作的布鲁姆过滤器,即采用n个计数器(Counter)来表示一个集合的m个数据成员。当插入数据成员时,采用k个哈希函数映射数据成员到k个计数器,该k个计数器值自增1;当删除数据成员时,该k个计数器值自减1。当查询数据成员时,采用相同的k个哈希函数映射数据成员到k计数器,检查该k个计数器值是否全大于1;如果全大于1,表明该数据成员在集合中;否则,表明该数据成员不在集合中。在实际应用中,计数器大小设置为4比特,可避免计数器溢出问题。因此,计数布鲁姆过滤器支持快速增量更新,但是其存储空间开销高,是标准布鲁姆过滤器的4倍。
布谷鸟过滤器是一种支持删除操作的空间高效布鲁姆过滤器,显著减少计数布鲁姆过滤器的存储空间开销,甚至比标准布鲁姆过滤器的存储空间开销低。布谷鸟过滤器采用布谷鸟哈希表(Cuckoo Hash Table)和基于异或操作(XOR)的候选存储桶索引值计算,即在每个数据成员哈希映射的两个候选存储桶(Bucket)中,插入或删除或查询该数据成员的一个指纹(Fingerprint),而不是该数据成员本身。但是,布谷鸟过滤器存在每个数据成员的存储空间开销随数据成员个数动态变化的问题,其原因是布谷鸟过滤器的异或操作要求存储桶数必须为2的幂(即2b,b为指数),导致最坏情况的每个数据成员的存储空间开销增大2倍。
由上所述可以知,目前成员隶属查询所采用的过滤器无法满足成员隶属查询的要求。由此,在本发明实施例一种加减法布谷鸟过滤器,所述加减法布谷鸟过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括第一分块和第二分块,所述第一分块和第二分块均包括预设数量的存储桶;当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作。本发明通过在执行数据成员操作时,采用基于指纹的加减法操作确定候选存储桶,不要求存储桶数必须为2的幂,从而减少每个数据成员的存储空间开销。
下面结合附图,通过对实施例的描述,对发明内容作进一步说明。
本实施提供了一种加减法布谷鸟过滤器,如图1所示,所述加减法布谷鸟过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括第一分块和第二分块,所述第一分块和第二分块均包括预设数量的存储桶。所述加减法布谷鸟过滤器将每个数据成员的指纹分别映射至两个候选存储桶中的一个候选存储桶,其中,两个候选存储桶中一个候选存储桶包含于第一分块中,另一个候选存储桶包含与第二分块中,并且在确定两个候选存储桶中的一个候选存储桶的索引后,可以基于加减法操作确定另外一个候选存储桶的索引。可以理解的是,在获取到预设数据成员时,基于该预设数据成员可以计算得到候选存储桶A的索引,再采用加减法操作可以确定该预设数据成员对应的候选存储桶B的索引,以确定预设数据成员对应的两个候选存储桶,其中,所述候选存储桶A和候选存储桶B包含于不同的分块,例如,候选存储桶A包含于第一分块,那么候选存储桶B包含于第二分块。
所述预设数量为布谷鸟哈希表对应的存储桶数(即存储桶的数量)的一半,即所述布谷鸟哈希表对应的存储桶数为2的倍数。其中,所述第一分块中的任意两个相邻存储桶,两个相邻存储桶各自对应的索引相邻,第二分块中的任意两个相邻存储桶,两个相邻存储桶各自对应的索引相邻,并且第一分块中的各存储桶与第二分块中的各存储桶互不相同。可以理解的是,所述第一分块和第二分块均包括预设数量的存储桶,并且第一分块中的三个存储桶为布谷鸟哈希表中预设数量的连续存储桶;第二分块中的三个存储桶为布谷鸟哈希表中预设数量的连续存储桶,并且第一分块中的各存储桶与第二分块中的各存储桶互不相同。例如,如图1所示,布谷鸟哈希表包括六个存储桶,六个存储桶的索引依次为0,1,2,3,4和5;所述第一分块包括索引为0,1和2的三个存储桶,那么第二分块包括索引为3,4和5的三个存储桶。
所述布谷鸟哈希表中的每个存储桶均包括指定数量的存储位置,其中,存储位置用于存储数据成员的指纹,并且每个存储位置存储一个数据成员的指纹(Fingerprint)。此外,所述指定数量可以根据实际需要确定。例如,所述指定数量为4等。当所述指定数量为4时,说明布谷鸟哈希表中的每个存储桶均包含四个存储位置,即每个存储桶可以存储四个数据成员的指纹。
所述数据成员管理操作包括插入操作、查询操作以及删除操作中的一种或多种。在本实施例中,所述数据成员管理操作可以为插入操作、查询操作或者删除操作。可以理解的是,所述加减法布谷鸟过滤器支持插入操作、查询操作以及删除操作。下面分别以实现方式的形成对插入操作、查询操作以及删除操作进行具体说明,并且在下面实施例中以第一分块中的存储桶的索引均小于第二分块中的存储桶的索引(即第一分块中的存储桶对应的最大索引小于第二分块中的存储桶对应的最小索引)为例。
在本实施例的一个实现方式中,如图2所示,所述数据成员管理操作为插入操作;所述当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
A10、确定预设数据成员对应的指纹以及第一候选存储桶,其中,所述第一候选存储桶包含于所述第一分块/第二分块;
A20、基于所述第一候选存储桶,采用加减法操作确定所述预设数据成员对应的第二候选存储桶,其中,所述第二候选存储桶包含于所述第二分块/第一分块;
A30、检测所述第一候选存储桶和所述第二候选存储桶是否存在空闲存储位置,若存在空闲存储位置,则执行步骤A40,若未存在空闲存储位置,则执行步骤A50;
A40、将预设数据成员对应的指纹存储于该空闲存储位置;
A50、在所述第一候选存储桶和所述第二候选存储桶中选取一目标候选存储桶;
A60、在所述目标候选存储桶内选取一目标指纹,将该预设数据成员对应的指纹存储于所述目标指纹对应的存储位置;
A70、根据所述目标候选存储桶以及所述目标指纹,采用加减法操作确定所述目标指纹对应的参考存储桶,其中,所述参考存储桶所属分块与所述目标存储桶所属分块不同;若参考存储桶具有空闲存储位置,则执行步骤A80;若参考存储桶未具有空闲存储位置,则执行步骤A90;
A80、将目标指纹存储于该空闲存储位置;
A90、在所述参考存储桶内选取一目标存储位置,将目标指纹存储于该目标存储位置;该目标存储位置对应的指纹作为目标指纹,将该参考存储桶作为目标存储桶,继续执行步骤A70直至参考存储桶具有空闲存储位置或移动次数超过预设次数阈值。
具体地,在所述步骤A10中,所述预设数据成员为所述插入操作对应的数据成员,在接收到所述插入操作时,获取到该预设数据成员。在获取到预设数据成员后,基于哈希函数G(x)计算该预设数据成员对应的指纹以及第一候选存储桶的索引;其中,所述指纹以及第一候选存储桶的计算公式可以为:
h0(x):fx=G(x) (1)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,G(x)为预设数据成员x对应的哈希值,其中,所述哈希值中的低位数值为fx,高位数值为h0(x),“:”为数值连接符,所述第一候选存储桶为第一分块中的存储桶,所述h0(x)的取值范围为其中,m/2为第一分块包含的存储桶数,m为布谷鸟哈希表包含的存储桶数。
进一步,在所述步骤A20中,确定预设数据成员对应的指纹以及第一候选存储桶的索引后,可以采用加减法操作确定所述预设数据成员对应的第二候选存储桶。在本实现方式中,第一候选存储桶为第一分块中的存储桶,那么第二候选存储桶为第二分块中的存储桶,从而基于加法操作确定第二候选存储桶的索引。其中,所述第二候选存储桶的索引h1(x)的计算公式可以为:
h1(x)=(h0(x)+H(fx))modm/2+m/2 (2)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,“+”是加法操作符,“mod”是求模操作符,H(fx)为指纹对应的哈希值,哈希值H(fx)的取值范围为h1(x)为第二候选存储桶的索引,h1(x)的取值范围为[m,...,m-1]。
进一步,在所述步骤A30中,在获取到第一候选存储桶的索引和第二候选存储桶的索引后,可以根据第一候选存储桶的索引和第二候选存储桶的索引确定第一候选存储桶和第二候选存储桶。在确定第一候选存储桶和第二候选存储桶后,可以检测所述第一候选存储桶h0(x)和所述第二候选存储桶h1(x)是否存在空闲存储位置。其中,所述检测所述第一候选存储桶h0(x)和所述第二候选存储桶h1(x)是否存在空闲存储位置的过程可以为:依次搜索第一候选存储桶h0(x)和所述第二候选存储桶h1(x),检查第一候选存储桶h0(x)和所述第二候选存储桶h1(x)中各存储位置的存储数值是否为预设数值,若检查到存储数字为预设数值的存储位置,在将该存储位置判定为空闲存储位置。其中,预设数值表示该存储位置为空闲存储位置,未存储数据成员的指纹,所述预设数值为预先设置的,例如,0等。
进一步,在所述步骤A40中,当存在空闲存储位置时,获取各空闲存储位置,并在获取到的所有空闲存储位置中选取一个空闲存储位置,将预设数据成员对应的指纹存储于该空闲存储位置。其中,所述空闲存储位置可以为第一候选存储桶h0(x)中的存储位置,也可以是第二候选存储桶h1(x)中的存储位置。此外,在将预设数据成员对应的指纹存储于该空闲存储位置后,完成该预设数据成员对应的插入操作。
进一步,在所述步骤A50中,当未存在空闲存储位置时,在所述第一候选存储桶和所述第二候选存储桶中选取一目标候选存储桶(即当前存储桶h),例如,将第一候选存储桶作为目标候选存储桶等。此外,在选取到目标候选存储桶后,设置数据成员移动次数为0。
进一步,在所述步骤A60中,在目标候选存储桶中随机选取一存储位置,将该存储位置存储的指纹作为目标指纹(即存储位置存储的旧指纹g),并将该预设数据成员对应的指纹(即新指纹f)存储于所述目标指纹对应的存储位置。此外,在目标候选存储桶中随机选取一存储位置之前,将移动次数自增1,并判断移动次数是否超过预设次数阈值,若移动次数超过预设次数阈值,则判定预设数据成员插入失败,若移动次数未超过预设次数阈值,则执行步骤A60。其中,所述预设次数阈值可以根据实际情况确定,例如,预设次数阈值为500等。
进一步,在所述步骤A70中,在目标候选存储桶中选取到目标指纹后,采用加减法操作确定所述目标指纹对应的参考存储桶,其中,所述参考存储桶所属分块与所述目标存储桶所属分块不同。例如,目标候选存储桶为第一分块中的存储桶,那么参考存储桶为第二分块中的存储桶,并且目标候选存储桶与参考存储桶均为目标指纹对应的候选存储桶。其中,所述参考存储桶的计算方式可以根据目标候选存储桶所处的分块确定,当目标候选存储桶处于第一分块,则采用加法操作确定参考存储桶;当目标候选存储桶处于第二分块时,则采用减法操作确定参考存储桶。
在一个具体实现方式中,所述参考存储桶的计算公式可以为:
其中,i为目标候选存储桶的索引,j为参考存储桶的索引,“+”是加法操作符,“-”是减法操作符,“mod”是求模操作符,block0表示第一分块,block1表示第二分块,H(g)为指纹对应的哈希值,哈希值H(g)的取值范围为g为目标指纹,m/2为第一分块/第二分块包含的存储桶数,m为布谷鸟哈希表包含的存储桶数。
进一步,在获取到参考存储桶后,检测参考存储桶是否均有具有空闲存储位置,若参考存储桶具有空闲存储位置,则执行步骤A80;若参考存储桶未具有空闲存储位置,则执行步骤A90。
进一步,在所述步骤A80中,将目标指纹存储于该空闲存储位置,已完成所述预设数据成员的插入操作。
进一步,在所述步骤A90中,在所述参考存储桶内选取一目标存储位置,将目标指纹存储于该目标存储位置;将该目标存储位置对应的指纹作为目标指纹,将该参考存储桶作为目标存储桶,继续执行步骤A70直至参考存储桶具有空闲存储位置或移动次数超过预设次数阈值。此外,在所述参考存储桶内选取一目标存储位置,将目标指纹存储于该目标存储位置之前,将所述移动次数自增1,以统计预设成员数据成员的插入操作对应的成员移动次数,用于衡量预设成员数据成员对应的插入操作是否结束,避免插入操作进入死循环。
举例说明加减布谷鸟过滤器的数据成员插入方法:
示例1:如图3所示,当插入数据成员x时,首先,采用公式(1)和(2)计算数据成员x的两个分块(即block0和block1)中的两个候选存储桶索引h0(x)=1和h1(x)=4;其次,搜索两个候选存储桶h0(x)=1和h1(x)=4,发现该两个存储桶均包含空闲存储位置;最后,随机选择一个空闲候选存储桶h1(x)=1,存储指纹fx在该存储桶中。
示例2:如图4所示,当插入数据成员y时,首先,采用公式(1)和(2)计算数据成员y的两个分块中的两个候选存储桶索引h0(y)=1和h1(y)=3;其次,搜索两个候选存储桶索引h0(y)=1和h1(y)=3,发现该两个存储桶均不包含空闲存储位置,随机选择一个候选存储桶h1(y)=3作为目标候选存储桶,从该目标候选存储桶中移出目标指纹fv,存储预设数据成员的指纹fy在该目标候选存储桶中;接着,基于目标指纹fv和目标候选存储桶索引h1(y)=3,采用公式(3)计算目标指纹fv的在另一个分块(即block0)中的参考存储桶索引h0(y)=0;最后,搜索候选存储桶h0(y)=0,发现该存储桶包含空闲存储位置,存储指纹fv在该参考存储桶中。
在本实施例的一个实现方式中,如图5所示,所述数据成员管理操作为查询操作;所述当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
B10、确定预设数据成员对应的指纹以及第一候选存储桶,其中,所述第一候选存储桶包含于所述第一分块/第二分块;
B20、基于所述第一候选存储桶,采用加减法操作确定所述预设数据成员对应的第二候选存储桶,其中,所述第二候选存储桶包含于所述第二分块/第一分块;
B30在所述第一候选存储桶和所述第二候选存储桶中查找该预设数据成员对应的指纹;
B40、若查询到该预设数据成员对应的指纹,则显示数据成员管理查询成功;
B50、若未查询到预设数据成员对应的指纹,则提示数据成员查询操作失败。
具体地,在获取到预设数据成员后,基于哈希函数G(x)计算该预设数据成员对应的指纹以及第一候选存储桶的索引;其中,所述指纹以及第一候选存储桶的计算公式可以为:
h0(x):fx=G(x) (1)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,G(x)为预设数据成员x对应的哈希值,其中,所述哈希值中的低位数值为fx,高位数值为h0(x),“:”为数值连接符,所述第一候选存储桶为第一分块中的存储桶,所述h0(x)的取值范围为其中,m/2为第一分块包含的存储桶数,m为布谷鸟哈希表包含的存储桶数。
进一步,在确定预设数据成员对应的指纹以及第一候选存储桶的索引后,可以采用加减法操作确定所述预设数据成员对应的第二候选存储桶。在本实现方式中,第一候选存储桶为第一分块中的存储桶,那么第二候选存储桶为第二分块中的存储桶,从而基于加法操作确定第二候选存储桶的索引。其中,所述第二候选存储桶的索引h1(x)的计算公式可以为:
h1(x)=(h0(x)+H(fx))modm/2+m/2 (2)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,“+”是加法操作符,“mod”是求模操作符,H(fx)为指纹对应的哈希值,哈希值H(fx)的取值范围为h1(x)为第二候选存储桶的索引,h1(x)的取值范围为[m,...,m-1]。
进一步,在获取到第一候选存储桶h0(x)和第二候选存储桶h1(x)后,搜索第一候选存储桶h0(x)和第二候选存储桶h1(x)是否匹配该预数据成员x的指纹fx。如果存储匹配指纹fx,表明预设数据成员x在集合中,返回查询结果为真(True),预设数据成员查询结束;如果未存储匹配指纹fx,表明预设数据成员x不在集合中,返回查询结果为假(False),数据成员查询结束。
举例说明加减布谷鸟过滤器的数据成员查询方法:
如图6所示,当查询数据成员x时,首先,采用公式(1)和(2)计算数据成员x(即block0和block1)中的两个候选存储桶索引h0(x)=1和h1(x)=4;其次,搜索两个候选存储桶h0(x)=1和h1(x)=4,发现候选存储桶h0(x)=1存在一个匹配指纹fx;最后,查询表明数据成员x在集合中,返回查询结果为真。
在本实施例的一个实现方式中,如图7所示,所述数据成员管理操作为删除操作;所述当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
C10、确定预设数据成员对应的指纹以及第一候选存储桶,其中,所述第一候选存储桶包含于所述第一分块/第二分块;
C20、基于所述第一候选存储桶,采用加减法操作确定所述预设数据成员对应的第二候选存储桶,其中,所述第二候选存储桶包含于所述第二分块/第一分块;
C30在所述第一候选存储桶和所述第二候选存储桶中查找该预设数据成员对应的指纹;
C40、若查询到该预设数据成员对应的指纹,则删除查找到的指纹;
C50、若未查询到预设数据成员对应的指纹,则提示数据成员删除操作失败。
具体地,在获取到预设数据成员后,基于哈希函数G(x)计算该预设数据成员对应的指纹以及第一候选存储桶的索引;其中,所述指纹以及第一候选存储桶的计算公式可以为:
h0(x):fx=G(x) (1)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,G(x)为预设数据成员x对应的哈希值,其中,所述哈希值中的低位数值为fx,高位数值为h0(x),“:”为数值连接符,所述第一候选存储桶为第一分块中的存储桶,所述h0(x)的取值范围为其中,m/2为第一分块包含的存储桶数,m为布谷鸟哈希表包含的存储桶数。
进一步,在确定预设数据成员对应的指纹以及第一候选存储桶的索引后,可以采用加减法操作确定所述预设数据成员对应的第二候选存储桶。在本实现方式中,第一候选存储桶为第一分块中的存储桶,那么第二候选存储桶为第二分块中的存储桶,从而基于加法操作确定第二候选存储桶的索引。其中,所述第二候选存储桶的索引h1(x)的计算公式可以为:
h1(x)=(h0(x)+H(fx))modm/2+m/2 (2)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,“+”是加法操作符,“mod”是求模操作符,H(fx)为指纹对应的哈希值,哈希值H(fx)的取值范围为h1(x)为第二候选存储桶的索引,h1(x)的取值范围为[m,...,m-1]。
进一步,在获取到第一候选存储桶h0(x)和第二候选存储桶h1(x)后,搜索第一候选存储桶h0(x)和第二候选存储桶h1(x)是否匹配该预数据成员x的指纹fx。如果存储匹配指纹fx,删除匹配指纹fx,删除成功;如果未存储匹配指纹fx,表明预设数据成员x不在集合中,删除数据成员失败,数据成员删除结束。
举例说明加减布谷鸟过滤器的数据成员删除方法:
如图8所示,当删除数据成员y时,首先,采用公式(1)和(2)计算数据成员y的(即block0和block1)中的两个候选存储桶索引h0(y)=1和h1(y)=3;其次,搜索两个候选存储桶h0(y)=1和h1(y)=3,假设指纹fa与指纹fy相同(即fa==fy),发现两个候选存储桶h0(y)=1和h1(y)=3分别存在匹配指纹fa和fy;最后,随机选择一个候选存储桶h0(y)=1,从该存储桶中删除一个匹配指纹fa,删除数据成员y成功。
进一步,加减布谷鸟过滤器的数据成员删除方法可确保正确删除数据成员,不会产生假阴性错误。如果两个插入数据成员的指纹相同,加减布谷鸟过滤器插入该两个数据成员的两个指纹在过滤器中。如果删除上述两个数据成员的一个指纹,另一个指纹仍在过滤器中,因此不会产生假阴性错误,可能产生假阳性错误。例如,在图8中,当数据成员y删除后查询数据成员a,由于指纹fa与指纹fy相同(即fa==fy)且指纹fy在一个候选存储桶h1(y)=3中,查询表明数据成员a在集合中,返回查询结果为真。当查询数据成员y时,由于指纹fy在一个候选存储桶h1(y)=3中,查询表明数据成员y在集合中,返回查询结果为真;但是,由于数据成员y已删除成功,上述查询结果为一个假阳性错误。虽然如此,加减布谷鸟过滤器的数据成员删除方法不会增加假阳性错误率,其假阳性错误率低,并与标准布鲁姆过滤器、计数布鲁姆过滤器、布谷鸟过滤器等的假阳性错误率相同。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种加减法布谷鸟过滤器,其特征在于,所述加减法布谷鸟过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括第一分块和第二分块,所述第一分块和第二分块均包括预设数量的存储桶;当加减法布谷鸟过滤器接收到数据成员管理操作时,基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶,基于确定得到的两个候选存储桶执行该数据成员管理操作,其中,所述预设数据成员为该数据成员管理操作对应的预设数据成员;所述基于加减法操作分别在第一分块和第二分块中确定预设数据成员对应的候选存储桶具体包括:
确定预设数据成员对应的指纹以及第一候选存储桶,其中,所述第一候选存储桶包含于所述第一分块/第二分块,所述指纹以及第一候选存储桶的计算公式为:
h0(x):fx=G(x)
其中,fx为预设数据成员对应的指纹,h0(x)为第一候选存储桶的索引,x为预设数据成员,G(x)为预设数据成员x对应的哈希值;
基于所述第一候选存储桶,采用加减法操作确定所述预设数据成员对应的第二候选存储桶,其中,所述第二候选存储桶包含于所述第二分块/第一分块,所述第二候选存储桶的索引h1(x)的计算公式为:
h1(x)=(h0(x)+H(fx))modm/2+m/2
2.根据权利要求1所述加减法布谷鸟过滤器,其特征在于,所述数据成员管理操作包括插入操作、查询操作以及删除操作中的一种或多种。
3.根据权利要求1所述加减法布谷鸟过滤器,其特征在于,当所述数据成员管理操作为插入操作时,所述基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
检测所述第一候选存储桶和所述第二候选存储桶是否存在空闲存储位置;
若存在空闲存储位置,则将预设数据成员对应的指纹存储于该空闲存储位置。
4.根据权利要求3所述加减法布谷鸟过滤器,其特征在于,所述基于确定得到的两个候选存储桶执行该数据成员管理操作包括:
若未存在空闲存储位置,则在所述第一候选存储桶和所述第二候选存储桶中选取一目标候选存储桶;
在所述目标候选存储桶内选取一目标指纹,将该预设数据成员对应的指纹存储于所述目标指纹对应的存储位置;
根据所述目标候选存储桶以及所述目标指纹,采用加减法操作确定所述目标指纹对应的参考存储桶,其中,所述参考存储桶所属分块与所述目标候选存储桶所属分块不同;
若参考存储桶具有空闲存储位置,则将目标指纹存储于该空闲存储位置。
5.根据权利要求4所述加减法布谷鸟过滤器,其特征在于,所述基于确定得到的两个候选存储桶执行该数据成员管理操作包括:
若参考存储桶未具有空闲存储位置,在所述参考存储桶内选取一目标存储位置,将目标指纹存储于该目标存储位置;
将该目标存储位置对应的指纹作为目标指纹,将该参考存储桶作为目标候选存储桶;
继续执行根据所述目标候选存储桶以及所述目标指纹,采用加减法操作确定所述目标指纹对应的参考存储桶的步骤,直至参考存储桶具有空闲存储位置或移动次数超过预设次数阈值。
6.根据权利要求1所述加减法布谷鸟过滤器,其特征在于,当所述数据成员管理操作为查询操作或删除操作时,所述基于确定得到的两个候选存储桶执行该数据成员管理操作具体包括:
在所述第一候选存储桶和所述第二候选存储桶中查找该预设数据成员对应的指纹;
若查找到该预设数据成员对应的指纹,则对该指纹执行该数据成员管理操作。
7.根据权利要求6所述加减法布谷鸟过滤器,其特征在于,所述对该指纹执行该数据成员管理操作具体包括:
当数据成员管理操作为查询操作时,则显示数据成员管理操作成功;
当数据成员管理操作为删除操作时,则删除查找到的指纹。
8.根据权利要求6所述加减法布谷鸟过滤器,其特征在于,所述当所述数据成员管理操作为查询操作或删除操作时,所述基于确定得到的两个候选存储桶执行该数据成员管理操作包括:
若未查找到预设数据成员对应的指纹,则提示数据成员管理操作失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010360740.1A CN111552692B (zh) | 2020-04-30 | 2020-04-30 | 一种加减法布谷鸟过滤器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010360740.1A CN111552692B (zh) | 2020-04-30 | 2020-04-30 | 一种加减法布谷鸟过滤器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111552692A CN111552692A (zh) | 2020-08-18 |
CN111552692B true CN111552692B (zh) | 2023-04-07 |
Family
ID=72006300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010360740.1A Active CN111552692B (zh) | 2020-04-30 | 2020-04-30 | 一种加减法布谷鸟过滤器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111552692B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148928B (zh) * | 2020-09-18 | 2024-02-20 | 鹏城实验室 | 一种基于指纹家族的布谷鸟过滤器 |
CN111858651A (zh) * | 2020-09-22 | 2020-10-30 | 中国人民解放军国防科技大学 | 一种数据处理方法以及数据处理装置 |
CN112632337B (zh) * | 2020-12-28 | 2023-12-22 | 南方科技大学 | 一种应用于烟花过滤器的元素管理方法及烟花过滤器 |
CN113535706B (zh) * | 2021-08-03 | 2023-05-23 | 佛山赛思禅科技有限公司 | 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法 |
CN113641681B (zh) * | 2021-10-13 | 2022-02-22 | 南京大数据集团有限公司 | 一种空间自适应的海量数据查询方法 |
CN114268501B (zh) * | 2021-12-24 | 2024-02-23 | 深信服科技股份有限公司 | 数据处理方法、防火墙生成方法、计算设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655861A (zh) * | 2009-09-08 | 2010-02-24 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
CN102609441A (zh) * | 2011-12-27 | 2012-07-25 | 中国科学院计算技术研究所 | 基于分布熵的局部敏感哈希高维索引方法 |
CN105630955A (zh) * | 2015-12-24 | 2016-06-01 | 华中科技大学 | 一种高效动态的数据集合成员管理方法 |
CN108287840A (zh) * | 2017-01-09 | 2018-07-17 | 北京大学 | 一种基于矩阵哈希的数据存储和查询方法 |
CN109815234A (zh) * | 2018-12-29 | 2019-05-28 | 杭州中科先进技术研究院有限公司 | 一种流式计算模型下的多重布谷鸟过滤器 |
-
2020
- 2020-04-30 CN CN202010360740.1A patent/CN111552692B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655861A (zh) * | 2009-09-08 | 2010-02-24 | 中国科学院计算技术研究所 | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 |
CN102609441A (zh) * | 2011-12-27 | 2012-07-25 | 中国科学院计算技术研究所 | 基于分布熵的局部敏感哈希高维索引方法 |
CN105630955A (zh) * | 2015-12-24 | 2016-06-01 | 华中科技大学 | 一种高效动态的数据集合成员管理方法 |
CN108287840A (zh) * | 2017-01-09 | 2018-07-17 | 北京大学 | 一种基于矩阵哈希的数据存储和查询方法 |
CN109815234A (zh) * | 2018-12-29 | 2019-05-28 | 杭州中科先进技术研究院有限公司 | 一种流式计算模型下的多重布谷鸟过滤器 |
Also Published As
Publication number | Publication date |
---|---|
CN111552692A (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111552692B (zh) | 一种加减法布谷鸟过滤器 | |
CN112148928B (zh) | 一种基于指纹家族的布谷鸟过滤器 | |
US10620862B2 (en) | Efficient recovery of deduplication data for high capacity systems | |
CN111552693B (zh) | 一种标签布谷鸟过滤器 | |
US8868926B2 (en) | Cryptographic hash database | |
US10222987B2 (en) | Data deduplication with augmented cuckoo filters | |
CN109076021B (zh) | 数据处理的方法和装置 | |
US11048757B2 (en) | Cuckoo tree with duplicate key support | |
CN105468642A (zh) | 数据的存储方法及装置 | |
CN105426408A (zh) | 一种多索引的数据处理方法及装置 | |
CN103229164B (zh) | 数据访问方法和装置 | |
EP3251033B1 (en) | Hybrid data distribution in a massively parallel processing architecture | |
CN111247518A (zh) | 数据库分片 | |
WO2010135082A1 (en) | Localized weak bit assignment | |
CN111475105B (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113901279B (zh) | 一种图数据库的检索方法和装置 | |
CN113961514A (zh) | 数据查询方法及装置 | |
CN112148217B (zh) | 全闪存储系统的重删元数据的缓存方法、装置及介质 | |
CN111522502A (zh) | 数据去重方法、装置、电子设备及计算机可读存储介质 | |
KR20130049117A (ko) | 메모리 기반의 서머리 벡터를 구비한 인덱스 구조의 데이터 검색 장치 및 방법 | |
CN113867627B (zh) | 一种存储系统性能优化方法及系统 | |
CN116450607A (zh) | 数据处理方法、设备及存储介质 | |
CN112632337B (zh) | 一种应用于烟花过滤器的元素管理方法及烟花过滤器 | |
CN110413617B (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 |