1.本发明涉及动态集合管理方法的技术领域,具体涉及一种高效率的动态集合管理方法和 系统。
背景技术:2.在计算机技术领域,数据集合是一种常用的数据插入工具,而动态集合是一种可以根据 需求对其进行更新的数据集合。对于动态集合来说,其常见的操作包括数据的插入、删除和 查询,其中常见的数据查询操作包括三种类型,分别为成员查询、关联查询和多重性查询, 下面分别对各种查询的方式做详细的介绍。
3.成员查询是用于查询某个元素是否在集合中的查询方式,这种查询方式被广泛应用在许 多网络和分布式系统中的缓存、路由器和存储系统上,以及各种ip地址查找和网络包分类的 网络应用中,例如,采用这种成员查询方式查询某个ip地址是否在某个局域网内,或者某个 数据是否存储在某个存储系统中等。
4.关联查询是用于查询两个给定集合之间是否存在关联关系的查询方式,这种查询方式是 通过判断两个给定集合中是否存在交集,以及交集种元素数量的多少来确定其关联关系的。 关联查询广泛应用在无线传感器网络、内容分发网络和区块链交易池的技术领域中,并且在 数据中心索引、分布式文件系统、数据库索引和数据复制等技术领域中也有着广泛的应用。
5.多重性查询是用于查询给定元素在集合中出现频率的查询方式,即查询集合某个该元素 的多重性,例如,网络流流量大小对于云和数据中心中的流量工程、网络诊断、网络取证、 分布式数据流监控、网络异常检测和网络路由至关重要,因此需要在这些应用场景中,经常 利用到这种查询方式对网络流量进行查询操作。另外,对于例如时延、突发检测、流量大小 估计、流量分布、显要事物检测等网络测量任务,也经常使用多重性查询。
6.数据在动态集合中的数据插入方式直接影响到其查询的难易程度,而现有技术中的数据 插入方式,其得到的动态集合,存在空间利用率低、假阳性概率高的问题。
技术实现要素:7.本发明的目的是提供一种高效率的动态集合管理方法和系统,以至少解决现有技术中的 动态集合空间效率低、假阳性概率高的问题。
8.为实现上述目的,一方面,本发明提供了一种高效率的动态集合管理方法,所述动态集 合具有多个数据块,每个数据块中具有多个数据桶,每个数据桶中具有多个数据槽,所述数 据槽用于存储元素的指纹信息,所述管理方法包括:响应于接收到插入元素的命令,获取待 插入元素,然后获取所述待插入元素的指纹信息;获取第一哈希函数、与所述待插入元素的 辅助信息相关联的偏移量和所述数据块的总数量,并根据所述第一哈希函数、偏移量和所述 数据块的总数量得到插入候选数据块;采用布谷鸟哈希算法,根据所述待插入元素和其指纹 信息,从所述插入候选数据块中确定出插入候选数据桶;获取第二哈希函
数,并根据所述第 二哈希函数、偏移量和各数据块中数据桶的数量,得到插入候选数据槽;将所述待插入元素 插入到所述候选数据槽中。
9.根据本发明的一个实施例,所述将所述待插入元素插入到所述插入候选数据槽中包括: 响应于所述插入候选数据槽没有被占用,将所述待插入元素的指纹信息存储到所述插入候选 数据槽中;响应于所述插入候选数据槽被占用,首先将所述插入候选数据槽中的数据迁移, 然后将所述待插入元素的指纹信息存储到所述插入候选数据槽中。
10.进一步地,根据本发明的另一个实施例,所述将所述待用数据槽中的数据迁移包括:获 取所述待用数据槽的备用数据槽,所述备用数据槽为另一插入候选数据桶中与所述待用数据 槽相对应的数据槽;响应于所述备用数据槽为空,将所述待用数据槽中的数据迁移到该备用 数据槽中,并对所述待用数据槽中的数据重新进行定位;响应于所述备用数据槽不为空,则 判断为所述动态集合中无法存储所述待插入元素。
11.根据本发明的又一个实施例,还包括:响应于接收到元素查询命令,获取待查询元素; 获取所述待查询元素的指纹信息,并根据待查询元素的指纹信息得到查询候选数据块;响应 于待查询元素的指纹信息存储在所述查询候选数据块中,获取所述待查询元素的指纹信息所 在数据桶的位置;根据所述待查询元素的指纹信息所在数据桶的位置和布谷鸟哈希算法,得 到与所述待查询元素的辅助信息相关联的偏移量。
12.根据本发明的另一个实施例,还包括:响应于接收到数据删除命令,获取待删除元素; 获取所述待删除元素的指纹,得到删除候选数据块;采用布谷鸟哈希算法,根据所述待删除 元素和其指纹信息,从所述删除候选数据块中确定出删除候选数据桶;从所述删除候选数据 桶中查找出存储所述删除元素指纹信息的数据槽,并将该数据槽中的数据删除。
13.另一方面,本发明还提供了一种高效率的动态集合管理系统,包括处理器和插入器,所 述插入器上插入有用于在所述处理器上执行的计算机指令,所述处理器执行所述计算机指令 时,实现高效率的动态集合管理方法,所述动态集合具有多个数据块,每个数据块中具有多 个数据桶,每个数据桶中具有多个数据槽,所述数据槽用于存储元素的指纹信息,所述管理 方法包括:响应于接收到插入元素的命令,获取待插入元素,然后获取所述待插入元素的指 纹信息;获取第一哈希函数、与所述待插入元素的辅助信息相关联的偏移量和所述数据块的 总数量,并根据所述第一哈希函数、偏移量和所述数据块的总数量得到插入候选数据块;采 用布谷鸟哈希算法,根据所述待插入元素和其指纹信息,从所述插入候选数据块中确定出插 入候选数据桶;获取第二哈希函数,并根据所述第二哈希函数、偏移量和各数据块中数据桶 的数量,得到插入候选数据槽;将所述待插入元素插入到所述候选数据槽中。
14.根据本发明的一个实施例,所述将所述待插入元素插入到所述插入候选数据槽中包括: 响应于所述插入候选数据槽没有被占用,将所述待插入元素的指纹信息存储到所述插入候选 数据槽中;响应于所述插入候选数据槽被占用,首先将所述插入候选数据槽中的数据迁移, 然后将所述待插入元素的指纹信息存储到所述插入候选数据槽中。
15.进一步地,根据本发明的另一个实施例,所述将所述待用数据槽中的数据迁移包括:获 取所述待用数据槽的备用数据槽,所述备用数据槽为另一插入候选数据桶中与所述待用数据 槽相对应的数据槽;响应于所述备用数据槽为空,将所述待用数据槽中的数据迁移到该备用 数据槽中,并对所述待用数据槽中的数据重新进行定位;响应于所述备用数据
槽不为空,则 判断为所述动态集合中无法存储所述待插入元素。
16.根据本发明的又一个实施例,所述方法还包括:响应于接收到元素查询命令,获取待查 询元素;获取所述待查询元素的指纹信息,并根据待查询元素的指纹信息得到查询候选数据 块;响应于待查询元素的指纹信息存储在所述查询候选数据块中,获取所述待查询元素的指 纹信息所在数据桶的位置;根据所述待查询元素的指纹信息所在数据桶的位置和布谷鸟哈希 算法,得到与所述待查询元素的辅助信息相关联的偏移量。
17.根据本发明的另一个实施例,所述方法还包括:响应于接收到数据删除命令,获取待删 除元素;获取所述待删除元素的指纹,得到删除候选数据块;采用布谷鸟哈希算法,根据所 述待删除元素和其指纹信息,从所述删除候选数据块中确定出删除候选数据桶;从所述删除 候选数据桶中查找出存储所述删除元素指纹信息的数据槽,并将该数据槽中的数据删除。
18.本发明所提供的技术方案,一方面能够使动态集合中的数据结构空间友好,从而使空间 的开销降低以提高对计算机的空间利用率。另一方面,本发明所提供的技术方案,还能够降 低冬天集合的假阳性概率。
附图说明
19.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征 和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方 式,并且相同或对应的标号表示相同或对应的部分,其中:
20.图1是根据本发明实施例中一种动态集合的结构示意图;
21.图2是根据本发明实施例的一种高效率的动态集合管理方法的流程图;
22.图3是根据本发明通过实验得到的sfb滤波方法中元素指纹信息尺寸与负载因子之间的 关系图;
23.图4是根据本发明通过实验得到的实验元素的平均频数与插入吞吐量之间的关系图;
24.图5是根据本发明通过实验得到的多重性查询且查询结果为阳性时负载因子与查询吞吐 量之间的关系图;
25.图6是根据本发明通过实验得到的多重性查询且查询结果为阴性时负载因子与查询吞吐 量之间的关系图;
26.图7是根据本发明通过实验得到的混合查询时负载因子与查询吞吐量之间的关系图;
27.图8是根据本发明通过实验得到的多重查询时实验元素的平均频数与sf滤波和shbf滤 波精度之间的关系图;
28.图9是根据本发明通过实验得到的多重查询时实验元素的平均频数与sf滤波和shbf滤 波相对误差之间的关系图;
29.图10是根据本发明通过实验得到的多重查询时实验元素的平均频数与sf滤波和shbf 滤波假阳性之间的关系图;
30.图11是根据本发明实施例的一种高效率的动态集合管理系统的结构示意图。
具体实施方式
31.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描 述,本领域技术人员应知,下面所描述的实施例是本公开一部分实施例,而不是全部的实施 例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其 他实施例,都属于本发明保护的范围。
32.本发明提供了一种高效率的动态集合管理方法,该方法用于对计算机插入空间上所设置 的动态集合进行管理,以提高动态集合的空间的利用效率并降低动态集合的假阳性概率。
33.本发明所提供的高效率的动态集合管理方法,其中动态集合如图1所示,该动态集合中具 有多个用于存储元素指纹信息的数据槽,各数据槽按照多行多列进行分布。在本发明中,为 了提高对空间的利用率,将各数据槽划分为数量为z1的数据块,每个数据块中具有z2列z3行 的数据桶,其中z1为不小于2的偶数,z2和z3为大于1的正整数。在发明的技术方案中,将 相同列的数据槽作为一个数据桶,例如在一个数据块中,其第一数据桶包括第一列中的z3个 数据槽,第二数据桶包括第二列中的z3个数据槽等,以此类推,可以得知在动态集合的各数 据块中均具有z2个数据桶,并且每个数据桶具有z3个数据槽。下面结合图2所示出的流程, 对本发明的高效率的动态集合管理方法做详细的介绍。
34.在图2所示出的流程中,本发明的高效率的动态集合管理方法包括:
35.在步骤s1中,判断是否接收到元素插入命令,如果接收到,则获取待插入元素,并得到 该待插入元素的指纹信息。在本实施例中,可以先接收元素插入命令,再接收待插入元素, 例如,可以在工作过程中连续接收数据包并对其进行识别,以判断其是否为元素插入命令, 如果接收到的是元素插入命令,则将接收到的下一个数据包作为待插入元素;或者,可以将 元素插入命令和待插入的元素打包成一个数据包,在接收到数据包时,对其中的前第一设定 位数据进行识别以判断为是否为元素插入命令,如果是,则将该数据包的后第二设定位数据 作为待插入元素。在本实施例中,为了便于对本发明技术方案的描述,设将待插入待元素为e, 其待插入元素的指纹信息为f(e),则
36.f(e)=fingerprin t(e)
ꢀꢀꢀꢀꢀꢀ
(1)
37.其中fingerprin t(e)为待插入元素e的指纹获取函数。
38.在步骤s2中,首先获取第一哈希函数、与待插入元素的辅助信息相关联的偏移量和动态 集合中数据块的总数量,然后根据第一哈希函数、与待插入元素的辅助信息相关联的偏移量、 数据块的数量,得到插入候选数据块。在本实施例中,设上述与待插入元素的辅助信息相关 联的偏移量为o(e),第一哈希函数为f(e),并且该函数可以为随机哈希函数,也可以为 待插入元素的指纹信息f(e),则可以通过如下公式(2),确定出插入候选数据块为动态集合 中的第x个数据块:
39.x=(f(e)%z1+o(e))%z1ꢀꢀꢀꢀꢀꢀ
(2)。
40.因此,可以在获取到第一哈希函数和数据块数量z1后,根据上述公式(2)可以计算出i 的值,即得到动态集合中的插入候选数据块的位置。
41.在步骤s3中,采用布谷鸟哈希算法,根据待插入元素和待插入元素的指纹信息,从候选 数据块中确定出候选数据桶。在本实施例中,采用布谷鸟哈希算法,可以得到待插入元素的 两个插入候选数据桶,设这两个插入候选数据桶的编号分别为h1(e)和h2(e),则:
42.h1(e)=hash(e)
ꢀꢀꢀꢀꢀꢀ
(3)
[0043][0044]
其中hash(e)为哈希函数。
[0045]
通过上述公式(3)和(4)可以计算出h1(e)和h2(e)的值,从而可以得到动态集合中第i 个数据块中编号为h1(e)和h2(e)的数据桶为插入候选数据桶,由于将待插入元素的指纹信息存 储到动态集合中时只使用一个数据槽即可,因此从编号为h1(e)和h2(e)的数据桶中随机选择一 个,作为待用数据桶。
[0046]
步骤s4,获取第二哈希函数,根据与待插入元素的辅助信息相关联的偏移量、第二哈希 函数和各数据块中数据桶的数量,得到插入候选数据槽,并将待插入元素的指纹信息插入到 插入候选数据槽中。根据与待插入元素的辅助信息相关联的偏移量、第二哈希函数和各数据 块中数据桶的数量,得到插入候选数据槽的方法包括:
[0047]
设待用数据桶中第z个数据槽为插入候选数据槽,第二哈希函数为h0(e),在本实施例中, 第二哈希函数h0(e)为哈希函数,在得到第二哈希函数后,根据与待插入元素的辅助信息相关 联的偏移量o(e)、第二哈希函数h0(e)和各数据桶中数据槽的数量z3,以及如下计算公式,可 以计算出插入候选数据槽对应的z值:
[0048]
z=(h0(e)%z3+o(e))%z3ꢀꢀꢀꢀꢀꢀ
(5)。
[0049]
至此可以得到,动态集合的待用数据块中的待用数据桶的第z个数据槽为插入候选数据 槽。在得到插入候选数据槽后,将待插入元素的指纹信息存储在该插入候选数据槽中,即可 完成元素插入的操作。
[0050]
本发明所提供的高效率的动态集合管理方法,使动态集合可以支持成员查询、关联查询 和多重性查询,并且还能够提高动态集合中的空间友好性,并降低动态集合的假阳性概率。
[0051]
上文中对本发明的高效率的动态集合管理方法做了详细的介绍,下面结合具体应用场景, 对步骤s4中将待插入元素的指纹信息存储到插入候选数据槽中的方法做详细的介绍。
[0052]
在一个实施例中,上述步骤s4中将待插入元素的指纹信息存储到插入候选数据槽中的方 法包括:在得到插入候选数据槽后,判断该插入候选数据槽是否被占用,即该插入候选数据 槽中是否已经存储有数据;如果插入候选数据槽没有被占用,即该插入候选数据槽中没有存 储数据,则将待插入元素的指纹信息插入到该插入候选数据槽中即可;如果插入候选数据槽 被占用,即该插入候选数据槽中已经存储有数据,则先将该候选数据槽中的数据迁移并重新 进行定位,然后将待插入元素的指纹信息插入到该插入候选数据槽中即可。通过本实施例的 设置方式,可以在插入候选数据槽中有数据时将待插入元素的指纹信息插入进去,并且将插 入候选数据槽中原有的数据迁移,因此既可以插入待插入元素,也不会造成原有数据的缺失, 从而提高动态集合插入数据的可靠性。
[0053]
进一步地,在另一个实施例中,上述将插入候选数据槽中的数据迁移的方法包括:
[0054]
在步骤s11中,获取插入候选数据槽的备用数据槽,该备用数据槽可以为另一个候选数据 桶中与插入候选数据槽相对应的数据槽,例如,在上述步骤s4中随机选择出h1(e)作为待用数 据桶,数据桶h1(e)中的第z个数据槽为插入候选数据槽,则数据桶h2(e)中的第z个数据槽为备 用数据槽。
[0055]
在步骤s12中,判断从备用数据槽是否被占用,如果没有被占用,则将插入候选数据槽中 的数据迁移到该备用数据槽中以清空插入候选数据槽,并对原存储在插入候选数据槽中的数 据重新进行定位,以便于对其进行查询;然后将待插入元素的指纹信息存储到插入候选数据 槽中。如果插入候选数据槽的备用数据槽被占用,则判断无法在所选择出的插入候选数据块 中插入数据,因此需要重新选择插入候选数据块。
[0056]
上文中所介绍的高效率的动态集合管理方法,是向动态集合中插入数据的方法,下面结 合具体应用场景,对动态集合中数据的查询方法做详细的说明。
[0057]
在一个实施例中,对动态集合中的数据进行查询的方法包括:
[0058]
在步骤s21中,判断是否接收到元素查询命令,如果接收到元素查询命令,则获取待查询 元素,并得到该待查询元素的指纹信息。在本实施例中,接收元素查询命令以及查询元素的 方式与上文步骤s1中获取元素插入命令和待插入元素的方式相同,可以先接收元素查询命令 再接收待查询元素,也可以同时接收元素查询命令和待查询元素,并且在得到待查询元素后, 可以采用上述公式(1)得到待查询元素的指纹信息。
[0059]
在步骤s22中,根据待查询元素的指纹信息,得到查询候选数据块。在本实施例中,查询 初始数据块根据第一哈希函数、动态集合中数据桶的数量以及如下公式计算得到:
[0060]
i=f(e)%z1ꢀꢀꢀꢀꢀꢀ
(6)
[0061]
通过上述公式(6)得到数据块的初始查询数据块,即从动态集合的第i个数据块到最后 一个数据块均为查询候选数据块。在得到初始查询数据块后,从初始查询数据库对待查询元 素的指纹信息进行查询,以判断动态集合的各数据槽中是否存储有与待查询元素指纹信息相 比配的数据。在对各数据块中的数据槽进行查询时,可以先根据上述公式(3)和公式(4) 确定出各数据块中的待查询数据桶,然后对各查询候选数据块的待查询数据桶进行查询,以 确定待查动态集合的各数据槽中是否存储有与待查询元素指纹信息相比配的数据。
[0062]
在步骤s23中,如果动态集合中有数据槽中存储有与待查询元素指纹信息相比配的数据, 则获取该数据槽对应数据块所在的位置。
[0063]
在步骤s24中,根据待查询元素的指纹信息所在数据块的位置和布谷鸟哈希算法,得到与 待查询元素辅助信息相关联的偏移量,然后通过该偏移量对其辅助信息进行解码,即可得到 待查询元素的辅助信息。例如,上述步骤s22中得到初始查询数据块为动态集合中的第j1个数 据块,上述步骤s23中得到待查询元素的指纹信息所在的数据桶为动态集合中的第j2个数据 块,则可以得到待查询元素的偏移量为j
2-j1。
[0064]
上文中对动态集合中数据的查询方法做了详细的介绍,下面结合具体应用场景,对动态 集合中数据的删除方法做详细的介绍。
[0065]
在一个实施例中,对动态集合中的数据进行删除的方法包括:
[0066]
在步骤31中,判断是否接收到元素删除命令,如果接收到元素删除命令,则获取待删除 元素,并得到待删除元素的指纹信息。在本实施例中,接收元素删除命令以及查询元素的方 式与上文步骤s1中获取元素删除命令和待删除元素的方式相同,可以先接收元素查询命令再 接收待删除元素,也可以同时接收元素删除命令和待删除元素。在得到待删除元素后,可以 采用上述公式(1)得到待删除元素的指纹信息。
[0067]
在步骤s32中,根据待删除元素和其的指纹信息,得到删除初始数据块。在本实施
例中, 删除初始数据块根据第一哈希函数、动态集合中数据块的数量以及上述公式(2)计算得到。 在得到删除候选数据块后,将删除初始数据桶之后的数据桶作为删除候选数据桶,并将初始 数据桶所在的位置作为初始位置。
[0068]
在步骤s33中,采用布谷鸟哈希算法,根据待删除元素和其指纹信息,从删除候选数据块 中确定出删除候选数据桶。在本步骤中,可以根据待删除元素和其指纹信息,以及上述公式 (3)和公式(4),计算出删除候选数据桶所在的位置。
[0069]
在步骤s34中,对删除候选数据桶进行查询,以得到存储待删除元素指纹信息的数据槽, 然后将该数据槽清空即可。
[0070]
技术效果分析:
[0071]
由于本发明的技术方案实质上是在水平方向上应用移动框架进行滤波处理的,即在数据 槽上应用移动框架的滤波处理方式,因此为了便于对本发明技术方案的描述,将本发明技术 方案中的滤波方式称为sfb滤波方式,下面对本发明技术方案的有益效果做详细的分析:
[0072]
(1)空间效率分析
[0073]
在对根据本发明技术方案所获取的动态集合进行空间效率分析时,需要获取其元素插入 失败的概率和假阳性率所要求的最小指纹信息尺寸。由于sfb滤波方式将哈希表拆分为多个 数据块,并将两个插入候选数据桶限制在一个块中,因此这里两个不同元素的第一个插入候 选数据桶为h1(e)和h2(e)的概率是2b/m,其中b为动态集合中数据块的数量,m为动态集合中 数据桶的总数量。设各数据桶中数据槽的数量均为b,元素的指纹信息长度为l,则sfb滤波方 式构造过程中2b+1个元素碰撞的预期个数为:
[0074][0075]
其中γ为一个常数,并且m=γn,即插入n个随机元素到一个包含m=γn个数据桶的空动态 集合中。在这种情况下,sfb滤波方式中的指纹所需的最小比特数为:
[0076][0077]
上述公式表示(7),sfb滤波方式中指纹的大小可以通过下界分母中的b因子来节省。 换句话说,只要sfb滤波方式使用合理大小的数据桶,它的指纹大小可以维持在较小的水平, 这有助于sfb滤波方式在内存较小的情况下工作。
[0078]
在成员查询的过程中,假阳性错误指的是滤波在查询一个不存在的元素时返回一个阳性 结果。在关联查询和多重性查询中,当滤波将一个外来元素视为关联查询阶段中任何表示集 合的成员时,或者在多重性查询阶段输出该元素的多重性大于0时,也可以视为出现了假阳性 错误。当在一个数据槽中查找一个不存在的元素e1时,如果这个数据槽被占用,那么元素e1与插入的指纹信息匹配的概率是1/2
l
,否则是0。
[0079]
由于sfb在查询任何给定的元素时,必须在所有的块中检查两个候选桶,因此其搜索范 围为2bb个槽,因此sfb滤波方式的假阳性概率为:
[0080]
fpr
sfb
=1-(1-1/2
l
)
2bb
≈2bb/2
l
ꢀꢀꢀꢀꢀꢀ
(8)
[0081]
以上公式(8)结果表明,除了数据桶中数据槽的数量b外,sfb滤波的假阳性概率也
与 动态集合中数据库块的数量b正相关,设额定假阳性概率为ξ,则可以计算出sfb的最小指纹 长度为:
[0082]
l
sfb
≥[log2(1/ξ1+log2(2bb)]
ꢀꢀꢀꢀꢀꢀ
(9)
[0083]
然后可以通过表示每个元素的平均比特数来度量动态集合的空间效率。假设滤波维护m 个数据桶,由于每个数据桶都有b个数据槽,并使用合适的指纹信息,每个指纹信息的长度为 l个比特数,所以滤波的尺寸是mbl。在动态集合中插入多个随机元素的构造过程之后,表中 必须有一些空闲的数据槽。用负载因子α(即空间利用率,也是动态集合的占用率)表示被占 用的槽在整个表中的比例。因此,总共有mbα个元素被有效插入。因此,这个滤波的每个元 素所需要的比特位(也是平摊空间代价)是:
[0084][0085]
当上述滤波为本发明的sfb滤波方式时,l的值不应小于式4和10确定的下界。
[0086]
通过上述公式(10)可以用来描述滤波的空间效率,基于该原理,可以测量了本发明技 术方案在不同指纹长度l下的负载因子α,即空间利用率,也是动态集合的占用率,如图3所示, 在图3中横坐标为元素指纹信息的长度l,纵坐标为负载因子α。在实验中,我们将指纹信息 的长度l从1位增加到24位。随机合成元素插入到空滤波中,直到某次插入在找到可用数据槽 之前将现有指纹重定位超过500次(即max=500),然后停止并测量达到的负载因子α。将每 个数据桶中数据槽的数量b固定为4,并对m取值为2
14
、2
16
、2
18
和2
20
个数据桶的滤波进行30 次实验,然后记录30次试验中它们的最小负载因子。如图3所示,如果指纹信息长度足够,当 b=4时,sfb滤波的使用率为95。总体而言,本发明的技术方案中满足精度要求的指纹信息可 以满足高占用率。
[0087]
(2)插入吞吐量分析
[0088]
插入吞吐量是指在进行元素插入操作时,单位时间内所执行的操作次数,在实验过程中, 可以记录在向动态集合中所执行的操作次数n和所消耗的时间t,则其吞吐量为n/t。本实验 中,以用于多重查询的不同滤波的总插入吞吐量,对sfb滤波方式的吞吐量进行分析。
[0089]
如图4所示,图4还比较了采用另一种比较方法abf(adaptive bloom filter,自适应布隆滤 波)时,用于多重查询的不同滤波的总插入吞吐量,在图4中横坐标为实验元素的平均频数, 纵坐标为插入吞吐量。在这个实验中,我们向这些滤波插入合成数据集,其中数据的多重性 遵循一个正态分布,然后量化当平均多重性,即m从25增加到210时,它们的总体构建速度。 像针对关联查询的sfb滤波一样,针对多重性查询的sfb滤波也保持高且几乎恒定的构造速 度。由于元素的多重性代替哈希值而被直接用作偏移量,shbf(counting bloom filter,计数 型布隆滤波)滤波的插入吞吐量得到了显著提高。然而,较差的abf的性能最差,并且随着 多重性的增加而变得更糟,因为abf滤波利用了额外的哈希函数,这些哈希函数的数量与记 录的元素的多重性相同。
[0090]
(3)查询吞吐量分析
[0091]
在本实验中,我们对多重性查询和混合查询的吞吐量分析。
[0092]
多重性查询:图5和图6描述了在所有查询为阳性和所有查询为阴性的情况下随着m的变 化,滤波的平均查询吞吐量,在图5和图6中横坐标均为负载因子,纵坐标均为查询吞
吐量。 无论是阳性还是阴性查询,sfb滤波的多重性查询总是确保高查询吞吐量,而跟m的增加无关。 当m变大时,shbf滤波和abf滤波的查找性能都有很大程度的退化,并且shbf滤波的性能比abf滤波差。原因是sfb滤波的多重性查询总是先获取固定数量的查询候选数据块或数据桶。 然而,shbf滤波必须检查几乎c
×
k个比特位,以避免低估,其中c是所有插入元素的最大重数。 对于多重性为i的阳性查询,abf滤波必须计算额外的i+1个哈希函数,并读取至少k+i+1个比 特位。对于阴性查询,abf滤波可以在获取第一个0位后立即返回。不幸的是,如果这个阴性 查询导致一个假阳性错误,abf滤波必须计算更多的哈希函数和检查更多的比特位,这种情 况当m增加时是很常见的。
[0093]
混合查询:如图7所示,图7中横坐标为负载因子,纵坐标为查询吞吐量,展示固定m=1024 时,滤波的混合查询吞吐量。很明显,sfb滤波的多重性查询是表现优于abf滤波和shbf滤 波,它们都随着f的增加而反应更快。这是因为如果阴性查询较少,那么查找可能会在检查所 有查询候选数据块之前提前返回,相比之下,shbf滤波和abf滤波的查询吞吐量要低得多。
[0094]
(4)误差率分析
[0095]
精确度:由于哈希冲突,滤波的关联查询和多重查询可能会估计出一些与实际信息不一 致的辅助信息。具体来说,当滤波在读取正确指纹之前发现与目标指纹相冲突的指纹时,可 能会出现这种错误。在这种情况下,滤波会将另一个具有不同辅助信息的不同元素误认为查 询的元素。因此,一个量化的精确度,即我们的滤波返回准确结果的概率,对于评估它们输 出的结果是至关重要的。对于sfb滤波的多重性查询(本文中简称为sfb
x
)也会从第一个块 到最后一个块依次探测两个候选桶,以查询给定的元素。因此,sfb
x
在读取目标指纹之前错 误匹配指纹的概率最多为1-(1-1/2
l
)
2bi
,其中i表示存储目标元素的块的序列号。在sfb
x
中, 某元素插入每个块中的概率也是相等的,因此sfbx的精度p的下界可以通过下式计算:
[0096][0097]
精度分析:通过实验可以得知随着隶属类型的增加,shbf滤波的精度会下降。因为shbf 滤波必须检查更多的比特位,导致其错误匹配的概率更高。对于图8中的多重性查询,当m(实 验元素的平均频数)从25增加到210时,shbf滤波和abf滤波的准确率都有显著下降,在图8 中横坐标为实验元素的平均频数,纵坐标为sf滤波和shbf滤波的精度。特别是当m大于128 时,abf滤波将会失效,其精度突然从6.72%下降到几乎为0。相比之下,本发明的针对多重 性查询的sfb滤波总是能保证99.8%的重数估计精度。其根本原因是我们的方法通过指纹,并 在计数器的辅助下利用移动框架直接记录精确的多重性。但是,shbf滤波和abf滤波需要校 验非零比特才能估计其多重性。此外,abf滤波在记录频数较大的元素时,由于将更多的位 设为1,其准确性比shbf滤波差。例如,对于频数为100的元素,除了设置k个比特位来记录 成员关系信息外,abf滤波还必须将hk+1(e),
…
,hk+99(e)这99个比特位设为1来记录多重性信 息。而shbf滤波只需将k个比特位的99位后的h1(e),
…
,hk(e)设置为1。因此,在abf滤波中, 由其他元素设置的非零位更容易导致多重信息的高估。此外,abf滤波位向量中记录的成员 关系信息和多重性信息会相互干扰,导致精度降低。本文中其中k
为信息编码中独立的哈希值 数量,c为个哈希数字上的非零比特位,i为具有从属关系的元素数量,hk为信息编码中第k个 哈希函数。
[0098]
平均相对误差分析:图9示出了查询元素的估计多重性相对于哈希到相应桶或位的元素的 实际多重性的平均相对误差,在图9中,横坐标为实验元素的平均频数,纵坐标为sf滤波和 shbf滤波的平均相对误差。sfbx的平均相对误差随着m的增加而下降,从9.0
×
10-4
增加到6.7
ꢀ×
10-5
,其他方法随着m的增加而增加。具体的,shbf滤波的平均相对误差值从1.8
×
10-4
增加 到3.4
×
10-4
,abf滤波的平均相对误差值从0.114增加到0.145。出现上述结果主要有两个原因: 1)m越大,shbf滤波需要搜索的比特位就越多,它就越有可能将一个多重性信息不同的元素 误认为是查询的元素;2)m越大,abf滤波中置为1的比特位越多,这使得用0或1来表示信息 的机制在有限的空间内更容易失效。
[0099]
假阳性分析:图10示出了支持多重查询的滤波的假阳性,在图10中,横坐标为实验元素 的平均频数,纵坐标为sf滤波和shbf滤波的平均相对误差。sfb滤波多重查询的假阳性保持 在一个较低的水平,始终低于上界0.0019。然而,随着平均多重度的增加,shbf滤波和abf 滤波的假阳性有所退化。假阳性表现最差,从0.37显著增长到1,当平均多重度大于128时, 其肯定会产生假阳性错误。因为在abf滤波中有大量的、额外的比特被设置为1来记录元素的 多重性信息,所以abf滤波很容易返回一个大于0的多重性信息结果。综上所述,与shbf滤 波和abf滤波相比,sfs滤波的总体假阳率分别为0.089和0.002倍。
[0100]
根据本技术的另一方面,本技术还提供了一种高效率的动态集合管理系统,如图11所示, 该系统包括处理器、插入器、通信接口和通信总线,处理器、插入器和通信接口通过通信总 线完成相互间的通信。处理器用于提供计算和控制能力。插入器包括非易失性插入介质、内 插入器。该非易失性插入介质插入有操作系统和计算机程序指令。该内插入器为非易失性插 入介质中的操作系统和计算机程序指令的运行提供环境。上述装置的通信接口用于与外部的 终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其 他技术实现。本实施例所提供的高效率的动态集合管理系统,其插入器用于插入计算机程序 指令,该计算机程序指令使处理器执行上述高效率的动态集合管理方法及其多个实施例。
[0101]
另外,本说明书中所使用的术语“第一”或“第二”等用于指代编号或序数的术语仅用于描 述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此, 限定有“第一”或“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述 中,“多个”的含义是至少两个,例如两个,三个或更多个等,除非另有明确具体地限定。
[0102]
虽然本说明书已经示出和描述了本发明的多个实施例,但对于本领域技术人员显而易见 的是,这样的实施例只是以示例的方式提供的。本领域技术人员会在不偏离本发明思想和精 神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本发明的过程中,可以 采用本文所描述的本发明实施例的各种替代方案。所附权利要求书旨在限定本发明的保护范 围,并因此覆盖这些权利要求保护范围内的模块组成、等同或替代方案。
技术特征:1.一种高效率的动态集合管理方法,其特征在于,所述动态集合具有多个数据块,每个数据块中具有多个数据桶,每个数据桶中具有多个数据槽,所述数据槽用于存储元素的指纹信息,所述管理方法包括:响应于接收到插入元素的命令,获取待插入元素,然后获取所述待插入元素的指纹信息;获取第一哈希函数、与所述待插入元素的辅助信息相关联的偏移量和所述数据块的总数量,并根据所述第一哈希函数、偏移量和所述数据块的总数量得到插入候选数据块;采用布谷鸟哈希算法,根据所述待插入元素和其指纹信息,从所述插入候选数据块中确定出插入候选数据桶;获取第二哈希函数,并根据所述第二哈希函数、偏移量和各数据块中数据桶的数量,得到插入候选数据槽;将所述待插入元素插入到所述候选数据槽中。2.根据权利要求1所述的高效率的动态集合管理方法,其特征在于,所述将所述待插入元素插入到所述插入候选数据槽中包括:响应于所述插入候选数据槽没有被占用,将所述待插入元素的指纹信息存储到所述插入候选数据槽中;响应于所述插入候选数据槽被占用,首先将所述插入候选数据槽中的数据迁移,然后将所述待插入元素的指纹信息存储到所述插入候选数据槽中。3.根据权利要求2所述的高效率的动态集合管理方法,其特征在于,所述将所述待用数据槽中的数据迁移包括:获取所述待用数据槽的备用数据槽,所述备用数据槽为另一插入候选数据桶中与所述待用数据槽相对应的数据槽;响应于所述备用数据槽为空,将所述待用数据槽中的数据迁移到该备用数据槽中,并对所述待用数据槽中的数据重新进行定位;响应于所述备用数据槽不为空,则判断为所述动态集合中无法存储所述待插入元素。4.根据权利要求1所述的基高效率的动态集合管理方法,其特征在于,还包括:响应于接收到元素查询命令,获取待查询元素;获取所述待查询元素的指纹信息,并根据待查询元素的指纹信息得到查询候选数据块;响应于待查询元素的指纹信息存储在所述查询候选数据块中,获取所述待查询元素的指纹信息所在数据桶的位置;根据所述待查询元素的指纹信息所在数据桶的位置和布谷鸟哈希算法,得到与所述待查询元素的辅助信息相关联的偏移量。5.根据权利要求1所述的高效率的动态集合管理方法,其特征在于,还包括:响应于接收到数据删除命令,获取待删除元素;获取所述待删除元素的指纹,得到删除候选数据块;采用布谷鸟哈希算法,根据所述待删除元素和其指纹信息,从所述删除候选数据块中确定出删除候选数据桶;从所述删除候选数据桶中查找出存储所述删除元素指纹信息的数据槽,并将该数据槽
中的数据删除。6.一种高效率的动态集合管理系统,其特征在于,包括处理器和插入器,所述插入器上插入有用于在所述处理器上执行的计算机指令,所述处理器执行所述计算机指令时,实现高效率的动态集合管理方法,所述动态集合具有多个数据块,每个数据块中具有多个数据桶,每个数据桶中具有多个数据槽,所述数据槽用于存储元素的指纹信息,所述管理方法包括:响应于接收到插入元素的命令,获取待插入元素,然后获取所述待插入元素的指纹信息;获取第一哈希函数、与所述待插入元素的辅助信息相关联的偏移量和所述数据块的总数量,并根据所述第一哈希函数、偏移量和所述数据块的总数量得到插入候选数据块;采用布谷鸟哈希算法,根据所述待插入元素和其指纹信息,从所述插入候选数据块中确定出插入候选数据桶;获取第二哈希函数,并根据所述第二哈希函数、偏移量和各数据块中数据桶的数量,得到插入候选数据槽;将所述待插入元素插入到所述候选数据槽中。7.根据权利要求6所述的高效率的动态集合管理系统,其特征在于,所述将所述待插入元素插入到所述插入候选数据槽中包括:响应于所述插入候选数据槽没有被占用,将所述待插入元素的指纹信息存储到所述插入候选数据槽中;响应于所述插入候选数据槽被占用,首先将所述插入候选数据槽中的数据迁移,然后将所述待插入元素的指纹信息存储到所述插入候选数据槽中。8.根据权利要求7所述的高效率的动态集合管理系统,其特征在于,所述将所述待用数据槽中的数据迁移包括:获取所述待用数据槽的备用数据槽,所述备用数据槽为另一插入候选数据桶中与所述待用数据槽相对应的数据槽;响应于所述备用数据槽为空,将所述待用数据槽中的数据迁移到该备用数据槽中,并对所述待用数据槽中的数据重新进行定位;响应于所述备用数据槽不为空,则判断为所述动态集合中无法存储所述待插入元素。9.根据权利要求6所述的高效率的动态集合管理系统,其特征在于,所述方法还包括:响应于接收到元素查询命令,获取待查询元素;获取所述待查询元素的指纹信息,并根据待查询元素的指纹信息得到查询候选数据块;响应于待查询元素的指纹信息存储在所述查询候选数据块中,获取所述待查询元素的指纹信息所在数据桶的位置;根据所述待查询元素的指纹信息所在数据桶的位置和布谷鸟哈希算法,得到与所述待查询元素的辅助信息相关联的偏移量。10.根据权利要求6所述的高效率的动态集合管理系统,其特征在于,所述方法还包括:响应于接收到数据删除命令,获取待删除元素;获取所述待删除元素的指纹,得到删除候选数据块;
采用布谷鸟哈希算法,根据所述待删除元素和其指纹信息,从所述删除候选数据块中确定出删除候选数据桶;从所述删除候选数据桶中查找出存储所述删除元素指纹信息的数据槽,并将该数据槽中的数据删除。
技术总结本发明涉及一种高效率的动态集合管理方法和系统,其中动态集合具有多个数据块,每个数据块中具有多个数据桶,每个数据桶中具有多个数据槽,数据槽用于存储元素的指纹信息,管理方法包括:响应于接收到插入元素的命令,获取待插入元素及其的指纹信息;获取第一哈希函数,并根据第一哈希函数、偏移量和数据块的总数量得到插入候选数据块;采用布谷鸟哈希算法,根据待插入元素和其指纹信息,从所述插入候选数据块中确定出插入候选数据桶;获取第二哈希函数,并根据第二哈希函数、偏移量和各数据块中数据桶的数量,得到插入候选数据槽;将待插入元素插入到候选数据槽中。本发明的技术方案能够提高动态集合的空间效率并降低其假阳性概率。阳性概率。阳性概率。
技术研发人员:罗来龙 符鹏涛 郭得科
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2022.03.18
技术公布日:2022/7/5