基于离散型的双指纹存储布谷鸟过滤器的数据处理方法技术

技术编号:31751423 阅读:14 留言:0更新日期:2022-01-05 16:33
本发明专利技术公开了基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其包括建立基于离散型的双指纹存储布谷鸟过滤器的主索引表并初始化;根据当前指令类型对应进行数据插入、数据查询和/或数据删除;判断是否继续获取当前指令类型,若是则继续进行数据处理,否则结束离散型的双指纹存储布谷鸟过滤器的数据处理。本发明专利技术结合存储空间动态变换与存储数据动态增减实现了布谷鸟过滤器存储空间的动态伸缩,提高了数据结构的构建速度;节省了存储空间,增加了成员查询的准确性,降低了成员误删的概率;有效避免了数据在发生重定位操作时出现循环装填的问题,提高了布谷鸟过滤器的使用效率。效率。效率。

【技术实现步骤摘要】
基于离散型的双指纹存储布谷鸟过滤器的数据处理方法


[0001]本专利技术涉及计算机信息表示与信息检索领域,具体涉及一种基于离散型的双指纹存储布谷鸟过滤器的数据处理方法。

技术介绍

[0002]“正确判定一个成员是否在一个巨大的集合当中”、“在一个巨大的集合当中能否正确删除一个成员”和“在一个巨大的集合当中能否成功插入一个成员”,这三个问题是三种常见的数据处理问题,特别是在满足存储空间开销低、快速查询等几个关键需求下处理以上问题,这几个问题的实现就成了一个巨大的挑战。目前研究人员普遍采用布隆过滤器(Bloom Filter)、布隆过滤器及其变种、布谷鸟过滤器(Cuckoo Filter)以及布谷鸟过滤器的变种等来解决以上问题,但是对于布隆过滤器(Bloom Filter)包括其变种来说,已经无法再适应和解决以上问题。例如,标准的布隆过滤器不支持集合成员的删除操作,计数布隆过滤器虽然支持成员删除,但是其会导致空间开销急剧增加。对于布谷鸟过滤器(Cuckoo Filter),它是一种基于布谷鸟hash算法实现的过滤器,本质上是存储了存储项哈希值的布谷鸟哈希表。它克服了布隆过滤器不支持成员删除的缺点,同时显著降低了布隆过滤器变种出现的存储开销高的问题。但是标准的布谷鸟过滤器存在无法适应高速动态的数据变换,且容易出现装填循环问题和删除数据时Hash冲突所引起误删等问题。现有技术中,布谷鸟过滤变种所存在的问题是,无法自适应动态高速的数据变换,存储空间在生成后即无法改变,虽然有方案提出了通过指针的形式动态生成相同的布谷鸟过滤器来装填成员,但是面临的问题是存在大量的空间浪费问题。同时在面对成员删除时,误删率随着成员数量的增加而不断增大。面对容易出现装填循环的问题,现有方案也很少具有很好的解决方法。

技术实现思路

[0003]针对现有技术中的上述不足,本专利技术提供的基于离散型的双指纹存储布谷鸟过滤器的数据处理方法解决了现有技术无法同时适应动态高速的数据变换、数据可靠的插入,以及数据循环装填概率高的问题。
[0004]为了达到上述专利技术目的,本专利技术采用的技术方案为:
[0005]提供一种基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其包括以下步骤:
[0006]S1、建立基于离散型的双指纹存储布谷鸟过滤器的主索引表并初始化;
[0007]S2、获取当前指令类型,若指令类型为数据插入,则进入步骤S3;若指令类型为数据查询,则进行数据查询;若指令类型为数据删除,则进行数据删除;
[0008]S3、计算待插入数据成员的指纹信息,并选取指纹信息的前k位作为前置指纹,选取指纹信息的后k

1位作为后置指纹;
[0009]S4、判断待插入数据成员的指纹信息是否在双指纹存储布谷鸟过滤器中,若是则结束此次数据插入并进入步骤S13;否则进入步骤S5;
[0010]S5、计算待插入数据成员的两个候选桶的位置,并选中候选桶中的一个桶作为待插入候选桶;
[0011]S6、判断待插入数据成员对应的待插入候选桶的主索引指针所指的主索引储存的地址是否为空,若是则进入步骤S7;否则送入步骤S8;
[0012]S7、生成主索引存储单元,将重定位标识值置0,将步骤S3中选取的前置指纹和后置指纹填入主索引存储单元中,将对应候选桶的主索引指针指向该主索引存储单元,并结束此次数据插入并进入步骤S13;
[0013]S8、判断待插入数据成员对应的待插入候选桶的主索引储存的地址所指是否为主索引存储单元,若是进入步骤S9,否则进入步骤S10;
[0014]S9、保留该主索引存储单元,生成一级索引表并将其0号位地址置为NULL,将对应候选桶的主索引指针指向一级索引表;生成一级索引表的两个次级索引存储单元,并将一级索引表中两个待插入数据的次级索引存储单元地址存储位分别指向生成的两个次级索引存储单元,同时将两者的重定位标识值均置0,将待插入数据成员的前置指纹和保留的主索引存储单元中的前置指纹按顺序插入一级索引表的前置指纹位中,以及将待插入数据成员的后置指纹和保留的主索引存储单元中的后置指纹按顺序插入一级索引表的生成的两个次级索引存储单元中,结束插入后,注销保留的主索引存储单元,同时将一级索引表的剩余地址数

