CN112925629B - 布隆过滤器动态调整方法、系统、电子设备及存储介质 - Google Patents
布隆过滤器动态调整方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112925629B CN112925629B CN202110348319.3A CN202110348319A CN112925629B CN 112925629 B CN112925629 B CN 112925629B CN 202110348319 A CN202110348319 A CN 202110348319A CN 112925629 B CN112925629 B CN 112925629B
- Authority
- CN
- China
- Prior art keywords
- data table
- bloom filter
- preset
- expansion
- capacity expansion
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种布隆过滤器动态调整方法、系统、电子设备及存储介质,其中,该方法包括:已有位数检测步骤,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;数据表监测步骤,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;扩容检测步骤,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;布隆过滤器调整步骤,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。通过本申请减小内存消耗,有效解决数据碰撞的问题并优化布隆过滤器的使用。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及布隆过滤器动态调整方法、系统、电子设备和计算机可读存储介质。
背景技术
在数据量激增的当下,伴随着大数据的成长,Redis已经成了大数据流程处理中必不可少的组件之一,Redis通常是用来做为缓存的中间数据库,但随着企业服务的用户、数据量越来越多,而Redis又是内存级数据库,致使在一些实时数据处理场景下内存远远不足,许多企业针对该问题使用布隆过滤器(Bloom Filter)作为缓解。布隆过滤器是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,并且由于不同主键的数据来临时,只会占用单字节,大大节省内存开销。
但是使用布隆过滤器要预先分配内存空间,且通常预留位数要是使用位数的十倍以上,且hash算法精确的情况下才能尽可能的保证hash碰撞的概率比较小,如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以必有一个输出串对应无穷多个输入串,碰撞是必然存在的。由于无法预估实时数据量级,可能会出现面临数据激增情况下可能会导致hash碰撞,也可能会出现完全高估数据量级且又按照10倍计算而产生大量内存浪费。现有的开发人员通过预估数量量级乘10倍计算出布隆过滤器大小。但是,因为预估量级要考虑到数据激增问题所以给的内存量级往往是平常的3倍左右,再考虑到hash碰撞一般需要再乘10倍,也就是30倍的内存量级,虽然只存一位,但是消耗的内存还是比较多。
当然现在也有方案是通过多层hash算法去缓解这个问题,但是多层hash算法其实也要去面临的是每一层hash算法所需要把数据存储的表的占用内存空间。因为hash算法注定要面临的问题就是hash碰撞,哪怕使用了多层hash,但是在每层表太小的情况下仍然会遇到这种情况,所以不论使用何种hash算法保证表的大小是数据量级的安全倍数很重要的一个前提。
现有技术中可通过自动根据内存资源使用量调整hash算法。但其也存在缺点。首先,优化hash涉及到最重要的问题就是原有数据供外部使用的问题,原有数据首先不能全量存储,因为一旦存储那本质上就背离了布隆过滤器用来减少内存使用的初衷,其次,一旦原有数据要通过hash来反推,如果过于频繁,则会影响使用;此外hash算法之间的优化虽然会有优化率,但是如果数据量级太大,仍然完全无法抵抗冲击。
发明内容
本申请实施例提供了一种布隆过滤器动态调整方法、系统、电子设备和计算机可读存储介质,通过检测当前位数占布隆过滤器表的位数,自动扩容布隆过滤器,并根据一设定阈值提供多层hash过滤的方案,以减小内存消耗,有效解决数据碰撞的问题并优化布隆过滤器的使用。
第一方面,本申请实施例提供了一种布隆过滤器动态调整方法,包括:
已有位数检测步骤,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;
数据表监测步骤,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;
扩容检测步骤,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;
布隆过滤器调整步骤,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。
基于上述步骤,本申请实施例通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。
在其中一些实施例中,所述布隆过滤器调整步骤进一步包括:
数据表扩容步骤,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过一控制中心接收所述调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;
hash算法调整步骤,用于若调度中心检测到所述数据表扩容预设倍数后达到所述预设表阈值,说明无法进行数据表扩容,则根据所述布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知。具体的,所述布隆过滤器预设有多层hash算法,则根据预设多层hash算法进行数据是否存在判断并提供外部访问使用。
基于上述步骤,本申请实施例根据预设的多层hash算法可自动实现多层布隆过滤器,并对多层hash算法的应用进行了条件限制,既能有效解决数据碰撞的问题,又能防止hash反推过度频繁影响布隆过滤器使用的问题,实现减小内存使用的效果。
在其中一些实施例中,所述数据表扩容步骤进一步包括:
扩容请求发送步骤,所述调度中心发送数据表扩容请求至所述控制中心;
扩容请求处理步骤,所述控制中心接收并根据所述数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;具体的,所述新数据表的位数相较于所述数据表增加预设倍数后,所述数据迁移为在所述布隆过滤器的元数据表中拷贝所述数据表的数据写入所述新数据表;
扩容完成通知步骤,所述控制中心返回扩容完成通知至所述调度中心,以通知所述调度中心所述新数据表建立完成且数据迁移完成。
在其中一些实施例中,所述布隆过滤器调整步骤中,若所述调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值且所述布隆过滤器预设有多层hash算法,所述布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
第二方面,本申请实施例提供了一种布隆过滤器动态调整系统,包括:
已有位数检测模块,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;
数据表监测模块,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;
扩容检测模块,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;
布隆过滤器调整模块,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。
基于上述模块,本申请实施例通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。
在其中一些实施例中,所述布隆过滤器调整模块进一步包括:
数据表扩容模块,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过一控制中心接收所述调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;
hash算法调整模块,用于若调度中心检测到所述数据表扩容预设倍数后达到所述预设表阈值,说明无法进行数据表扩容,则根据所述布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知。具体的,所述布隆过滤器预设有多层hash算法,则根据预设多层hash算法进行数据是否存在判断并提供外部访问使用。
基于上述模块,本申请实施例根据预设的多层hash算法可自动实现多层布隆过滤器,并对多层hash算法的应用进行了条件限制,既能有效解决数据碰撞的问题,又能防止hash反推过度频繁影响布隆过滤器使用的问题,实现减小内存使用的效果。
在其中一些实施例中,所述数据表扩容模块进一步包括:
扩容请求发送模块,所述调度中心发送数据表扩容请求至所述控制中心;
扩容请求处理模块,所述控制中心接收并根据所述数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;具体的,所述新数据表的位数相较于所述数据表增加预设倍数后,所述数据迁移为在所述布隆过滤器的元数据表中拷贝所述数据表的数据写入所述新数据表;
扩容完成通知模块,所述控制中心返回扩容完成通知至所述调度中心,以通知所述调度中心所述新数据表建立完成且数据迁移完成。
在其中一些实施例中,所述布隆过滤器调整模块中,若所述调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值且所述布隆过滤器预设有多层hash算法,所述布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的布隆过滤器动态调整方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的布隆过滤器动态调整方法。
相比于相关技术,本申请实施例提供的布隆过滤器动态调整方法、系统、电子设备和计算机可读存储介质,通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。既能有效解决数据碰撞的问题,又能防止hash反推过度频繁影响布隆过滤器使用的问题,实现减小内存使用的效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的布隆过滤器动态调整方法的流程示意图;
图2是根据本申请实施例的布隆过滤器动态调整方法的分步骤流程示意图;
图3是根据本申请实施例的布隆过滤器动态调整方法的原理示意图;
图4是根据本申请实施例的布隆过滤器动态调整系统的结构框图;
图5是根据本申请实施例的布隆过滤器动态调整系统的子模块结构框图。
附图说明:
1、已有位数检测模块;2、数据表监测模块;3、扩容检测模块;
4、布隆过滤器调整模块;41、数据表扩容模块;42、hash算法调整模块;
411、扩容请求发送模块;412、扩容请求处理模块;
413、扩容完成通知模块。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供了一种布隆过滤器动态调整方法。图1-2是根据本申请实施例的布隆过滤器动态调整方法的流程图,图3是根据本申请实施例的布隆过滤器动态调整方法的原理示意图,如图1-3所示,该流程包括如下步骤:
已有位数检测步骤S1,获取布隆过滤器的数据表的已有位数,并获取已有位数与数据表的总位数的比值,其中,已有位数用于表示布隆过滤器的数据表中已有数据的地址位数,举例而非限制,如数据表的总位数为100位,已有位数为20位,则该比值为五分之一;
数据表监测步骤S2,监控中心根据一预设扩容阈值和比值实时监控数据表是否需要扩容,若该比值已达到预设扩容阈值,则认为数据表需要扩容,并发送扩容请求至调度中心;
扩容检测步骤S3,调度中心接收扩容请求并根据扩容请求检测数据表扩容一预设倍数后是否达到一预设表阈值;其中,该预设倍数可以是10倍或任意自然数倍数;
布隆过滤器调整步骤S4,若数据表扩容预设倍数后未达到预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知,值得注意的是,本申请实施例并不限制多层hash算法的层数及具体所采用的hash函数。
通过上述步骤,本申请实施例基于预先构建的监控中心和调度中心两个子模块,利用监控中心模块对布隆过滤器的数据表进行实时监控并发送扩容请求,利用调度中心模块对扩容请求进行处理,以通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。
在其中一些实施例中,布隆过滤器调整步骤S4进一步包括:
数据表扩容步骤S41,用于若调度中心检测到数据表扩容预设倍数后未达到预设表阈值,则通过一控制中心接收调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;
hash算法调整步骤S42,用于若调度中心检测到数据表扩容预设倍数后达到预设表阈值,说明无法进行数据表扩容,则根据布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知。具体的,布隆过滤器预设有多层hash算法,则根据预设多层hash算法进行数据是否存在判断并提供外部访问使用。举例而非限制,若用户预设了二层hash算法,则发送请求建立新的同样大小的二层hash数据表,以生成的二层hash数据表代替数据表,以此类推至N层hash算法。基于上述步骤,本申请实施例根据预设的多层hash算法可自动实现多层布隆过滤器,并对多层hash算法的应用进行了条件限制,既能有效解决数据碰撞的问题,又能防止hash反推过度频繁影响布隆过滤器使用的问题,实现减小内存使用的效果。
在其中一些实施例中,数据表扩容步骤S41进一步包括:
扩容请求发送步骤S411,调度中心发送数据表扩容请求至控制中心;
扩容请求处理步骤S412,控制中心接收并根据数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;具体的,新数据表的位数相较于数据表增加预设倍数后,数据迁移为在布隆过滤器的元数据表中拷贝数据表的数据写入新数据表,其中,元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的;
扩容完成通知步骤S413,控制中心返回扩容完成通知至调度中心,以通知调度中心新数据表建立完成且数据迁移完成。
值得注意的是,布隆过滤器调整步骤S4中,若调度中心检测到数据表扩容预设倍数后未达到预设表阈值且布隆过滤器预设有多层hash算法,布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种布隆过滤器动态调整系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是根据本申请实施例的布隆过滤器动态调整系统的结构框图,图5是根据本申请实施例的布隆过滤器动态调整系统的子模块结构框图,如图4-5所示,该系统包括:
已有位数检测模块1,获取布隆过滤器的数据表的已有位数,并获取已有位数与数据表的总位数的比值;举例而非限制,如数据表的总位数为100位,已有位数为20位;
数据表监测模块2,监控中心根据一预设扩容阈值和比值实时监控数据表是否需要扩容并发送扩容请求至调度中心,其中,监控中心为本系统基于对布隆过滤器的数据表进行实时监控并发送扩容请求的逻辑预先构建的子模块,调度中心为本系统基于对扩容请求进行处理的逻辑预先构建的子模块;
扩容检测模块3,调度中心接收扩容请求并根据扩容请求检测数据表扩容一预设倍数后是否达到一预设表阈值;
布隆过滤器调整模块4,若数据表扩容预设倍数后未达到预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知。具体的,布隆过滤器调整模块4进一步包括:数据表扩容模块41,用于若调度中心检测到数据表扩容预设倍数后未达到预设表阈值,则通过一控制中心接收调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;hash算法调整模块42,用于若调度中心检测到数据表扩容预设倍数后达到预设表阈值,说明无法进行数据表扩容,则根据布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知。具体的,布隆过滤器预设有多层hash算法,则根据预设多层hash算法进行数据是否存在判断并提供外部访问使用。举例而非限制,若用户预设了二层hash算法,则发送请求建立新的同样大小的二层hash数据表,以生成的二层hash数据表代替数据表,以此类推至N层hash算法。基于上述模块,本申请实施例根据预设的多层hash算法可自动实现多层布隆过滤器,并对多层hash算法的应用进行了条件限制,既能有效解决数据碰撞的问题,又能防止hash反推过度频繁影响布隆过滤器使用的问题,实现减小内存使用的效果。
其中,数据表扩容模块41进一步包括:扩容请求发送模块411,调度中心发送数据表扩容请求至控制中心;扩容请求处理模块412,控制中心接收并根据数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;具体的,新数据表的位数相较于数据表增加预设倍数后,数据迁移为在布隆过滤器的元数据表中拷贝数据表的数据写入新数据表;扩容完成通知模块413,控制中心返回扩容完成通知至调度中心,以通知调度中心新数据表建立完成且数据迁移完成。
值得注意的是,布隆过滤器调整模块4中,若调度中心检测到数据表扩容预设倍数后未达到预设表阈值且布隆过滤器预设有多层hash算法,布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
基于上述模块,本申请实施例通过监控数据表位数动态实现布隆过滤器扩容,取代布隆过滤器原有的固定被写死的机制,无需预设太大内存,有效解决现有布隆过滤器内存消耗过多的问题。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
另外,结合图1-3描述的本申请实施例布隆过滤器动态调整方法可以由电子设备来实现。电子设备可以包括处理器以及存储有计算机程序指令的存储器。
具体地,上述处理器可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(SolidState Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器可在数据处理装置的内部或外部。在特定实施例中,存储器是非易失性(Non-Volatile)存储器。在特定实施例中,存储器包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(Random AccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-Only Memory,简称为PROM)、可擦除PROM(Erasable ProgrammableRead-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable ProgrammableRead-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic RandomAccess Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器所执行的可能的计算机程序指令。
处理器通过读取并执行存储器中存储的计算机程序指令,以实现上述实施例中的任意一种布隆过滤器动态调整方法。
另外,结合上述实施例中的布隆过滤器动态调整方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种布隆过滤器动态调整方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种布隆过滤器动态调整方法,其特征在于,包括:
已有位数检测步骤,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;
数据表监测步骤,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;
扩容检测步骤,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;
布隆过滤器调整步骤,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知;其中,所述布隆过滤器调整步骤进一步包括:
数据表扩容步骤,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过一控制中心接收所述调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;
hash算法调整步骤,用于若调度中心检测到所述数据表扩容预设倍数后达到所述预设表阈值,则根据所述布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知;
若所述调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值且所述布隆过滤器预设有多层hash算法,所述布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
2.根据权利要求1所述的布隆过滤器动态调整方法,其特征在于,所述数据表扩容步骤进一步包括:
扩容请求发送步骤,所述调度中心发送数据表扩容请求至所述控制中心;
扩容请求处理步骤,所述控制中心接收并根据所述数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;
扩容完成通知步骤,所述控制中心返回扩容完成通知至所述调度中心。
3.一种布隆过滤器动态调整系统,其特征在于,包括:
已有位数检测模块,获取布隆过滤器的数据表的已有位数,并获取所述已有位数与所述数据表的总位数的比值;
数据表监测模块,监控中心根据一预设扩容阈值和所述比值实时监控所述数据表是否需要扩容并发送扩容请求至调度中心;
扩容检测模块,调度中心接收扩容请求并根据所述扩容请求检测所述数据表扩容一预设倍数后是否达到一预设表阈值;
布隆过滤器调整模块,若所述数据表扩容所述预设倍数后未达到所述预设表阈值,则进行数据表扩容,否则,进行多层hash算法调整或发出内存报警通知;其中,所述布隆过滤器调整模块进一步包括:
数据表扩容模块,用于若调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值,则通过一控制中心接收所述调度中心的数据表库容请求并根据数据表扩容请求建立新表并进行表数据迁移;
hash算法调整模块,用于若调度中心检测到所述数据表扩容预设倍数后达到所述预设表阈值,则根据所述布隆过滤器是否预设有多层hash算法通过多层布隆过滤器提供外部访问使用或发送内存报警通知,
若所述调度中心检测到所述数据表扩容预设倍数后未达到所述预设表阈值且所述布隆过滤器预设有多层hash算法,所述布隆过滤器进行多层hash算法运算,但不启动多层hash数据表作为数据是否存在判断及外部访问使用。
4.根据权利要求3所述的布隆过滤器动态调整系统,其特征在于,所述数据表扩容模块进一步包括:
扩容请求发送模块,所述调度中心发送数据表扩容请求至所述控制中心;
扩容请求处理模块,所述控制中心接收并根据所述数据表扩容请求建立增加预设倍数后的新数据表并进行数据迁移;
扩容完成通知模块,所述控制中心返回扩容完成通知至所述调度中心。
5.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1或2所述的布隆过滤器动态调整方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1或2所述的布隆过滤器动态调整方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110348319.3A CN112925629B (zh) | 2021-03-31 | 2021-03-31 | 布隆过滤器动态调整方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110348319.3A CN112925629B (zh) | 2021-03-31 | 2021-03-31 | 布隆过滤器动态调整方法、系统、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112925629A CN112925629A (zh) | 2021-06-08 |
CN112925629B true CN112925629B (zh) | 2023-10-20 |
Family
ID=76176820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110348319.3A Active CN112925629B (zh) | 2021-03-31 | 2021-03-31 | 布隆过滤器动态调整方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112925629B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320654A (zh) * | 2014-05-28 | 2016-02-10 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN106445944A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种数据查询请求的处理方法、装置及电子设备 |
CN107729535A (zh) * | 2017-11-17 | 2018-02-23 | 中国科学技术大学 | 一种键值数据库内布隆过滤器的配置方法 |
CN109828721A (zh) * | 2019-01-23 | 2019-05-31 | 平安科技(深圳)有限公司 | 数据删除方法、装置、计算机设备及存储介质 |
US10503737B1 (en) * | 2015-03-31 | 2019-12-10 | Maginatics Llc | Bloom filter partitioning |
CN112068958A (zh) * | 2020-08-31 | 2020-12-11 | 常州微亿智造科技有限公司 | 布隆过滤器和数据处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691731B2 (en) * | 2015-11-26 | 2020-06-23 | International Business Machines Corporation | Efficient lookup in multiple bloom filters |
-
2021
- 2021-03-31 CN CN202110348319.3A patent/CN112925629B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320654A (zh) * | 2014-05-28 | 2016-02-10 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
US10503737B1 (en) * | 2015-03-31 | 2019-12-10 | Maginatics Llc | Bloom filter partitioning |
CN106445944A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种数据查询请求的处理方法、装置及电子设备 |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN107729535A (zh) * | 2017-11-17 | 2018-02-23 | 中国科学技术大学 | 一种键值数据库内布隆过滤器的配置方法 |
CN109828721A (zh) * | 2019-01-23 | 2019-05-31 | 平安科技(深圳)有限公司 | 数据删除方法、装置、计算机设备及存储介质 |
WO2020151332A1 (zh) * | 2019-01-23 | 2020-07-30 | 平安科技(深圳)有限公司 | 数据删除方法、装置、计算机设备及存储介质 |
CN112068958A (zh) * | 2020-08-31 | 2020-12-11 | 常州微亿智造科技有限公司 | 布隆过滤器和数据处理方法 |
Non-Patent Citations (3)
Title |
---|
Elastic Bloom Filter:Deletable and Expandable Filter Using Elastic Fingerprints;Yuhan Wu等;《IEEE Transaction on Computers》;984-991 * |
一种分层次数据去冗技术研究;王浩严;《中国优秀硕士学位论文全文数据库 信息科技辑》;I137-63 * |
区块链应用下的新型区块链布隆过滤器;樊星等;《计算机科学与探索》;1921-1929 * |
Also Published As
Publication number | Publication date |
---|---|
CN112925629A (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853549B2 (en) | Index storage in shingled magnetic recording (SMR) storage system with non-shingled region | |
CN111309258B (zh) | 一种b+树的存取方法、装置和计算机可读存储介质 | |
CN112286459A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN111880731B (zh) | 一种数据处理方法、装置及相关组件 | |
CN110399096B (zh) | 分布式文件系统元数据缓存重删的方法、装置以及设备 | |
CN110765031A (zh) | 数据存储方法、装置、移动终端及存储介质 | |
CN112799595A (zh) | 数据处理方法、设备及存储介质 | |
WO2017020735A1 (zh) | 一种数据处理方法、备份服务器及存储系统 | |
CN111221475A (zh) | 一种存储空间的管理方法、装置、设备及可读介质 | |
CN110688065A (zh) | 一种存储空间管理方法、系统、电子设备及存储介质 | |
CN112925629B (zh) | 布隆过滤器动态调整方法、系统、电子设备及存储介质 | |
CN111984650A (zh) | 一种树结构数据的存储方法、系统及相关装置 | |
US10664952B2 (en) | Image processing method, and device, for performing coordinate conversion | |
CN109669623B (zh) | 一种文件管理方法、文件管理装置、电子设备及存储介质 | |
CN116204311A (zh) | Pod集群扩缩容方法、装置、计算机设备和存储介质 | |
CN113626089B (zh) | 一种基于bios系统的数据操作方法、系统、介质及设备 | |
CN114610243A (zh) | 一种精简卷转换方法、系统、存储介质及设备 | |
CN114489481A (zh) | 硬盘存储数据并访问的方法及系统 | |
CN116820323A (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
CN107918654B (zh) | 文件解压缩方法、装置及电子设备 | |
CN111143288A (zh) | 一种数据存储方法、系统及相关装置 | |
CN113986134B (zh) | 存储数据的方法、读取数据的方法和装置 | |
CN116860564B (zh) | 一种云服务器数据管理方法及其数据管理装置 | |
US11210215B2 (en) | Computing device and operation method thereof | |
CN113741787B (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 |