一种基于多级布谷鸟过滤器的低存储开销计数器方法技术

技术编号:37545500 阅读:17 留言:0更新日期:2023-05-12 16:17
本发明专利技术基于布谷鸟过滤器实现一种低存储开销的计数器方法,同时具有较高读写性能。本发明专利技术采用多级布谷鸟过滤器,通过类似数值进位的方式扩大计数器的范围。每一级的布谷鸟过滤器的计数器长度都固定长度的比特数表示小范围的计数器,存储在指纹信息的后面。布谷鸟过滤器基于布谷鸟哈希表存储数据。为了提高存储效率,布谷鸟过滤器只存储数据项的指纹信息。将数据项进行哈希计算得到指纹信息,其长度只有32比特,大幅减少了数据项的存储空间。特别是,布谷鸟过滤器数据查询时间复杂度并不会随着数据量的增加而增加,其查询复杂度是O(1)级别,即使是最坏情况下也只需要2次查找。同时,布谷鸟过滤器高并发读操作、数据删除操作下仍具有较高的效率。因此,本发明专利技术的计数器方法整体上不仅具有低开销的存储空间,而且具有高性能的数据读写性能,并且支持动态增加和删除数据项。据项。据项。

【技术实现步骤摘要】
一种基于多级布谷鸟过滤器的低存储开销计数器方法


[0001]本专利技术属于计算机系统数据存储领域,设计一种基于多级布谷鸟过滤器的低存储开销计数器方法。

技术介绍

[0002]计数器广泛应用在计算机系统的各个领域,比如网络流量监控中需要统计不同链接的流量信息、缓存中需要通过计数器实现热点数据抓取、存储系统中的温冷热数据识别也需要计数器的支持。但是,无论是网络领域、存储领域、或者数据库领域,其数据量都是非常庞大,并且随着系统规模的扩大还会进一步增加。传统方法通常为每个数据块配备固定比特数的计数器,在数据量较少的时候,其存储开销尚不明显。但是随着数据量的增加其存储空间开销会迅速增加,难以适应海量数据的应用场景。

技术实现思路

[0003]为了解决现有技术中存在的上述问题,本专利技术基于多级布谷鸟过滤器实现一种低存储开销的计数器方法,同时具有较高读写性能。其具体技术方案如下:
[0004]布谷鸟过滤器是一种支持高并发读的数据结构,能够快速检测某个元素是否存在集合内,同时还支持数据项的动态增加和删除。布谷鸟过滤器基于布谷鸟哈希表存储数据。为了提高存储效率,布谷鸟过滤器只存储数据项的指纹信息。将数据项进行哈希计算得到指纹信息,其长度只有32比特,大幅减少了数据项的存储空间。特别是,布谷鸟过滤器数据查询时间复杂度并不会随着数据量的增加而增加,其查询复杂度是O(1)级别,即使是最坏情况下也只需要2次查找。同时,布谷鸟过滤器高并发读操作、数据删除操作仍具有较高的效率。因此,本专利技术的计数器方法整体上不仅具有低开销的存储空间,而且具有高性能的数据读写性能,并且支持动态增加和删除数据项。作为低存储开销的代价,布谷鸟过滤器因为哈希冲突的原因,对于哈希冲突的数据项会出现叠加计数。但是哈希冲突的概率非常低(指纹长度为12比特时,其误判率为0.19%),在实际应用中甚至可以忽略其影响。
[0005]本专利技术采用多级布谷鸟过滤器,通过类似数值进位的方式扩大计数器的范围。具体实现如下:每一级的布谷鸟过滤器的计数器长度都固定为c比特,存储在指纹信息的后面,单数据项的最大数值为2
c
;在第一级布谷鸟过滤器中,计数器中的数值V1不超过2
c
;第二级中数值V2,其真实大小是V2×2c
+V1;其他级别依次类推。本专利技术有4个主要操作:计数增加操作、计数减少操作、数据项查找操作和重哈希操作。计数增加操作是增加布谷鸟过滤器中数据项的计数。计数减少操作是减少布谷鸟过滤器中数据项的计数。数据项查找操作是判断一个数据项是否在布谷鸟过滤器中,因为第一级布谷鸟过滤器存储所有的数据,所以查找数据项是否存在时只需要查找第一级布谷鸟过滤器。为了进一步减少计数器的整体存储空间,每一级的布谷鸟过滤器初始大小小于上一级布谷鸟过滤器的大小(默认值为四分之一,可根据实际需要进行调整),当该级布谷鸟过滤器存储空间满了或者因为哈希冲突写入失败时,就将该布谷鸟过滤器扩大一倍,并进行重哈希操作。重哈希操作即将所有该级别的
数据重新插入到新生成的布谷鸟过滤器中。
[0006]优选的,所述多级布谷鸟过滤器计数增加操作,工作流程具体包括以下步骤:
[0007]步骤1,根据数据项计算其指纹信息,并从第一级开始查找。如果第一级布谷鸟中不存在该指纹,那么该数值第一次为第一次插入,将其计数器设置为1,并随指纹一起插入到布谷鸟过滤器中,并结束操作;否则,进入到步骤2增加计数;
[0008]步骤2,在第一级布谷鸟过滤器中找到数据项对应的指纹存储位置,获取其计数器。如果计数器的数值小于2
c
,那么直接将计数器加1,并结束操作。否则,将计数器清零,再进入步骤3执行进位操作;
[0009]步骤3,根据步骤1中计算的指纹在下一级布谷鸟过滤器找到数据项的存储位置,并取出计数器。接着判断计数器是否超过2
c
,如果没有超过,则将计数器加1,结束操作。如果该级的计数器也超过2
c
,则将该计数器清零,重复执行步骤3执行进位操作。如果已经达到最后一级,那么进入步骤4创建新一级的布谷鸟过滤器;
[0010]步骤4,为超过当前最大计数的数值创建新一级的布谷鸟过滤器,并且标记该级布谷鸟的层次,然后将该数据的指纹插入到新创建的布谷鸟过滤器中。同时,将上级对应的计数器清零,再将本级的计数器加1。
[0011]优选的,所述多级布谷鸟过滤器计数减少操作,具体包括以下步骤:
[0012]步骤1,根据数据项计算其指纹信息,并从第一级开始查找。如果第一级布谷鸟中不存在该指纹,那么数据项不存在,直接返回错误,并结束操作;否则,进行步骤2继续执行减少操作;
[0013]步骤2,根据指纹信息在第一级布谷鸟过滤器中找到数据项的存储位置,获取其计数器。如果计数器的数值大于0,那么直接将计数器减1,并结束操作。否则,进入步骤3执行退位操作;
[0014]步骤3,根据步骤1中计算的指纹在下一级布谷鸟过滤器找到数据项的存储位置,并取出计数器。如果该计数器仍等于0,那么继续步骤3进行再下一级的退位操作;否则进入步骤4;
[0015]步骤4,将该级的计数器减1。然后再根据之前的查找顺序,逐级回退,根据指纹信息查找到数据项的计数器,将其设置为2
c

