布隆过滤器动态调整方法、系统、电子设备及存储介质技术方案

技术编号:28793029 阅读:36 留言:0更新日期:2021-06-09 11:30
本申请涉及一种布隆过滤器动态调整方法、系统、电子设备及存储介质,其中,该方法包括:已有位数检测步骤,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;数据表监测步骤,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;扩容检测步骤,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;布隆过滤器调整步骤,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。通过本申请减小内存消耗,有效解决数据碰撞的问题并优化布隆过滤器的使用。布隆过滤器的使用。布隆过滤器的使用。

【技术实现步骤摘要】
布隆过滤器动态调整方法、系统、电子设备及存储介质


[0001]本申请涉及计算机
,特别是涉及布隆过滤器动态调整方法、系统、电子设备和计算机可读存储介质。

技术介绍

[0002]在数据量激增的当下,伴随着大数据的成长,Redis已经成了大数据流程处理中必不可少的组件之一,Redis通常是用来做为缓存的中间数据库,但随着企业服务的用户、数据量越来越多,而Redis又是内存级数据库,致使在一些实时数据处理场景下内存远远不足,许多企业针对该问题使用布隆过滤器(Bloom Filter)作为缓解。布隆过滤器是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,并且由于不同主键的数据来临时,只会占用单字节,大大节省内存开销。
[0003]但是使用布隆过滤器要预先分配内存空间,且通常预留位数要是使用位数的十倍以上,且hash算法精确的情况下才能尽可能的保证hash碰撞的概率比较小,如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以必有一个输出串对应无穷多个输入串,碰撞是必然存在的。由于无法预估实时数据量级,可能会出现面临数据激增情况下可能会导致hash碰撞,也可能会出现完全高估数据量级且又按照10倍计算而产生大量内存浪费。现有的开发人员通过预估数量量级乘10倍计算出布隆过滤器大小。但是,因为预估量级要考虑到数据激增问题所以给的内存量级往往是平常的3倍左右,再考虑到hash碰撞一般需要再乘10倍,也就是30倍的内存量级,虽然只存一位,但是消耗的内存还是比较多。
[0004]当然现在也有方案是通过多层hash算法去缓解这个问题,但是多层hash算法其实也要去面临的是每一层hash算法所需要把数据存储的表的占用内存空间。因为hash算法注定要面临的问题就是hash碰撞,哪怕使用了多层hash,但是在每层表太小的情况下仍然会遇到这种情况,所以不论使用何种hash算法保证表的大小是数据量级的安全倍数很重要的一个前提。
[0005]现有技术中可通过自动根据内存资源使用量调整hash算法。但其也存在缺点。首先,优化hash涉及到最重要的问题就是原有数据供外部使用的问题,原有数据首先不能全量存储,因为一旦存储那本质上就背离了布隆过滤器用来减少内存使用的初衷,其次,一旦原有数据要通过hash来反推,如果过于频繁,则会影响使用;此外hash算法之间的优化虽然会有优化率,但是如果数据量级太大,仍然完全无法抵抗冲击。

技术实现思路

[0006]本申请实施例提供了一种布隆过滤器动态调整方法、系统、电子设备和计算机可读存储介质,通过检测当前位数占布隆过滤器表的位数,自动扩容布隆过滤器,并根据一设定阈值提供多层hash过滤的方案,以减小内存消耗,有效解决数据碰撞的问题并优化布隆过滤器的使用。
[0007]第一方面,本申请实施例提供了一种布隆过滤器动态调整方法,包括:
[0008]已有位数检测步骤,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;
[0009]数据表监测步骤,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;
[0010]扩容检测步骤,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;
[0011]布隆过滤器调整步骤,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。
[0012]基于上述步骤,本申请实施例通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。
[0013]在其中一些实施例中,所述布隆过滤器调整步骤进一步包括:
[0014]数据表扩容步骤,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过一控制中心接收所述调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;
[0015]hash算法调整步骤,用于若调度中心检测到所述数据表扩容预设倍数后达到所述预设表阈值,说明无法进行数据表扩容,则根据所述布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知。具体的,所述布隆过滤器预设有多层hash算法,则根据预设多层hash算法进行数据是否存在判断并提供外部访问使用。
[0016]基于上述步骤,本申请实施例根据预设的多层hash算法可自动实现多层布隆过滤器,并对多层hash算法的应用进行了条件限制,既能有效解决数据碰撞的问题,又能防止hash反推过度频繁影响布隆过滤器使用的问题,实现减小内存使用的效果。
[0017]在其中一些实施例中,所述数据表扩容步骤进一步包括:
[0018]扩容请求发送步骤,所述调度中心发送数据表扩容请求至所述控制中心;
[0019]扩容请求处理步骤,所述控制中心接收并根据所述数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;具体的,所述新数据表的位数相较于所述数据表增加预设倍数后,所述数据迁移为在所述布隆过滤器的元数据表中拷贝所述数据表的数据写入所述新数据表;
[0020]扩容完成通知步骤,所述控制中心返回扩容完成通知至所述调度中心,以通知所述调度中心所述新数据表建立完成且数据迁移完成。
[0021]在其中一些实施例中,所述布隆过滤器调整步骤中,若所述调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值且所述布隆过滤器预设有多层hash算法,所述布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
[0022]第二方面,本申请实施例提供了一种布隆过滤器动态调整系统,包括:
[0023]已有位数检测模块,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;
[0024]数据表监测模块,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;
[0025]扩容检测模块,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;
[0026]布隆过滤器调整模块,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。
[0027]基于上述模块,本申请实施例通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。
[0028]在其中一些实施例中,所述布隆过滤器调整模块进一步包括:
[0029]数据表扩容模块,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种布隆过滤器动态调整方法,其特征在于,包括:已有位数检测步骤,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;数据表监测步骤,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;扩容检测步骤,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;布隆过滤器调整步骤,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。2.根据权利要求1所述的布隆过滤器动态调整方法,其特征在于,所述布隆过滤器调整步骤进一步包括:数据表扩容步骤,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过一控制中心接收所述调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;hash算法调整步骤,用于若调度中心检测到所述数据表扩容预设倍数后达到所述预设表阈值,则根据所述布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知。3.根据权利要求2所述的布隆过滤器动态调整方法,其特征在于,所述数据表扩容步骤进一步包括:扩容请求发送步骤,所述调度中心发送数据表扩容请求至所述控制中心;扩容请求处理步骤,所述控制中心接收并根据所述数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;扩容完成通知步骤,所述控制中心返回扩容完成通知至所述调度中心。4.根据权利要求2或3所述的布隆过滤器动态调整方法,其特征在于,所述布隆过滤器调整步骤中,若所述调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值且所述布隆过滤器预设有多层hash算法,所述布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。5.一种布隆过滤器动态调整系统,其特征在于,包括:已有位数检测模块,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;数据表监测模块,监控中心根据一预设...

【专利技术属性】
技术研发人员:王学佳
申请(专利权)人:恩亿科北京数据科技有限公司
类型:发明
国别省市:

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

1