CN112632337B - 一种应用于烟花过滤器的元素管理方法及烟花过滤器 - Google Patents
一种应用于烟花过滤器的元素管理方法及烟花过滤器 Download PDFInfo
- Publication number
- CN112632337B CN112632337B CN202011588175.0A CN202011588175A CN112632337B CN 112632337 B CN112632337 B CN 112632337B CN 202011588175 A CN202011588175 A CN 202011588175A CN 112632337 B CN112632337 B CN 112632337B
- Authority
- CN
- China
- Prior art keywords
- storage
- managed
- index value
- bucket
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 64
- 241000544061 Cuculus canorus Species 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 description 38
- 238000003780 insertion Methods 0.000 description 14
- 230000037431 insertion Effects 0.000 description 14
- 238000012217 deletion Methods 0.000 description 9
- 230000037430 deletion Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures 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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Collating Specific Patterns (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种应用于烟花过滤器的元素管理方法及烟花过滤器,通过获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;根据所述存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶;通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。由于本发明提供的元素管理方法不要求烟花过滤器的存储桶数为2的幂,因此可以解决现有技术中的布谷鸟过滤器的异或操作要求存储桶数必须为2的幂,导致元素的存储空间开销增大的问题。
Description
技术领域
本发明涉及计算机信息表示与信息检索技术领域,尤其涉及的是一种应用于烟花过滤器的元素管理方法及烟花过滤器。
背景技术
布谷鸟过滤器是一个紧凑型布谷鸟哈希表(Compact Cuckoo Hash Table),采用基于指纹(Fingerprint)的异或操作(XOR)计算每个元素的两个候选存储桶(Bucket)索引值,在该两个候选存储中,***或删除或查询该元素的指纹,而不是该元素本身。但是,现有的布谷鸟过滤器存在每个元素的存储空间开销随元素个数动态变化的问题,其原因是布谷鸟过滤器的异或操作要求存储桶数必须为2的幂(即2q,q为指数),导致最坏情况的每个元素的存储空间开销增大2倍。
因此,现有技术还有待改进和发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种应用于烟花过滤器的元素管理方法,其中,所述烟花过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括若干个存储块,所述若干个存储块均包括若干个候选存储桶,所述方法包括:
获取待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;
根据所述存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶;
通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。
在一种实施方式中,所述获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值包括:
根据第一哈希函数计算并确定待管理元素的指纹和所述待管理元素的锚点索引值;
根据所述待管理元素的指纹以及第二哈希函数计算并确定所述待管理元素的对应的存储块的随机偏移量。
在一种实施方式中,所述根据所述待管理元素的对应的存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶包括:
获取所述存储块的起始存储桶索引值;
根据所述存储块的起始存储桶索引值、所述待管理元素的锚点索引值和所述存储块的随机偏移量,通过加减法操作计算并得到候选存储桶索引值;
将所述候选存储桶索引值对应的存储桶作为候选存储桶。
在一种实施方式中,所述获取所述存储块的起始存储桶索引值包括:
获取预设的存储块固定偏移量;
将所述存储块的序号与所述存储块固定偏移量的乘积作为所述存储块的起始存储桶索引值。
在一种实施方式中,当所述元素管理操作为***操作时,所述通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作包括:
检测所述候选存储桶是否存在空闲存储位置;
若存在空闲存储位置,将所述待管理元素对应的指纹存储至所述空闲存储位置;
若不存在空闲存储位置,在若干个候选存储桶中选取一个目标候选存储桶,在所述目标候选存储桶中选取一个目标指纹,将所述待管理元素对应的指纹存储至所述目标指纹对应的存储位置;
获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置。
在一种实施方式中,所述获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置包括:
获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标存储桶之外的候选存储桶;
若所述参考候选存储桶具有空闲存储位置,将所述目标指纹存储至所述参考候选存储桶的空闲存储位置;
若所述参考候选存储桶未具有空闲存储位置,在所述参考候选存储桶内选取一个目标存储位置,将所述目标指纹存储于所述目标存储位置;
将所述目标存储位置原始存储的指纹重新作为目标指纹,将所述目标存储位置所在的存储桶重新作为目标候选存储桶,继续执行获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置直至参考候选存储桶具有空闲位置或者元素移动次数达到预设阈值。
在一种实施方式中,所述获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标存储桶之外的候选存储桶包括:
获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标候选存储桶所处的存储块,将所述目标候选存储桶所处的存储块作为目标存储块,并得到所述目标存储块的存储块索引值;
根据所述目标存储块的存储块索引值计算出所述目标存储块的随机偏移量;
根据所述目标存储块的随机偏移量和加减法操作计算出所述目标指纹的锚点索引值;
根据所述目标指纹的锚点索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标存储桶之外的候选存储桶。
在一种实施方式中,当所述元素管理操作为查询操作时,通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作包括:
在所述待管理元素对应的候选存储桶内查找是否存在与所述待管理元素的指纹匹配的指纹;
当存在时,显示所述待管理元素存在;
当不存在时,显示所述待管理元素不存在。
在一种实施方式中,当所述元素操作为删除操作时,所述通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作包括:
在所述待管理元素对应的候选存储桶内查找是否存在与所述待管理元素的指纹匹配的指纹;
当存在时,删除查找到的指纹;
当不存在时,显示所述待管理元素删除失败。
第二方面,本发明实施例还提供一种烟花过滤器,其特征在于,所述烟花过滤器包括:
布谷鸟哈希表,所述布谷鸟哈希表包括若干个存储块,所述若干个存储块均包括若干个候选存储桶;
获取模块,用于获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;
确定模块,用于根据所述存储块的随机偏移量和所述待管理元素的锚点索引值确定所述待管理元素对应的候选存储桶;
执行模块,用于通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。
本发明的有益效果:本发明实施例通过获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;根据所述存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶;通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。由于本发明提供的元素管理方法不要求烟花过滤器的存储桶数为2的幂,因此可以解决现有技术中的布谷鸟过滤器的异或操作要求存储桶数必须为2的幂,导致元素的存储空间开销增大的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用于烟花过滤器的元素管理方法的流程示意图。
图2是本发明实施例提供的获取随机偏移量以及锚点索引值的流程示意图。
图3是本发明实施例提供的确定候选存储桶的流程示意图。
图4是本发明实施例提供的现有的布谷鸟过滤器的结构示意图。
图5是本发明实施例提供的在烟花过滤器中***元素x的参考图。
图6是本发明实施例提供的在烟花过滤器中***元素y的参考图。
图7是本发明实施例提供的在烟花过滤器中查询元素x的参考图。
图8是本发明实施例提供的在烟花过滤器中删除元素x的参考图。
图9是本发明实施例提供的在烟花过滤器中***元素的完整流程示意图。
图10是本发明实施例提供的在烟花过滤器中查询元素的完整流程示意图。
图11是本发明实施例提供的在烟花过滤器中删除元素的完整流程示意图。
图12是本发明实施例提供的烟花过滤器的内部的模块连接图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
布谷鸟过滤器是一种支持删除操作的高效布鲁姆过滤器。具体地,标准布鲁姆过滤器采用m个比特的位图来表示一个集合的n个元素(Item),即每个***的元素采用k个哈希函数映射到位图的k个比特,设置该k个比特值为1。每个查询的元素采用相同的k个哈希函数映射到位图的k个比特,检查该k个比特值是否全为1;如果全为1,该元素在集合中;否则,该元素不在集合中。标准布鲁姆过滤器是一种空间高效的随机化数据结构,查询的假阳性错误率低(False Positive Rate)(即查询结果表明元素在集合中,但是该元素实际上不在该集合中),但不产生假阴性错误(False Negatives)(即如果查询结果表明元素不在集合中,则该元素一定不在该集合中)。标准布鲁姆过滤器支持元素***和查询操作,但是不支持元素删除操作。
计数布鲁姆过滤器是一种支持删除操作的布鲁姆过滤器,即采用m个计数器(Counter)来表示一个集合的n个元素。当***元素时,采用k个哈希函数映射元素到k个计数器,该k个计数器值自增1;当删除元素时,该k个计数器值自减1。当查询元素时,采用相同的k个哈希函数映射元素到k个计数器,检查该k个计数器值是否全大于1;如果全大于1,该元素在集合中;否则,该元素不在集合中。在实际应用中,计数器大小设置为4比特,可避免计数器溢出问题。因此,计数布鲁姆过滤器支持快速增量更新,但是其存储空间开销高,是标准布鲁姆过滤器的4倍。
而布谷鸟过滤器显著减少计数布鲁姆过滤器的存储空间开销,甚至比标准布鲁姆过滤器的存储空间开销更低。布谷鸟过滤器是一个紧凑型布谷鸟哈希表(Compact CuckooHash Table),采用基于指纹(Fingerprint)的异或操作(XOR)计算每个元素的两个候选存储桶(Bucket)索引值,在该两个候选存储中,***或删除或查询该元素的指纹,而不是该元素本身。但是,布谷鸟过滤器存在每个元素的存储空间开销随元素个数动态变化的问题,其原因是布谷鸟过滤器的异或操作要求存储桶数必须为2的幂(即2q,q为指数),导致最坏情况的每个元素的存储空间开销增大2倍。另外,布谷鸟过滤器仅支持k=2个哈希函数,即每个元素哈希映射到两个候选存储桶,难以支持哈希函数个数k>2,其原因是布谷鸟过滤器的异或操作仅支持两个操作数。
为了解决上述问题,本发明提供了一种新型的广义布谷鸟过滤器,称为烟花过滤器(Firework Filter),并提供了一种应用于烟花过滤器的元素管理方法,该方法不仅不要求过滤器的存储桶数为2的幂,而且支持哈希函数个数k等于或大于2,从而降低存储空间开销,并实现与现有布谷鸟过滤器相近的高速查询和更新性能。
如图4所示,烟花过滤器是一个分块布谷鸟哈希表,由多个存储块构成,每个存储块包含多个存储桶,且每个存储块包含的存储桶个数相同,每个存储桶包含多个存储位置。其中每一个存储块中的任意两个相邻存储桶,其各自对应的索引相邻,不同存储块中的各存储桶互不相同。烟花过滤器采用与存储桶的数量相同个数的哈希函数,映射每个元素到每个存储块的一个存储桶,存储每个元素的指纹在一个存储桶的一个存储位置,而不存储该元素本身。
具体地,所述布谷鸟哈希表中的每个存储桶均包括指定数量的存储位置,其中,存储位置用于存储元素的指纹,并且每个存储位置存储一个元素的指纹(Fingerprint)。此外,所述指定数量可以根据实际需要确定。例如,所述指定数量为4等。当所述指定数量为4时,说明布谷鸟哈希表中的每个存储桶均包含四个存储位置,即每个存储桶可以存储四个元素的指纹。
当需要执行元素***、查询和删除操作时,通过烟花哈希方法和加减法操作,得到该元素的候选存储桶索引值并确定执行操作命令的候选存储桶,使该候选存储桶完成相应的操作。
如图1所示,本实施例提供一种应用于烟花过滤器的元素管理方法,所述烟花过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括若干个存储块,所述若干个存储块均包括若干个候选存储桶,所述方法包括如下步骤:
步骤S100、获取待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值。
现有研究表明:当哈希函数个数k>2时,布谷鸟哈希表的负载因子(Load Factor)(即存储的元素个数与哈希表存储位置数的比值)增大。因此,给定布谷鸟过滤器的存储位置数,增加哈希函数个数k,可增加存储的元素个数,从而减少每个元素的存储空间开销(即过滤器存储空间与存储的元素个数的比值)。为了降低存储空间开销,本实施例为烟花过滤器中的存储块设计了一个随机偏移量,当需要对待管理元素执行元素管理操作时,会产生所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值。所述随机偏移量是根据哈希函数得到的数值,指的是元素在每一个存储块中的随机变化的偏移量;所述锚点索引值指元素在每个存储块的同一相对存储桶索引值。后续根据所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值确定执行元素管理操作的存储桶。由于本实施例引入了一个随机偏移量,因此本实施例中的元素管理方法不要求过滤器的存储桶数为2的幂,支持哈希函数个数k等于或大于2,可以有效降低每个元素的存储空间开销。
在一种实现方式中,如图2所示,所述步骤S100具体包括如下步骤:
步骤S110、根据第一哈希函数计算并确定待管理元素的指纹和所述待管理元素的锚点索引值;
步骤S120、根据所述待管理元素的指纹以及第二哈希函数计算并确定所述待管理元素的对应的存储块的随机偏移量。
当烟花过滤器接收到元素管理操作时,首先需要根据第一哈希函数计算并确定所述待管理的指纹和所述待管理元素的锚点索引值。举例说明:当***元素x时,计算元素x的指纹fx和锚点索引值H(x)。采用哈希函数F(x),计算指纹fx和锚点索引值H(x)的公式如下:
H(x):fx=F(x)
其中哈希值F(x)中的低位数值为fx,高位数值为H(x),“:”是数值连接符。锚点索引值H(x)是指元素x在每个存储块的同一相对存储桶索引值,其范围为[0,…,l-1]。
然后根据所述待管理元素的指纹以及第二哈希函数计算并确定每一个存储块的随机偏移量。举例说明:当需要计算元素X的第i个存储块的随机偏移量,已知元素X的指纹为F(x),采用哈希函数Gi和指纹F(x)计算第i个存储块的随机偏移量为哈希值Gi(fx)。在一种实现方式中,不需要一次性获取每一个存储块的随机偏移量,可以按存储块的序号顺序依次获取存储块的随机偏移量,并根据该存储块的随机偏移量和计算出的锚点索引值执行元素管理操作。当该存储块无法满足执行元素管理操作的条件时,再获取下一个存储块的随机偏移量,根据下一个存储块的随机偏移量和计算出的锚点索引值执行元素管理操作,以此类推直至找到有一个存储块可以执行元素管理操作或者遍历完所有的存储块。在具体实施时,可以引入一个索引值A,所述索引值的数值与当前搜索的存储块的序号相同。在计算下一个存储块的随机偏移量之前,首先判断索引值A是否满足条件A小于K,K为存储块的总量。当A小于K时,表示当前未遍历完所有的存储块,则索引值A自增1,然后进入计算下一个存储块的随机偏移量,根据下一个存储块的随机偏移量和计算出的锚点索引值执行元素管理操作的过程;当A大于或者等于K时,表示当前已遍历完所有的存储块。
为了确定执行所述待管理元素的元素管理操作的存储桶,如图2所示,所述方法还包括如下步骤:
步骤S200、根据所述待管理元素的对应的存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的存储桶,得到候选存储桶。
具体地,本实施例获取到所述待管理元素的对应的存储块的随机偏移量、所述待管理元素的锚点索引值以后,需要基于加减法操作对得到的随机偏移量和锚点索引值进行计算,得到所述待管理元素对应的存储桶的索引值,即候选存储桶索引值。根据该候选存储他索引值查找并确定执行所述待管理元素的元素管理操作的候选存储桶。
在一种实现方式中,如图3所示,所述步骤S200具体包括如下步骤:
步骤S210、获取所述待管理元素的对应的存储块的起始存储桶索引值;
步骤S220、根据所述存储块的起始存储桶索引值、所述待管理元素的锚点索引值和所述存储块的随机偏移量,通过加减法操作计算并得到候选存储桶索引值;
步骤S230、将所述候选存储桶索引值对应的存储桶作为候选存储桶。
如图5所示,每一个存储块对应的第一个存储桶的索引并不相同,第一个存储块的第一个存储桶的索引值为0,第二个存储块的第一个存储桶的索引值为3,第三个存储块的第一个存储桶的索引值为6,第四个存储块的第一个存储桶的索引值为9。因此为了准确确定候选存储桶的索引值,本实施例还需要预先获取起始存储桶索引值,用于指示每一个存储块的第一个存储桶的索引值。如图5所示,只有第一个存储块中的存储桶的索引值是从0开始,其他存储块中的存储桶的索引值均不是从0开始,且每一个存储块中第一个存储桶的索引值的相差数值均相等,因此在一种实现方式中,可以通过获取一个存储块中包含的存储桶的个数,将所述一个存储块中包含的存储桶的个数作为存储块固定偏移量。然后将存储块的序号与所述存储块固定偏移量的乘积作为与所述序号对应的存储块的起始存储桶索引值,得到所述待管理元素的对应的存储块的起始存储桶索引值。只有准确地确定了每一个存储块的第一个存储桶的索引值,才能在每一个存储块的第一个存储桶的索引值的基础上通过随机偏移量进行偏移,然后准确得到每一个存储块中可以用于执行待管理元素的元素管理操作的候选存储桶。
获取到所述待管理元素的对应的存储块的起始存储桶索引值之后,根据所述存储块的起始存储桶索引值、所述待管理元素的锚点索引值和所述存储块的随机偏移量,通过加减法操作计算并得到候选存储桶索引值,然后将所述候选存储桶索引值对应的存储桶作为候选存储桶。举例说明:假设需要计算元素x的第i个存储块的第i个候选存储桶索引值hi(x)。hi(x)的计算公式如下:
hi(x)=i×l+(H(x)+Gi(fx))mod l
其中Gi(fx)是哈希值,即指纹fx在第i个存储块的随机偏移量,其范围为[0,…,l-1],其中l是每个存储块包含的存储桶数,其数值相当于存储块固定偏移量;i×l是第i个存储块的起始存储桶索引值,(H(x)+Gi(fx))mod l是指纹fx在第i个存储块的相对存储桶索引值,其中“+”是加法操作。注意:元素x的k个候选存储桶索引值h0(x),…,hk-1(x)的范围为[0,…,m-1]。
找到执行所述待管理元素的元素管理操作的候选存储桶以后,如图1所示,所述方法还包括如下步骤:
步骤S300、通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。
本实施例中的烟花过滤器支持***操作、查询操作以及删除操作。当确定完毕候选存储桶以后,即通过所述待管理元素对应的候选存储桶执行相应的元素管理操作。下面分别以实现方式的形成对***操作、查询操作以及删除操作进行具体说明。
在一种实现方式中,当所述元素管理操作为***操作时,所述步骤S300具体包括如下步骤:
A1、检测所述候选存储桶是否存在空闲存储位置;
A2、若存在空闲存储位置,将所述待管理元素对应的指纹存储至所述空闲存储位置;
A3、若不存在空闲存储位置,在若干个候选存储桶中选取一个目标候选存储桶,在所述目标候选存储桶中选取一个目标指纹,将所述待管理元素对应的指纹存储至所述目标指纹对应的存储位置;
A4、获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置。
当所述元素管理操作为***操作时,即表示需要将所述待管理元素的指纹存储进所述待管理元素对应的候选存储桶中。因此需要检测所述候选存储桶是否存在空闲存储位置。在一种实现方式中,可以通过依次搜索所述待管理元素对应的候选存储桶hi(x),检查所有候选存储桶中各存储位置的存储数值是否为预设数值,若检查到存储数字为预设数值的存储位置,则将该存储位置判定为空闲存储位置。其中,预设数值表示该存储位置为空闲存储位置,未存储元素的指纹,所述预设数值为预先设置的,例如,0等。
检查完毕以后,若候选存储桶中存在空闲存储位置,则可以直接将所述待管理元素对应的指纹存储至所述空闲存储位置,完成元素的***操作。具体地,本实施例中的候选存储桶并非只有一个,每一个存储块中均有一个存储桶为所述待管理元素对应的候选存储桶,在进行***操作时,可以按顺序检查每一个候选存储桶中是否有空闲存储位置,若有空闲存储位置,则直接将该元素的指纹存储进空闲存储位置中,完成元素的***操作,也可以同时检查所有候选存储桶中是否有空闲存储位置,若有空间存储位置,则随机选择一个候选存储位置并将该元素的指纹存储进空闲存储位置中,完成元素的***操作。当所有候选存储桶中均没有空闲存储位置用于存储所述待管理元素的指纹时,则在所有候选存储桶中随机选取一个候选存储桶作为目标候选存储桶,然后在所述目标候选存储桶中选取一个指纹作为目标指纹,将所述待管理元素对应的指纹存储至所述目标指纹对应的存储位置。然后,获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置。
为了重新确定所述目标指纹的存储位置,在一种实现方式中,首先需要获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标存储桶之外的候选存储桶。具体地,可以通过获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标候选存储桶所处的存储块,将所述目标候选存储桶所处的存储块作为目标存储块,并得到所述目标存储块的存储块索引值。其中,所述目标存储块的存储块索引值可以按照公式d=h/l计算得到,l是单独一个存储块所包含的存储桶数。
然后根据所述目标存储块的存储块索引值计算出所述目标存储块的随机偏移量,之后根据所述目标存储块的随机偏移量和加减法操作计算出所述目标指纹的锚点索引值。其中所述目标存储块的随机偏移量和所述目标指纹的锚点索引值可以通过下述公式H=(h-Gd(g)+l)mod l计算得到,其中Gd(g)是指纹g的第d个存储块的随机偏移量,l是每个存储块包含的存储桶数,“–”是减法操作。H的范围为[0,…,l-1]。
之后,再根据所述目标指纹的锚点索引值确定所述目标指纹的参考候选存储桶。具体地,首先根据所述目标存储块的存储块索引值i,然后采用的公式i=(d+j)mod k计算出所述目标指纹对应的参考候选存储桶所处的存储块索引值,其中k是存储块数(也是哈希函数个数)。之后,再根据公式hj=i×l+(H(x)+Gi(g))mod l计算参考候选存储桶的索引值h,其中Gi(g)是指纹g在第i个存储块的随机偏移量,l是每个存储块包含的存储桶数,i×l是第i个存储块的起始存储桶索引值,“+”是加法操作。注意:hj的范围为[0,…,m-1]。
然后搜索所述参考候选存储桶中是否具有空闲存储位置,若所述参考候选存储桶具有空闲存储位置,将所述目标指纹存储至所述参考候选存储桶的空闲存储位置。若所述参考候选存储桶未具有空闲存储位置,在所述参考候选存储桶内选取一个目标存储位置,将所述目标指纹存储于所述目标存储位置。然后将所述目标存储位置原始存储的指纹重新作为目标指纹,将所述目标存储位置所在的存储桶重新作为目标候选存储桶,继续执行获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置直至参考候选存储桶具有空闲位置或者元素移动次数达到预设阈值。所述元素移动次数具体通过下述过程得到的,在所述参考候选存储桶内选取一个目标存储位置,将所述目标指纹存储于该目标存储位置之前,将所述移动次数自增1,以统计待管理元素的***操作对应的元素移动次数,用于衡量待管理元素对应的***操作是否结束,避免***操作进入死循环。
本实施例提供一种烟花过滤器的元素***操作的完整流程如图9所示。以***元素x、元素y为例子,图5是在烟花过滤器中***元素x的示例,图6是在烟花过滤器中***元素y的示例,图5、6中过滤器均包含k=4个存储块、每个存储块包含l=3个存储桶,每个存储桶包含C=2个存储位置、存储桶总数为m=12。
当***元素x时,具体***流程如下:
步骤1、采用第一哈希函数H(x):fx=F(x)计算元素x的指纹fx=11010010和锚点索引值H(x)=3。
步骤2、采用第二哈希函数Gi(fx)计算指纹fx在第0至3个存储块的4个随机偏移量,其中i表示存储块的序号;得到指纹fx在第0至3个存储块的4个随机偏移量G0(fx)=1,G1(fx)=2,G2(fx)=2,G3(fx)=1;
步骤3、采用公式hi(x)=i×l+(H(x)+Gi(fx))modl计算指纹fx的4个候选存储桶索引值得到:
h0(x)=(0*3+(3+1)mod3)=1,
h1(x)=(1*3+(3+2)mod3)=5,
h2(x)=(2*3+(3+2)mod3)=8,
h3(x)=(3*3+(3+1)mod3)=10。
步骤4、搜索指纹fx的4个候选存储桶h0(x)=1,h1(x)=5,h2(x)=8,h3(x)=10,发现3个候选存储桶h0(x),h1(x),h3(x)包含空闲存储位置,即图5上的第1、5、10的存储桶包含空闲存储位置。
步骤5、随机在指纹fx的三个空闲的候选存储桶中选择一个存储桶,例如选择h0(x)=1这一个空闲的候选存储桶,存储指纹fx在该存储桶的一个空闲存储位置。
当***元素y时,具体***流程如下:
步骤1、采用第一哈希函数H(x):fx=F(x)计算元素y的指纹fy=10100101和锚点索引值H(y)=1。
步骤2、采用第二哈希函数Gi(fy)计算指纹fy在第0至3个存储块的4个随机偏移量G0(fy)=0,G1(fy)=3,G2(fy)=1,G3(fy)=1;采用公式hi(x)=i×l+(H(x)+Gi(fx))modl计算指纹fy的4个候选存储桶索引值h0(y)=(0*3+(1+0)mod 3)=1,h1(y)=(1*3+(1+3)mod3)=4,h2(y)=(2*3+(1+1)mod 3)=8,h3(y)=(3*3+(1+1)mod 3)=11。
步骤3、搜索指纹fy的4个候选存储桶h0(y)=1,h1(y)=4,h2(y)=8,h3(y)=11,即图6上第1、4、8、11个存储桶,发现所有候选存储桶均不包含空闲存储位置。
步骤4、随机选择指纹fx的四个候选存储桶中其中一个存储桶,例如选取h2(y)=8即图上的第八个存储桶,存储指纹fy在该存储桶的一个存储位置,同时移出该存储位置的旧指纹fC。
步骤5、基于旧指纹fC的当前存储桶索引值为h=8,采用公式d=h/l和H=(h-Gd(g)+l)mod l计算旧指纹fC的锚点索引值H;采用公式i=(d+j)mod k和hj=i×l+(H(x)+Gi(g))modl计算旧指纹fC的其他3个候选存储桶索引值h0,h1,h3。
步骤6、搜索指纹fC的其他3个候选存储桶h0,h1,h3,发现候选存储桶h1=5,即图6上第5个存储桶包含空闲存储位置。
步骤7、随机选择候选存储桶h1=5的一个空闲存储位置,存储指纹fC在该存储位置。
当所述元素管理操作为查询操作时,所述步骤S300具体为:在所述待管理元素对应的候选存储桶内查找是否存在与所述待管理元素的指纹匹配的指纹;当存在时,显示所述待管理元素存在;当不存在时,显示所述待管理元素不存在。元素查询操作的具体流程如下(如图10所示):
C1、采用第一哈希函数H(x):fx=F(x)计算元素x的指纹fx和锚点索引值H(x)。
C2、采用第二哈希函数Gi(fx)计算指纹fx在i个存储块的随机偏移量,其中i表示存储块的序号;得到指纹fx在k个存储块的k个随机偏移量;
C3、判断索引值i是否满足条件i<k(k为存储块总数量),索引值i自增1。如果i<k,进入C4;否则,进入C7;i的初始值为0。
C4、根据公式hi(x)=i×l+(H(x)+Gi(fx))mod l计算指纹fx的i个候选存储桶索引值hi(x)。
C5、根据候选存储桶索引值hi(x)搜索元素x的第i个候选存储桶hi(x),查找该存储桶是否存在与fx匹配的指纹。如果hi(x)存在与fx匹配的指纹,进入C6;否则,进入C7。
C6:元素x在集合中,查询操作结束。
C7:元素x不在集合中,查询操作结束。
举例说明元素的查询操作流程:图7是在烟花过滤器中查询元素x的示例,图7中过滤器包含k=4个存储块、每个存储块包含l=3个存储桶,每个存储桶包含C=2个存储位置、存储桶总数为m=12。
当查询元素x时,具体查询流程步骤如下:
步骤1、第一哈希函数H(x):fx=F(x)计算元素x的指纹fx=11010010和锚点索引值H(x)=3。
步骤2、计算指纹fx在第0至3个存储块的4个随机偏移量G0(fx)=1,G1(fx)=2,G2(fx)=2,G3(fx)=1;
步骤3、根据存储块的随机偏移量以及第二哈希函数Gi(fx)计算指纹fx的4个候选存储桶索引值h0(x)=(0*3+(3+1)mod3)=1,h1(x)=(1*3+(3+2)mod3)=5,h2(x)=(2*3+(3+2)mod 3)=8,h3(x)=(3*3+(3+1)mod 3)=10。
步骤4、搜索指纹fx的4个候选存储桶h0(x)=1,h1(x)=5,h2(x)=8,h3(x)=10,即搜索图7中第1、5、8、10顺序位上的存储桶,查找发现指纹fx在存储桶h0(x)=1中,表明元素x在集合中。
当所述元素操作为删除操作时,所述步骤S300具体为:在所述待管理元素对应的候选存储桶内查找是否存在与所述待管理元素的指纹匹配的指纹;当存在时,删除查找到的指纹;当不存在时,显示所述待管理元素删除失败。元素删除操作的具体流程步骤如下(如图11所示):
C1、采用第一哈希函数H(x):fx=F(x)计算元素x的指纹fx和锚点索引值H(x)。
C2、采用第二哈希函数Gi(fx)计算指纹fx在i个存储块的随机偏移量,其中i表示存储块的序号;得到指纹fx在k个存储块的k个随机偏移量;
C3、判断索引值i是否满足条件i<k(k为存储块总数量),索引值i自增1。如果i<k,进入C4;否则,进入C7;i的初始值为0。
C4、根据公式hi(x)=i×l+(H(x)+Gi(fx))modl计算指纹fx的i个候选存储桶索引值hi(x)。
C5、根据候选存储桶索引值hi(x)搜索元素x的第i个候选存储桶hi(x),查找该存储桶是否存在与fx匹配的指纹。如果hi(x)存在与fx匹配的指纹,进入C6;否则,进入C7。
C6:随机选择一个候选存储桶,删除一个与fx匹配的指纹,删除操作结束。
C7:元素x删除失败,删除操作结束。
举例说明元素的删除操作流程:图8是在烟花过滤器中删除元素y的示例,图8中过滤器包含k=4个存储块、每个存储块包含l=3个存储桶,每个存储桶包含b=2个存储位置、存储桶总数为m=12。
当删除元素y时,具体删除流程如下:
步骤1、采用第一哈希函数H(x):fy=F(x)计算元素y的指纹fy=10100101和锚点索引值H(y)=1。
步骤2、计算指纹fy在第0至3个存储块的4个随机偏移量G0(fy)=0,G1(fy)=3,G2(fy)=1,G3(fy)=1;
步骤3、采用第二哈希函数Gi(fy)计算指纹fy的4个候选存储桶索引值h0(y)=(0*3+(1+0)mod3)=1,h1(y)=(1*3+(1+3)mod3)=4,h2(y)=(2*3+(1+1)mod 3)=8,h3(y)=(3*3+(1+1)mod 3)=11。
步骤4、根据计算出的候选存储桶索引值搜索指纹fy的4个候选存储桶h0(y)=1,h1(y)=4,h2(y)=8,h3(y)=11,由于指纹fc等于指纹fy(即fc==fy),查找发现指纹fc在存储桶h0(y)=1中,且指纹fy在存储桶h2(y)=8中。
步骤5、随机选择一个候选存储桶h0(y)=1,删除匹配指纹fc。
需要强调的是,烟花过滤器的元素删除方法可确保正确删除元素,不会产生假阴性错误。如果两个***元素的指纹相同,烟花过滤器***该两个元素的两个指纹在过滤器中。如果删除上述两个元素的一个指纹,另一个指纹仍在过滤器中,因此不会产生假阴性错误,可能产生假阳性错误。尽管如此,烟花过滤器的元素删除方法不会增加假阳性错误率,其假阳性错误率低,与标准布鲁姆过滤器、计数布鲁姆过滤器、布谷鸟过滤器等的假阳性错误率相同。
基于上述实施例,本发明还提供了一种烟花过滤器,如图12所示,该装置包括:布谷鸟哈希表,所述布谷鸟哈希表包括若干个存储块,所述若干个存储块均包括若干个候选存储桶;
获取模块,用于获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;
确定模块,用于根据所述存储块的随机偏移量和所述待管理元素的锚点索引值确定所述待管理元素对应的候选存储桶;
执行模块,用于通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。
本发明中的烟花过滤器不要求过滤器的存储桶数为2的幂,并可扩展支持哈希函数个数等于或大于2,从而提升存储空间效率以及查询和更新性能。本发明提供的烟花过滤器可以表示为(k,b)-FF,其中k表示哈希函数个数,b表示每个存储桶包含的存储位置数。现有布谷鸟过滤器是烟花过滤器的一个特例,即(2,4)-FF,其中k=2且b=4。对该类烟花过滤器(k,b)-FF的理论分析和实验评估,本发明人发现:烟花过滤器(4,1)-FF是最佳过滤器,即当哈希函数个数k=4,每个存储桶包含b=1个存储位置、过滤器的负载因子(Load Factor)为0.95时,(4,1)-FF具有最小的每个元素的存储空间开销和最快的查询和更新性能。
本发明的技术亮点如下:
1、本发明中的烟花过滤器是由k个存储块组成的分块布谷鸟哈希表,采用烟花哈希方法和加减法操作,基于哈希函数产生元素的一个锚点索引值和k个随机偏移量,计算指纹的k个存储块的k个候选存储桶索引值。其中锚点索引值是元素在每个存储块的同一相对存储桶索引值,第i个随机偏移量是指纹在第i个存储块的存储桶索引值。烟花过滤器不要求存储桶数为2的幂,支撑哈希函数个数等于或大于2。
2、本发明中的元素***方法,通过采用烟花哈希方法,产生元素的一个锚点索引值和k个随机偏移量;并采用加法操作,计算指纹的k个存储块的k个候选存储桶索引值,***指纹到其中一个候选存储桶。当旧指纹重新***过滤器时,基于旧指纹及其当前存储桶索引值,采用减法操作,计算旧指纹的锚点索引值;采用加法操作,计算旧指纹的其他存储块的k-1个候选存储桶索引值,***旧指纹到其他一个候选存储桶。
3、本发明中的元素查找方法或元素删除方法,通过采用烟花哈希方法,产生元素的一个锚点索引值和k个随机偏移量;采用加法操作,计算指纹的k个存储块的k个候选存储桶索引值;搜索元素的k个候选存储桶,查找或删除一个匹配指纹。
4、本发明提供一种最佳的烟花过滤器(4,1)-FF,即当哈希函数个数k=4,每个存储桶包含b=1个存储位置、过滤器的负载因子(Load Factor)为0.95时,(4,1)-FF具有最小的每个元素的存储空间开销和最快的查询和更新性能。
综上所述,本发明公开了一种应用于烟花过滤器的元素管理方法,通过获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;根据所述存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶;通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种。由于本发明提供的元素管理方法不要求烟花过滤器的存储桶数为2的幂,因此可以解决现有技术中的布谷鸟过滤器的异或操作要求存储桶数必须为2的幂,导致元素的存储空间开销增大的问题。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (7)
1.一种应用于烟花过滤器的元素管理方法,其特征在于,所述烟花过滤器包括布谷鸟哈希表,所述布谷鸟哈希表包括若干个存储块,所述若干个存储块均包括若干个候选存储桶,所述方法包括:
获取待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;
根据所述存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶;
通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种;
所述获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值包括:
根据第一哈希函数计算并确定待管理元素的指纹和所述待管理元素的锚点索引值;
根据所述待管理元素的指纹以及第二哈希函数计算并确定所述待管理元素的对应的存储块的随机偏移量;
所述根据所述待管理元素的对应的存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶包括:
获取所述存储块的起始存储桶索引值;
根据所述存储块的起始存储桶索引值、所述待管理元素的锚点索引值和所述存储块的随机偏移量,通过加减法操作计算并得到候选存储桶索引值;
将所述候选存储桶索引值对应的存储桶作为候选存储桶;
所述获取所述存储块的起始存储桶索引值包括:
获取预设的存储块固定偏移量,其中,存储块固定偏移量的确定方法包括:获取一个存储块中包含的存储桶的个数,将一个存储块中包含的存储桶的个数作为所述存储块固定偏移量;
将所述存储块的序号与所述存储块固定偏移量的乘积作为所述存储块的起始存储桶索引值。
2.根据权利要求1所述的应用于烟花过滤器的元素管理方法,其特征在于,当所述元素管理操作为***操作时,所述通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作包括:
检测所述候选存储桶是否存在空闲存储位置;
若存在空闲存储位置,将所述待管理元素对应的指纹存储至所述空闲存储位置;
若不存在空闲存储位置,在若干个候选存储桶中选取一个目标候选存储桶,在所述目标候选存储桶中选取一个目标指纹,将所述待管理元素对应的指纹存储至所述目标指纹对应的存储位置;
获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置。
3.根据权利要求2所述的应用于烟花过滤器的元素管理方法,其特征在于,所述获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置包括:
获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标候选存储桶之外的候选存储桶;
若所述参考候选存储桶具有空闲存储位置,将所述目标指纹存储至所述参考候选存储桶的空闲存储位置;
若所述参考候选存储桶未具有空闲存储位置,在所述参考候选存储桶内选取一个目标存储位置,将所述目标指纹存储于所述目标存储位置;
将所述目标存储位置原始存储的指纹重新作为目标指纹,将所述目标存储位置所在的存储桶重新作为目标候选存储桶,继续执行获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值与加减法操作重新确定所述目标指纹的存储位置直至参考候选存储桶具有空闲位置或者元素移动次数达到预设阈值。
4.根据权利要求3所述的应用于烟花过滤器的元素管理方法,其特征在于,所述获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标候选存储桶之外的候选存储桶包括:
获取所述目标候选存储桶的索引值,根据所述目标候选存储桶的索引值确定所述目标候选存储桶所处的存储块,将所述目标候选存储桶所处的存储块作为目标存储块,并得到所述目标存储块的存储块索引值;
根据所述目标存储块的存储块索引值计算出所述目标存储块的随机偏移量;
根据所述目标存储块的随机偏移量和加减法操作计算出所述目标指纹的锚点索引值;
根据所述目标指纹的锚点索引值确定所述目标指纹的参考候选存储桶;所述参考候选存储桶为所述目标指纹对应的候选存储桶中除所述目标候选存储桶之外的候选存储桶。
5.根据权利要求1所述的应用于烟花过滤器的元素管理方法,其特征在于,当所述元素管理操作为查询操作时,所述通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作包括:
在所述待管理元素对应的候选存储桶内查找是否存在与所述待管理元素的指纹匹配的指纹;
当存在时,显示所述待管理元素存在;
当不存在时,显示所述待管理元素不存在。
6.根据权利要求1所述的应用于烟花过滤器的元素管理方法,其特征在于,当所述元素操作为删除操作时,所述通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作包括:
在所述待管理元素对应的候选存储桶内查找是否存在与所述待管理元素的指纹匹配的指纹;
当存在时,删除查找到的指纹;
当不存在时,显示所述待管理元素删除失败。
7.一种烟花过滤器,其特征在于,所述烟花过滤器包括:
布谷鸟哈希表,所述布谷鸟哈希表包括若干个存储块,所述若干个存储块均包括若干个候选存储桶;
获取模块,用于获取待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值;
确定模块,用于根据所述存储块的随机偏移量和所述待管理元素的锚点索引值确定所述待管理元素对应的候选存储桶;
执行模块,用于通过所述待管理元素对应的候选存储桶执行所述待管理元素的元素管理操作;所述元素管理操作包括***操作、查询操作以及删除操作中的一种或者多种;
所述获取所述待管理元素的对应的存储块的随机偏移量和所述待管理元素的锚点索引值包括:
根据第一哈希函数计算并确定待管理元素的指纹和所述待管理元素的锚点索引值;
根据所述待管理元素的指纹以及第二哈希函数计算并确定所述待管理元素的对应的存储块的随机偏移量;
所述根据所述待管理元素的对应的存储块的随机偏移量、所述待管理元素的锚点索引值和加减法操作确定所述待管理元素对应的候选存储桶包括:
获取所述存储块的起始存储桶索引值;
根据所述存储块的起始存储桶索引值、所述待管理元素的锚点索引值和所述存储块的随机偏移量,通过加减法操作计算并得到候选存储桶索引值;
将所述候选存储桶索引值对应的存储桶作为候选存储桶;
所述获取所述存储块的起始存储桶索引值包括:
获取预设的存储块固定偏移量,其中,存储块固定偏移量的确定方法包括:获取一个存储块中包含的存储桶的个数,将一个存储块中包含的存储桶的个数作为所述存储块固定偏移量;
将所述存储块的序号与所述存储块固定偏移量的乘积作为所述存储块的起始存储桶索引值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011588175.0A CN112632337B (zh) | 2020-12-28 | 2020-12-28 | 一种应用于烟花过滤器的元素管理方法及烟花过滤器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011588175.0A CN112632337B (zh) | 2020-12-28 | 2020-12-28 | 一种应用于烟花过滤器的元素管理方法及烟花过滤器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632337A CN112632337A (zh) | 2021-04-09 |
CN112632337B true CN112632337B (zh) | 2023-12-22 |
Family
ID=75285797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011588175.0A Active CN112632337B (zh) | 2020-12-28 | 2020-12-28 | 一种应用于烟花过滤器的元素管理方法及烟花过滤器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632337B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641681B (zh) * | 2021-10-13 | 2022-02-22 | 南京大数据集团有限公司 | 一种空间自适应的海量数据查询方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577721A (zh) * | 2008-12-05 | 2009-11-11 | 湖南大学 | 一种索引拆分布鲁姆过滤器及其***、删除和查询方法 |
CN111552692A (zh) * | 2020-04-30 | 2020-08-18 | 南方科技大学 | 一种加减法布谷鸟过滤器 |
CN111552693A (zh) * | 2020-04-30 | 2020-08-18 | 南方科技大学 | 一种标签布谷鸟过滤器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11762828B2 (en) * | 2018-02-27 | 2023-09-19 | Advanced Micro Devices, Inc. | Cuckoo filters and cuckoo hash tables with biasing, compression, and decoupled logical sparsity |
-
2020
- 2020-12-28 CN CN202011588175.0A patent/CN112632337B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577721A (zh) * | 2008-12-05 | 2009-11-11 | 湖南大学 | 一种索引拆分布鲁姆过滤器及其***、删除和查询方法 |
CN111552692A (zh) * | 2020-04-30 | 2020-08-18 | 南方科技大学 | 一种加减法布谷鸟过滤器 |
CN111552693A (zh) * | 2020-04-30 | 2020-08-18 | 南方科技大学 | 一种标签布谷鸟过滤器 |
Non-Patent Citations (2)
Title |
---|
一种面向深度数据包检测的索引拆分Bloom过滤器;黄昆;张大方;;中国科学:信息科学(第08期);全文 * |
面向大数据处理的高精度多维计数布鲁姆过滤器;李玮;张大方;黄昆;谢鲲;;电子学报(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112632337A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148928B (zh) | 一种基于指纹家族的布谷鸟过滤器 | |
CN111552692B (zh) | 一种加减法布谷鸟过滤器 | |
CN109076021B (zh) | 数据处理的方法和装置 | |
US8190591B2 (en) | Bit string searching apparatus, searching method, and program | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
CN111552693B (zh) | 一种标签布谷鸟过滤器 | |
US8214405B2 (en) | Longest-match/shortest-match search apparatus, search method, and program | |
US8150856B2 (en) | Bit string searching apparatus, searching method, and program | |
WO1995034155A2 (en) | A method for storing and retrieving data and a memory arrangement | |
KR20010064977A (ko) | 시계열 데이터베이스에서 윈도우 구성의 이원성을 사용한 서브시퀀스 매칭방법 | |
CN103229164B (zh) | 数据访问方法和装置 | |
KR20090065130A (ko) | 시그니처 파일을 이용한 고차원 데이터 색인 및 검색방법과 그 시스템 | |
CN112632337B (zh) | 一种应用于烟花过滤器的元素管理方法及烟花过滤器 | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN109189759B (zh) | Kv存储***中的数据读取方法、数据查询方法、装置及设备 | |
KR100398142B1 (ko) | 대용량 데이터베이스에서의 고속에 의한 다해상도의 최적탐색방법 | |
CN111339381A (zh) | 一种字典序分区双数组的字符串批量查询方法及装置 | |
US20140240321A1 (en) | Polyline vertex reduction | |
US8166043B2 (en) | Bit strings search apparatus, search method, and program | |
CN103793626B (zh) | 碱基序列比对***及方法 | |
CN114625719B (zh) | 一种基于移动滤波框架的动态集合管理方法和*** | |
US8195667B2 (en) | Bit string search apparatus, search method, and program | |
US11409747B2 (en) | Combined filtering and indexing for read-only data sets | |
KR20030032499A (ko) | 시퀀스 데이터베이스에서 타임 워핑 기반의 서브시퀀스매칭방법 | |
CN113590895B (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 |