2;结束此次数据插入并进入步骤S13;
[0015]S10、判断当前索引表的剩余地址数是否为0,若是则进入步骤S12;否则进入步骤S11;
[0016]S11、生成当前索引表的次级索引存储单元,将其重定位标识值置0,并将当前索引表中待插入数据的次级索引存储单元地址存储位指向生成的次级索引存储单元,按顺序将待插入数据成员的前置指纹插入当前索引表的前置指纹位中,以及按顺序将待插入数据成员的后置指纹插入当前索引表生成的次级索引存储单元中,并将该索引表的剩余地址数

1,结束此次数据插入并进入步骤S13;
[0017]S12、判断是否有下一级索引表,若是则进入步骤S10,否则进行重定位操作并进入步骤S13;
[0018]S13、判断是否继续获取当前指令类型,若是则返回步骤S2,否则结束布谷鸟过滤器的指纹过滤。
[0019]进一步地:步骤S1初始化时,整个布谷鸟过滤器系统只存在一张地址位为空的索引表,即主索引表;主索引表地址所指存储的最小单位为主索引存储单元,其由前置指纹位、后置指纹存储位和重定位标识值组成;两个存储位的占位相同,重定位标识值占位1个bit且具有0、1和n三种状态;其中0代表新插入指纹,1代表此存储单元发生过1次重定位操作,n代表该存储单元发生过n次重定位操作。
[0020]进一步地:一级索引表由剩余地址数存储位、0号地址位和次级索引表存储位组成;其中剩余地址数存储位存储着该级索引表次级索引表存储位的剩余数量,其初始化为n,且不包括0号地址位;次级索引表存储位包括次级索引表的前置指纹位和次级索引存储单元地址存储位,次级索引存储单元地址存储位指向该级索引表对应生成的次级索引存储单元,且以倒序的原则从n号位开始依次存储,直到1号位被使用时,该索引表的剩余地址数为0,即满载,满载则插入下一级索引表,且下一级索引表的结构与一级索引表相同;0号地
址位初始化时为NULL,当具有下一级索引表时,该位存储的是下一级索引表的存储地址。
[0021]进一步地:步骤S3的k小于等于hash函数计算出的待插入数据成员ξ
X
的指纹信息的总位数的1/2。
[0022]进一步地:步骤S4中待插入数据成员ξ
X
的两个候选桶位置χ和γ分别为χ=h1(ξ
X
)和其中,为异或运算;f
X
为待插入数据成员的指纹信息;h1(
·
)为hash函数;一个数据成员拥有的两个候选桶,其数据信息只储存在其中一个候选桶中。
[0023]进一步地,步骤S12中重定位操作的具体方法包括以下子步骤:
[0024]S12

1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其特征在于,包括以下步骤:S1、建立基于离散型的双指纹存储布谷鸟过滤器的主索引表并初始化;S2、获取当前指令类型,若指令类型为数据插入,则进入步骤S3;若指令类型为数据查询,则进行数据查询;若指令类型为数据删除,则进行数据删除;S3、计算待插入数据成员的指纹信息,并选取指纹信息的前k位作为前置指纹,选取指纹信息的后k

1位作为后置指纹;S4、判断待插入数据成员的指纹信息是否在双指纹存储布谷鸟过滤器中,若是则结束此次数据插入并进入步骤S13;否则进入步骤S5;S5、计算待插入数据成员的两个候选桶的位置,并选中候选桶中的一个桶作为待插入候选桶;S6、判断待插入数据成员对应的待插入候选桶的主索引指针所指的主索引储存的地址是否为空,若是则进入步骤S7;否则送入步骤S8;S7、生成主索引存储单元,将重定位标识值置0,将步骤S3中选取的前置指纹和后置指纹填入主索引存储单元中,将对应候选桶的主索引指针指向该主索引存储单元,并结束此次数据插入并进入步骤S13;S8、判断待插入数据成员对应的待插入候选桶的主索引储存的地址所指是否为主索引存储单元,若是进入步骤S9,否则进入步骤S10;S9、保留该主索引存储单元,生成一级索引表并将其0号位地址置为NULL,将对应候选桶的主索引指针指向一级索引表;生成一级索引表的两个次级索引存储单元,并将一级索引表中两个待插入数据的次级索引存储单元地址存储位分别指向生成的两个次级索引存储单元,同时将两者的重定位标识值均置0,将待插入数据成员的前置指纹和保留的主索引存储单元中的前置指纹按顺序插入一级索引表的前置指纹位中,以及将待插入数据成员的后置指纹和保留的主索引存储单元中的后置指纹按顺序插入一级索引表的生成的两个次级索引存储单元中,结束插入后,注销保留的主索引存储单元,同时将一级索引表的剩余地址数