[0016]优选的,所述多级布谷鸟过滤器数据项查找操作,具体包括以下步骤:
[0017]步骤1,根据数据项计算其指纹信息;
[0018]步骤2,根据步骤1计算得到的指纹值在第一级布谷鸟过滤器进行查找,如果找到那么返回数据项存在;否则,返回数据项不存在。
[0019]优选的,所述多级布谷鸟过滤器重哈希模块,具体包括以下步骤:
[0020]步骤1,新生成一个布谷鸟过滤器,其大小是原来该级布谷鸟过滤器的两倍;
[0021]步骤2,遍历所有的数据项,计算其指纹值。然后根据指纹值从第一级布谷鸟过滤器中查找该数据项。如果没有找到,表示并不存在,重复步骤2继续查找下一个数据项。否则进行步骤3;
[0022]步骤3,如果新生成的布谷鸟过滤器就在第一级,那么将查询到的指纹和计数器存入到新的布谷鸟过滤器;如果布谷鸟过滤器在其他级,则继续在下一级查找,直到找到新布谷鸟过滤器所在的层级为止。只要中间有任何一级查询不到,就表示数据项不存在,则跳回
步骤2继续查找下一个数据项。
[0023]本专利技术的优点:本专利技术不仅具有低开销的存储空间,而且具有高性能的数据读写性能,并且支持动态增加和删除数据项。
附图说明
[0024]图1为本专利技术实施例多级布谷鸟过滤器计数增加操作的流程图;
[0025]图2为本专利技术实施例多级布谷鸟过滤器计数减少操作的流程图;
[0026]图3为本专利技术实施例多级布谷鸟过滤器数据项查找操作的流程图;
[0027]图4为本专利技术实施例多级布谷鸟过滤器重哈希模块的流程图。
具体实施方式
[0028]为了使本专利技术的目的、技术方案和技术效本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多级布谷鸟过滤器的低存储开销计数器方法,其特征在于,采用多级布谷鸟过滤器实现一种类似数值进位的计数方法,扩大了单布谷鸟过滤器计数器的范围。每一级的布谷鸟过滤器的计数器长度都固定长度的比特数表示小范围的计数器,存储在指纹信息的后面。布谷鸟过滤器基于布谷鸟哈希表存储数据。为了提高存储效率,布谷鸟过滤器只存储数据项的指纹信息。将数据项进行哈希计算得到指纹信息,其长度只有32比特,大幅减少了数据项的存储空间。特别是,布谷鸟过滤器数据查询时间复杂度并不会随着数据量的增加而增加,其查询复杂度是O(1)级别,即使是最坏情况下也只需要2次查找。同时,布谷鸟过滤器高并发读操作、数据删除操作仍具有较高的效率。同时,还支持动态增加和删除数据项。2.如权利要求1所述的一种基于多级布谷鸟过滤器的低存储开销计数器方法,其特征在于,所述多级布谷鸟过滤器计数增加操作,具体包括以下步骤:步骤1,根据数据项计算其指纹信息,并从第一级开始查找。如果第一级布谷鸟中不存在该指纹,那么该数值第一次为第一次插入,将其计数器设置为1,并随指纹一起插入到布谷鸟过滤器中,并结束操作;否则,进入到步骤2增加计数;步骤2,在第一级布谷鸟过滤器中找到数据项对应的指纹存储位置,获取其计数器。如果计数器的数值小于2
c
,c为每个数据项为计数存储的比特数。那么直接将计数器加1,并结束操作。否则,将计数器清零,再进入步骤3执行进位操作;步骤3,根据步骤1中计算的指纹在下一级布谷鸟过滤器找到数据项的存储位置,并取出计数器。接着判断计数器是否超过2
c
,如果没有超过,则将计数器加1,结束操作。如果该级的计数器也超过2
c
,则将该计数器清零,重复执行步骤3执行进位操作。如果已经达到最后一级,那么进入步骤4创建新一级的布谷鸟过滤器;步骤4,为超过当前最大计数的数值创建新一级的布谷鸟过滤器,并且标记该级布谷鸟的层次,然后将该数据的指纹插入到新创建的布谷鸟过滤器中。同时,将上级对应的计数器清零,再将本级的...

【专利技术属性】
技术研发人员:李勇顾春华罗飞丁炜超
申请(专利权)人:华东理工大学
类型:发明
国别省市:

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

1