CN114791904A - 布隆过滤器的持久化压缩方法及装置 - Google Patents

布隆过滤器的持久化压缩方法及装置 Download PDF

Info

Publication number
CN114791904A
CN114791904A CN202210474279.1A CN202210474279A CN114791904A CN 114791904 A CN114791904 A CN 114791904A CN 202210474279 A CN202210474279 A CN 202210474279A CN 114791904 A CN114791904 A CN 114791904A
Authority
CN
China
Prior art keywords
bloom filter
compression
type
threshold
ratio
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.)
Granted
Application number
CN202210474279.1A
Other languages
English (en)
Other versions
CN114791904B (zh
Inventor
翁冠
王静逸
张国超
蔡娟
李俊杰
曹岩
张俊
张淑芬
张鹤苧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202210474279.1A priority Critical patent/CN114791904B/zh
Publication of CN114791904A publication Critical patent/CN114791904A/zh
Application granted granted Critical
Publication of CN114791904B publication Critical patent/CN114791904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供一种布隆过滤器的持久化压缩方法及装置,涉及大数据技术领域和布隆过滤器压缩领域。该布隆过滤器的持久化压缩方法包括:根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型;根据所述布隆过滤器的类型以及预设的压缩方案映射关系获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式;按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。本申请针对布隆过滤器的结构、类型和二值特性,采用定制化压缩方法,对于不同类型的布隆过滤器,采用不同的压缩方式进行压缩。相比于现有技术,本申请降低了布隆过滤器压缩后所占用的存储空间。

Description

布隆过滤器的持久化压缩方法及装置
技术领域
本申请涉及大数据技术领域和布隆过滤器压缩领域,具体涉及一种布隆过滤器的持久化压缩方法及装置。
背景技术
在大数据去重方面,布隆过滤器的使用已经日益广泛。布隆过滤器一般存在内存中,当服务关闭或宕机时,需持久化布隆过滤器。但考虑到主从同步的情况,布隆过滤器落地到磁盘的文件应尽可能小,以节省带宽。目前一般直接将布隆过滤器直接使用通用压缩方法压缩落地成二进制文件,在海量数据情况下,布隆过滤器所占空间一般较大,通常为500M-10G不等。通用压缩方法对于被压缩文件采用黑盒压缩,例如对于zip压缩来说,采用的是lz77算法及霍夫曼编码,主要针对字符压缩。但现有的通用压缩方法压缩得到的文件还是较大,无法达到节约带宽的目的。
发明内容
为了降低布隆过滤器压缩后文件所占空间,第一方面,本申请提供一种布隆过滤器的持久化压缩方法,包括:
根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型;
根据所述布隆过滤器的类型以及预设的压缩方案映射关系获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式;
按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。
在一实施例中,所述根据布隆过滤器的内容确定布隆过滤器的类型,包括:
获取所述布隆过滤器的内容中包含的0和1的数量;
根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型;或
根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型。
在一实施例中,所述根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型,包括:
分别判断1的数量在0和1的总数中所占的第一比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第一比例小于或等于所述第一阈值,则布隆过滤器为稀疏性;若所述第一比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第一比例大于或等于所述第二阈值,则布隆过滤器为密集型。
在一实施例中,所述根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型,包括:
分别判断0的数量在0和1的总数中所占的第二比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第二比例小于或等于所述第一阈值,则布隆过滤器为密集型;若所述第二比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第二比例大于或等于所述第二阈值,则布隆过滤器为稀疏型。
在一实施例中,当布隆过滤器为稀疏型或密集型时,所述按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果,包括:
对所述布隆过滤器的内容进行减值压缩,得到对应的多个元组;
对所述多个元组进行变长字节编码,得到所述压缩结果。
在一实施例中,当布隆过滤器为普通型时,所述按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果,包括:
对所述布隆过滤器的内容进行游程编码和二值约定,得到对应的二值约定结果;
对所述二值约定结果进行霍夫曼编码,得到所述压缩结果。
第二方面,本申请提供一种布隆过滤器的持久化压缩装置,包括:
类型确定模块,用于根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型;
压缩方案确定模块,用于根据所述布隆过滤器的类型以及预设的压缩方案映射表获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式;
压缩模块,用于按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。
在一实施例中,所述类型确定模块具体包括:
内容统计单元,用于获取所述布隆过滤器的内容中包含的0和1的数量;
类型确定单元,用于根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型;或根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型。
在一实施例中,所述类型确定单元具体用于:
分别判断1的数量在0和1的总数中所占的第一比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第一比例小于或等于所述第一阈值,则布隆过滤器为稀疏性;若所述第一比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第一比例大于或等于所述第二阈值,则布隆过滤器为密集型。
在一实施例中,所述类型确定单元具体用于:
分别判断0的数量在0和1的总数中所占的第二比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第二比例小于或等于所述第一阈值,则布隆过滤器为密集型;若所述第二比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第二比例大于或等于所述第二阈值,则布隆过滤器为稀疏型。
在一实施例中,当布隆过滤器为稀疏型或密集型时,所述压缩模块具体用于:
对所述布隆过滤器的内容进行减值压缩,得到对应的多个元组;
对所述多个元组进行变长字节编码,得到所述压缩结果。
在一实施例中,当布隆过滤器为普通型时,所述压缩模块具体用于:
对所述布隆过滤器的内容进行游程编码和二值约定,得到对应的二值约定结果;
对所述二值约定结果进行霍夫曼编码,得到所述压缩结果。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请提供的任一布隆过滤器的持久化压缩方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请提供的任一布隆过滤器的持久化压缩方法的步骤。
第五方面,本申请提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请提供的任一布隆过滤器的持久化压缩方法的步骤。
本申请提供的布隆过滤器的持久化压缩方法及装置,针对布隆过滤器的结构(“1”的位置)和类型(稀疏、普通、密集)和二值特性,采用定制化压缩方法,对于不同类型的布隆过滤器,采用不同的压缩方式进行压缩。相比于现有的直接采用通用压缩方法进行压缩形成二进制文件,本申请降低了布隆过滤器压缩后所占用的存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的布隆过滤器的持久化压缩方法的一种示意图。
图2为本申请提供的确定布隆过滤器的类型的一种方法示意图。
图3为本申请提供的确定布隆过滤器的类型的另一种方法示意图。
图4为本申请提供的对稀疏型或密集型布隆过滤器压缩的方法示意图。
图5为本申请提供的对普通型布隆过滤器压缩的方法示意图。
图6为本申请提供的霍夫曼编码的二叉树示意图。
图7为本申请提供的布隆过滤器的持久化压缩方法的整体示意图。
图8为本申请提供的布隆过滤器的持久化压缩装置的一种示意图。
图9为本申请提供的布隆过滤器的持久化压缩装置的另一种示意图。
图10为本申请提供的一种电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
布隆过滤器(Bloom Filter)实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势,其空间效率和查询时间都比一般的算法要好的多,布隆过滤器存储空间和插入/查询时间都是常数,且布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。布隆过滤器在网页URL的去重、垃圾邮件的判别、集合重复元素的判别、查询加速(比如基于key-value的存储系统)等方面都有非常广泛的应用。
布隆过滤器一般存在内存中,当服务关闭或宕机时,需持久化布隆过滤器。但考虑到主从同步(即数据从一台主服务器复制到多台从服务器)的情况,布隆过滤器落地到磁盘的文件应尽可能小,以节省带宽。
基于此,本申请提供一种用于布隆过滤器的持久化压缩方法,如图1所示,该方法包括:
步骤S101,根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型。
具体地,对于待压缩的布隆过滤器,通过遍历该布隆过滤器获取其内容。布隆过滤器中的内容均由两个值表示,即1和0,这也体现了布隆过滤器的二值特性。本申请中,通过布隆过滤器中包含的1的比例或0的比例确定其类型。具体的确定步骤将在后续实施例中进行详细说明。
步骤S102,根据所述布隆过滤器的类型以及预设的压缩方案映射关系获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式。
本申请分别针对不同类型的布隆过滤器采用不同的压缩方案,压缩方案是由一种或多种压缩方式构成,压缩方式包括但不限于变长字节编码、游程编码、霍夫曼编码等。其中,变长字节编码以字节(即8位)为一个基本存储单元,使用每个字节的第一位来标识是否后续字节仍属于当前的压缩数据数字。游程编码是检测重复的比特或字符序列,并用它们的出现次数取而代之的编码方式。霍夫曼编码是依据字符出现概率来构造异字头的平均长度最短的码字的编码方式。
本实施例中,布隆过滤器的类型和与之对应的压缩方案的确定是通过查询压缩方案映射关系实现的,压缩方案映射关系例如可通过压缩方案映射关系表的方式进行存储,如表1所示:
表1压缩方案映射关系表
布隆过滤器类型 压缩方案
稀疏型 压缩方式A+压缩方式B
普通型 压缩方式C+压缩方式D+压缩方式E
密集型 压缩方式F+压缩方式G
上表1主要用于展示本申请的压缩方案映射关系表的形式,因此未指明其中的压缩方式A-压缩方式G的具体信息,后续实施例会分别提供稀疏型、普通型和密集型布隆过滤器的具体压缩方案。
步骤S103,按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。
本步骤按照步骤S102中确定的压缩方案对布隆过滤器进行持久化压缩,即可得到相应的压缩结果。
本申请利用布隆过滤器的二值特性确定其类型(稀疏、普通、密集),然后采用定制化压缩方法,对于不同类型的布隆过滤器,采用不同的压缩方式进行压缩。相比于现有的直接采用通用压缩方法进行压缩形成二进制文件,本申请降低了布隆过滤器压缩后所占用的存储空间,在主从同步过程中可有效节省带宽。
在一实施例中,关于步骤S101,根据布隆过滤器的内容确定布隆过滤器的类型,本申请给出两种方法。第一种方法包括以下步骤:
获取所述布隆过滤器的内容中包含的1的数量和布隆过滤器的总长度;
根据1的数量在布隆过滤器的总长度中所占的第一比例确定布隆过滤器的类型。
具体地,请参见图2,(1)根据布隆过滤器的内容中包含的“1”的数量和布隆过滤器的总长度确定“1”所占的比例。
(2)判断“1”所占的比例与第一阈值和第二阈值的大小关系;其中,第一阈值和第二阈值均为百分比值,且第一阈值小于第二阈值。
(3)根据“1”所占的比例与第一阈值和第二阈值的大小关系确定布隆过滤器的类型。若“1”所占的比例小于或等于第一阈值,则布隆过滤器为稀疏性;若“1”所占的比例大于第一阈值且小于第二阈值,则布隆过滤器为普通型;若“1”所占的比例大于或等于第二阈值,则布隆过滤器为密集型。
这里举一个具体的例子进行说明:
假设一个长度为20位的布隆过滤器A如下:
0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0
遍历布隆过滤器A的内容,得到其中包含“1”的数量为7;布隆过滤器A的长度为20,因此布隆过滤器A的内容中包含的“1”的数量和布隆过滤器A的总长度确定“1”所占的比例为7÷20=35%。
本实施例假设第一阈值为10%,第二阈值为90%,比较“1”所占的比例与第一阈值和第二阈值的大小关系可知,布隆过滤器A中“1”所占的比例位于第一阈值和第二阈值之间,因此确定布隆过滤器A为一普通型布隆过滤器。
以上示例仅作说明之用,并非用以限定本申请。实际应用中,布隆过滤器的长度可达十几万位、几百万位不等。第一阈值和第二阈值的设置也仅为一种示例。
第二种方法包括以下步骤:
获取所述布隆过滤器的内容中包含的0的数量和布隆过滤器的总长度;
根据0的数量在布隆过滤器的总长度中所占的第二比例确定布隆过滤器的类型。
具体地,请参见图3,(1)根据布隆过滤器的内容中包含的“0”的数量和布隆过滤器的总长度确定“0”所占的比例。
(2)判断“0”所占的比例与第一阈值和第二阈值的大小关系;其中,第一阈值和第二阈值均为百分比值,且第一阈值小于第二阈值。
(3)根据“0”所占的比例与第一阈值和第二阈值的大小关系确定布隆过滤器的类型。若“0”所占的比例小于或等于所述第一阈值,则布隆过滤器为密集型;若“0”所占的比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若“0”所占的比例大于或等于所述第二阈值,则布隆过滤器为稀疏型。
同样地,以一个具体的例子进行说明:
假设一个长度为20位的布隆过滤器B如下:
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0
遍历布隆过滤器B的内容,得到其中包含“0”的数量为18;布隆过滤器B的长度为20,因此布隆过滤器B的内容中包含的“0”的数量和布隆过滤器B的总长度确定“0”所占的比例为18÷20=90%。
同样假设第一阈值为10%,第二阈值为90%,比较“0”所占的比例与第一阈值和第二阈值的大小关系可知,布隆过滤器B中“0”所占的比例等于第二阈值,因此确定布隆过滤器B为一稀疏型布隆过滤器。
在一实施例中,如图4和图7所示,当布隆过滤器为稀疏型或密集型时,步骤S103,按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果,包括:
步骤S1031,对所述布隆过滤器的内容进行减值压缩,得到对应的多个元组。
具体地,以稀疏型布隆过滤器B为例:
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0
首先对布隆过滤器B按位做遍历,具体为:依次从由到左遍历布隆过滤器B,可得到布隆过滤器B的所有内容;
然后记录布隆过滤器B中存储1或0的位置的下标,这里以记录存储1的位置的下标为例:依次从由到左遍历布隆过滤器B,可得到布隆过滤器B中内容等于1的位置的下标分别为2和8;按照预设的下标数组记录格式uint64[num]={s1,s2,…,snum}生成下标数组,下标数组记录格式中,“num”为布隆过滤器中1的个数,“sn”为布隆过滤器中1所在位置的下标,1≤n≤num。因此,布隆过滤器B对应的下标数组可表示为uint64[2]={2,8},其中,“[2]”表示布隆过滤器B中1的个数为“2”,“{2,8}”表示布隆过滤器B中1所在位置的下标分别为2和8。这里需要说明的是,对于一个20位的布隆过滤器,其从右往左20个位置的下标依次为0、1、2……18、19。
然后对下标数组做压缩,其压缩算法具体为依次用下标数组中的每个下标减前x个下标,直到下标差值为正数最小值(即再减就得到负值),得到元组,元组的格式为(x,minValue),其中,“x”为小标数据中某个下标进行的减法的次数,“minValue”为该下标减去前x个下标后得到的正数最小值。对于布隆过滤器B对应的下标数组uint64[2]={2,8},其中的第一个下标“2”之前没有值,因此不需要作减法,进行的减法为0,正数最小值为2;第二个小标“8”减第一个小标“2”,进行一次减法,得到的正数最小值为6。故对布隆过滤器B进行减值压缩得到的多个元组依次为(0,2)、(1,6)。
步骤S1032,对所述多个元组进行变长字节编码,得到所述压缩结果。
步骤S1031中,得到的元组为(0,2)、(1,6),对元组进行变长字节编码,编码规则采用十六进制转换,将第一个元组(0,2)中的“0”编码为“0000”,将“2”编码为“0010”;将第二个元组(1,6)中的“1”编码为“0001”,将“6”编码为“0110”。将以上各个编码结果进行拼接,即可得到布隆过滤器B的压缩结果为0000001000010110。
也即,布隆过滤器B的原内容“00000000000100000100”被压缩成了“0000001000010110”。
在一实施例中,如图5和图7所示,当布隆过滤器为普通型时,步骤S103,按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果,包括:
步骤S1033,对所述布隆过滤器的内容进行游程编码和二值约定,得到对应的二值约定结果。
具体地,以普通型布隆过滤器A为例:
0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0
首先采用游程编码对布隆过滤器A中的连续重复位从右往左进行统计压缩,压缩后的数据格式为m1n0x1y0……,其含义为从右往左依次包括m个1、n个0、x个1、y个0……,由于以上数据格式必然为0和1间隔形成的,因此基于二值性,可做二值约定,形成“mnxy……”的形式。这里的“二值约定”指第一个数字代表的是0的个数或1的个数。
上述布隆过滤器A从右往左依次为5个0、3个1、5个0、4个1和3个0,因此,假设二值约定第一个数字代表的是1的个数,则得到的二值约定结果为个数=(0,5,3,5,4,3);假设二值约定第一个数字代表的是0的个数,则得到的二值约定结果为个数=(5,3,5,4,3)。
步骤S1034,对所述二值约定结果进行霍夫曼编码,得到所述压缩结果。
这里以二值约定第一个数字代表的是1的个数得到的二值约定结果“个数=(0,5,3,5,4,3)”为例继续说明。
霍夫曼编码为带权路径长度最短二叉树编码,首先统计二值约定结果中每个字符出现的次数如表2:
表2二值约定结果的字符统计表
字符 次数
0 1
5 2
3 2
4 1
然后将次数最小的两个次数相加,并分别作为左右子树,重复该过程数次,得到二叉树,并将每个分叉的左边指定为0,右边指定为1,参见图6,图6中“6”代表和为6,“5:2”代表字符“5”在二值约定结果中出现的次数为2次。然后从二叉树顶部到每个字符路径,获得每个符号的编码,即“5”的编码结果为0,“3”的编码结果为10,“4”的编码结果为110,“0”的编码结果为111。按照二值约定结果“个数=(0,5,3,5,4,3)”中的顺序依次将各字符的编码结果进行拼接,即可得到布隆过滤器A的压缩结果为111010011010。
也即,布隆过滤器A的原内容“00011110000011100000”被压缩成了“111010011010”。
通过以上实施例即可确定,本申请的布隆过滤器的持久化压缩方法的整体流程如图7所示:
根据布隆过滤器的内容确定布隆过滤器的类型;
判断布隆过滤器的类型是否为普通型;若是,依次执行步骤S1033和步骤S1034;若否,则依次执行步骤S1031和步骤S1032。
经大量实验证明,利用本申请提供的布隆过滤器的持久化压缩方法对布隆过滤器进行压缩,相比于传统的对被压缩文件采用黑盒压缩的方式而言,其压缩结果所占存储空间有明显降低,在主从同步过程中节省了带宽,提高了效率。
本申请提供的布隆过滤器的持久化压缩方法,针对布隆过滤器的结构(“1”的位置)和类型(稀疏、普通、密集)和二值特性,采用定制化压缩方法,对于不同类型的布隆过滤器,采用不同的压缩方式进行压缩。相比于现有的直接采用通用压缩方法进行压缩形成二进制文件,本申请降低了布隆过滤器压缩后所占用的存储空间。
基于同一发明构思,本申请实施例还提供了一种布隆过滤器的持久化压缩装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于布隆过滤器的持久化压缩装置解决问题的原理与布隆过滤器的持久化压缩方法相似,因此布隆过滤器的持久化压缩装置的实施可以参见布隆过滤器的持久化压缩方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
第二方面,本申请提供一种布隆过滤器的持久化压缩装置,如图8所示,该装置包括:
类型确定模块801,用于根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型;
压缩方案确定模块802,用于根据所述布隆过滤器的类型以及预设的压缩方案映射表获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式;
压缩模块803,用于按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。
在一实施例中,如图9所示,所述类型确定模块801具体包括:
内容统计单元8011,用于获取所述布隆过滤器的内容中包含的0和1的数量;
类型确定单元8012,用于根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型;或根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型。
在一实施例中,所述类型确定单元8012具体用于:
分别判断1的数量在0和1的总数中所占的第一比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第一比例小于或等于所述第一阈值,则布隆过滤器为稀疏性;若所述第一比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第一比例大于或等于所述第二阈值,则布隆过滤器为密集型。
在一实施例中,所述类型确定单元8012还具体用于:
分别判断0的数量在0和1的总数中所占的第二比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第二比例小于或等于所述第一阈值,则布隆过滤器为密集型;若所述第二比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第二比例大于或等于所述第二阈值,则布隆过滤器为稀疏型。
在一实施例中,当布隆过滤器为稀疏型或密集型时,所述压缩模块803具体用于:
对所述布隆过滤器的内容进行减值压缩,得到对应的多个元组;
对所述多个元组进行变长字节编码,得到所述压缩结果。
在一实施例中,当布隆过滤器为普通型时,所述压缩模块803具体用于:
对所述布隆过滤器的内容进行游程编码和二值约定,得到对应的二值约定结果;
对所述二值约定结果进行霍夫曼编码,得到所述压缩结果。
本申请提供的布隆过滤器的持久化压缩装置,针对布隆过滤器的结构(“1”的位置)和类型(稀疏、普通、密集)和二值特性,采用定制化压缩方法,对于不同类型的布隆过滤器,采用不同的压缩方式进行压缩。相比于现有的直接采用通用压缩方法进行压缩形成二进制文件,本申请降低了布隆过滤器压缩后所占用的存储空间。
图10是本申请实施例提供的电子设备的实体结构示意图,如图10所示,电子设备600可以包括:处理器100和存储器140。存储器140耦合到处理器100。处理器100可以调用存储器140中的逻辑指令,以执行上述方法。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法。
如图10所示,电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图10中所示的所有部件;此外,电子设备600还可以包括图10中没有示出的部件,可以参考现有技术。值得注意的是,该图是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
如图10所示,处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且处理器100可执行存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向处理器100提供输入。输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。显示器160例如可为LCD显示器,但并不限于此。
存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,存储器140的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲器141(有时被称为缓冲存储器)。存储器140可以包括应用/功能存储部142,应用/功能存储部142用于存储应用程序和功能程序或用于通过处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110包括经由天线111发送和接收信号的发送机/接收机。通信模块110耦合到处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种布隆过滤器的持久化压缩方法,其特征在于,包括:
根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型;
根据所述布隆过滤器的类型以及预设的压缩方案映射关系获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式;
按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。
2.根据权利要求1所述的布隆过滤器的持久化压缩方法,其特征在于,所述根据布隆过滤器的内容确定布隆过滤器的类型,包括:
获取所述布隆过滤器的内容中包含的0和1的数量;
根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型;或
根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型。
3.根据权利要求2所述的布隆过滤器的持久化压缩方法,其特征在于,所述根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型,包括:
分别判断1的数量在0和1的总数中所占的第一比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第一比例小于或等于所述第一阈值,则布隆过滤器为稀疏性;若所述第一比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第一比例大于或等于所述第二阈值,则布隆过滤器为密集型。
4.根据权利要求2所述的布隆过滤器的持久化压缩方法,其特征在于,所述根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型,包括:
分别判断0的数量在0和1的总数中所占的第二比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第二比例小于或等于所述第一阈值,则布隆过滤器为密集型;若所述第二比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第二比例大于或等于所述第二阈值,则布隆过滤器为稀疏型。
5.根据权利要求1所述的布隆过滤器的持久化压缩方法,其特征在于,当布隆过滤器为稀疏型或密集型时,所述按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果,包括:
对所述布隆过滤器的内容进行减值压缩,得到对应的多个元组;
对所述多个元组进行变长字节编码,得到所述压缩结果。
6.根据权利要求1所述的布隆过滤器的持久化压缩方法,其特征在于,当布隆过滤器为普通型时,所述按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果,包括:
对所述布隆过滤器的内容进行游程编码和二值约定,得到对应的二值约定结果;
对所述二值约定结果进行霍夫曼编码,得到所述压缩结果。
7.一种布隆过滤器的持久化压缩装置,其特征在于,包括:
类型确定模块,用于根据布隆过滤器的内容确定布隆过滤器的类型,所述类型包括稀疏型、普通型和密集型;
压缩方案确定模块,用于根据所述布隆过滤器的类型以及预设的压缩方案映射表获取所述布隆过滤器对应的压缩方案,所述压缩方案中包括至少一种压缩方式;
压缩模块,用于按照所述压缩方式对所述布隆过滤器进行压缩编码,得到压缩结果。
8.根据权利要求7所述的布隆过滤器的持久化压缩装置,其特征在于,所述类型确定模块具体包括:
内容统计单元,用于获取所述布隆过滤器的内容中包含的0和1的数量;
类型确定单元,用于根据1的数量在0和1的总数中所占的第一比例确定布隆过滤器的类型;或根据0的数量在0和1的总数中所占的第二比例确定布隆过滤器的类型。
9.根据权利要求8所述的布隆过滤器的持久化压缩装置,其特征在于,所述类型确定单元具体用于:
分别判断1的数量在0和1的总数中所占的第一比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第一比例小于或等于所述第一阈值,则布隆过滤器为稀疏性;若所述第一比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第一比例大于或等于所述第二阈值,则布隆过滤器为密集型。
10.根据权利要求8所述的布隆过滤器的持久化压缩装置,其特征在于,所述类型确定单元具体用于:
分别判断0的数量在0和1的总数中所占的第二比例与第一阈值和第二阈值的关系,其中,所述第一阈值小于所述第二阈值;
若所述第二比例小于或等于所述第一阈值,则布隆过滤器为密集型;若所述第二比例大于所述第一阈值且小于所述第二阈值,则布隆过滤器为普通型;若所述第二比例大于或等于所述第二阈值,则布隆过滤器为稀疏型。
11.根据权利要求7所述的布隆过滤器的持久化压缩装置,其特征在于,当布隆过滤器为稀疏型或密集型时,所述压缩模块具体用于:
对所述布隆过滤器的内容进行减值压缩,得到对应的多个元组;
对所述多个元组进行变长字节编码,得到所述压缩结果。
12.根据权利要求7所述的布隆过滤器的持久化压缩装置,其特征在于,当布隆过滤器为普通型时,所述压缩模块具体用于:
对所述布隆过滤器的内容进行游程编码和二值约定,得到对应的二值约定结果;
对所述二值约定结果进行霍夫曼编码,得到所述压缩结果。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述布隆过滤器的持久化压缩方法的步骤。
15.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1至6任一项所述布隆过滤器的持久化压缩方法的步骤。
CN202210474279.1A 2022-04-29 2022-04-29 布隆过滤器的持久化压缩方法及装置 Active CN114791904B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210474279.1A CN114791904B (zh) 2022-04-29 2022-04-29 布隆过滤器的持久化压缩方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210474279.1A CN114791904B (zh) 2022-04-29 2022-04-29 布隆过滤器的持久化压缩方法及装置

Publications (2)

Publication Number Publication Date
CN114791904A true CN114791904A (zh) 2022-07-26
CN114791904B CN114791904B (zh) 2024-08-20

Family

ID=82461356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210474279.1A Active CN114791904B (zh) 2022-04-29 2022-04-29 布隆过滤器的持久化压缩方法及装置

Country Status (1)

Country Link
CN (1) CN114791904B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115186155A (zh) * 2022-09-13 2022-10-14 南京百家云科技有限公司 一种数据过滤方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408069A (zh) * 2014-10-30 2015-03-11 浪潮电子信息产业股份有限公司 一种基于布隆过滤器思想的一致性目录设计方法
US9372892B1 (en) * 2015-12-28 2016-06-21 International Business Machines Corporation Bloom filter construction method for use in a table join operation portion of processing a query to a distributed database
US20160179858A1 (en) * 2014-12-18 2016-06-23 International Business Machines Corporation Optimization of metadata via lossy compression
CN108140050A (zh) * 2016-04-25 2018-06-08 华为技术有限公司 一种使用布隆过滤器过滤文件的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408069A (zh) * 2014-10-30 2015-03-11 浪潮电子信息产业股份有限公司 一种基于布隆过滤器思想的一致性目录设计方法
US20160179858A1 (en) * 2014-12-18 2016-06-23 International Business Machines Corporation Optimization of metadata via lossy compression
US9372892B1 (en) * 2015-12-28 2016-06-21 International Business Machines Corporation Bloom filter construction method for use in a table join operation portion of processing a query to a distributed database
CN108140050A (zh) * 2016-04-25 2018-06-08 华为技术有限公司 一种使用布隆过滤器过滤文件的方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115186155A (zh) * 2022-09-13 2022-10-14 南京百家云科技有限公司 一种数据过滤方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN114791904B (zh) 2024-08-20

Similar Documents

Publication Publication Date Title
CN107506153B (zh) 一种数据压缩方法、数据解压方法及相关系统
US11797204B2 (en) Data compression processing method and apparatus, and computer-readable storage medium
US10187081B1 (en) Dictionary preload for data compression
CN107229420B (zh) 数据存储方法、读取方法、删除方法和数据操作系统
CN105191144B (zh) 压缩装置、压缩方法、解压装置、解压方法以及信息处理系统
CN110557124B (zh) 一种数据压缩方法及装置
CN112003625A (zh) 一种霍夫曼编码方法、系统及设备
US10911066B2 (en) Method and system of content based dynamic data compression
CN103020317A (zh) 基于重复数据删除的数据压缩方法和装置
CN106202213B (zh) 一种fpga二进制文件压缩、解压方法及压缩、解压装置
US20090201180A1 (en) Compression for deflate algorithm
CN111857550A (zh) 用于数据去重的方法、设备以及计算机可读介质
US20220005229A1 (en) Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie
CN1675842B (zh) 算术编码的方法、设备以及相应解码方法
CN101667843A (zh) 嵌入式系统的数据压缩、及解压缩方法与装置
CN114791904B (zh) 布隆过滤器的持久化压缩方法及装置
CN104468044A (zh) 应用于网络传输中的数据压缩的方法及装置
CN111723053A (zh) 一种数据的压缩方法及装置、解压方法及装置
CN108880559B (zh) 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备
CN114492322A (zh) 文本压缩方法、模块、芯片、电子设备和存储介质
WO2021103013A1 (zh) 一种数据编码、数据解码方法、设备及存储介质
CN115225724B (zh) 使用分区和无关位消除的数据压缩技术
US9424293B2 (en) Row, table, and index compression
CN103049388B (zh) 一种分页存储器件的压缩管理方法及装置
CN110021349B (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
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Weng Guan

Inventor after: Wang Jingyi

Inventor after: Zhang Guochao

Inventor after: Cai Juan

Inventor after: Li Junjie

Inventor after: Cao Yan

Inventor after: Zhang Jun

Inventor after: Zhang Shufen

Inventor after: Zhang Hepi

Inventor before: Weng Guan

Inventor before: Wang Jingyi

Inventor before: Zhang Guochao

Inventor before: Cai Juan

Inventor before: Li Junjie

Inventor before: Cao Yan

Inventor before: Zhang Jun

Inventor before: Zhang Shufen

Inventor before: Zhang Hepi

GR01 Patent grant
GR01 Patent grant