2;结束此次数据插入并进入步骤S13;S10、判断当前索引表的剩余地址数是否为0,若是则进入步骤S12;否则进入步骤S11;S11、生成当前索引表的次级索引存储单元,将其重定位标识值置0,并将当前索引表中待插入数据的次级索引存储单元地址存储位指向生成的次级索引存储单元,按顺序将待插入数据成员的前置指纹插入当前索引表的前置指纹位中,以及按顺序将待插入数据成员的后置指纹插入当前索引表生成的次级索引存储单元中,并将该索引表的剩余地址数

1,结束此次数据插入并进入步骤S13;S12、判断是否有下一级索引表,若是则进入步骤S10,否则进行重定位操作并进入步骤S13;S13、判断是否继续获取当前指令类型,若是则返回步骤S2,否则结束布谷鸟过滤器的指纹过滤。2.根据权利要求1所述的基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其特征在于:步骤S1初始化时,整个布谷鸟过滤器系统只存在一张地址位为空的索引表,即主索引表;主索引表地址所指存储的最小单位为主索引存储单元,其由前置指纹位、后置指纹
存储位和重定位标识值组成;两个存储位的占位相同,重定位标识值占位1个bit且具有0、1和n三种状态;其中0代表新插入指纹,1代表此存储单元发生过1次重定位操作,n代表该存储单元发生过n次重定位操作。3.根据权利要求1所述的基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其特征在于:一级索引表由剩余地址数存储位、0号地址位和次级索引表存储位组成;其中剩余地址数存储位存储着该级索引表次级索引表存储位的剩余数量,其初始化为n,且不包括0号地址位;次级索引表存储位包括次级索引表的前置指纹位和次级索引存储单元地址存储位,次级索引存储单元地址存储位指向该级索引表对应生成的次级索引存储单元,且以倒序的原则从n号位开始依次存储,直到1号位被使用时,该索引表的剩余地址数为0,即满载,满载则插入下一级索引表,且下一级索引表的结构与一级索引表相同;0号地址位初始化时为NULL,当具有下一级索引表时,该位存储的是下一级索引表的存储地址。4.根据权利要求1所述的基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其特征在于:步骤S3的k小于等于hash函数计算出的待插入数据成员ξ
X
的指纹信息的总位数的1/2。5.根据权利要求1所述的基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其特征在于:步骤S4中待插入数据成员ξ
X
的两个候选桶位置χ和γ分别为χ=h1(ξ
X
)和其中,为异或运算;f
X
为待插入数据成员的指纹信息;h1(
·
)为hash函数;一个数据成员拥有的两个候选桶,其数据信息只储存在其中一个候选桶中。6.根据权利要求1所述的基于离散型的双指纹存储布谷鸟过滤器的数据处理方法,其特征在于,步骤S12中重定位操作的具体方法包括以下子步骤:S12

1、生成一个格式为主索引存储单元的中间变量temp,并随机将原本一级索引表中的一个已有的数据成员的指纹信息全部填入中间变量temp中,结束填入后,置空该数据成员的次级索引表存储位信息并注销原本的次级索引存储单元;S12

2、在一级索引表中生成一个新的次级索引存储单元,并将其重定位标识值置为0,并将一级索引表置空的次级索引存储单元地址存储位指向一级索引表新的次级索引存储单元;按顺序将待插入数据成员ξ
X
的前置指纹插入一级索引表置空的前置指纹位中,以及按顺序将待插入数据成员ξ
X
的后置指纹插入一级索引表新的次级索引存储单元中;S12

3、判断中间变量temp的重定位标识值是否为0,若是则进入步骤S12

4;否则进入步骤S12

11;S12

4、计算中间变量temp的另一个候选桶位置,判断该候选桶的主索引指针所指的主索引存储的地址是否为空,若是则进入步骤S12

5;否则进入步骤S12

6;S12

5、将中间变量temp的重定位标识值置为1,同时将该候选桶的主索引指针指向中间变量temp,并结束重定位操作并进入步骤S14;S12

6、判断中间变量temp的另一个候选桶的主索引指针所指是否为主索引存储单元,若是则进入步骤S12

7;否则进入步骤S12

9;S12

7、保留该主索引存储单元,生成一级索引表并将其0号位地址置为NULL,并将对应候选桶的主索引指针指向该一级索引表;S12

8、生成一级索引表的两个次级索引存储单元,一个将重定位标识值置为0,一个将重定位标识值置为1;将中间变量temp的前置指纹和保留的主索引存储单元的前置指纹按
顺序插入一级索引表待插入数据的次级索引表存储位中的前置指纹位中,同时将插入中间变量temp的前置指纹的次级索引表存储位中的次级索引存储单元地址存储位指向重定位标识值置为1的...

【专利技术属性】
技术研发人员:邓显辉李斌勇赵兰蒋娜张小辉宋学江
申请(专利权)人:成都探码科技有限公司
类型:发明
国别省市:

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

1