CN115422142B - 数据压缩方法及装置 - Google Patents
数据压缩方法及装置Info
- Publication number
- CN115422142B CN115422142B CN202211005973.5A CN202211005973A CN115422142B CN 115422142 B CN115422142 B CN 115422142B CN 202211005973 A CN202211005973 A CN 202211005973A CN 115422142 B CN115422142 B CN 115422142B
- Authority
- CN
- China
- Prior art keywords
- group
- array
- data
- element group
- tag
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000013144 data compression Methods 0.000 title claims abstract description 26
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 238000007906 compression Methods 0.000 claims description 10
- 230000006835 compression Effects 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 5
- 238000009966 trimming Methods 0.000 abstract description 20
- 238000001914 filtration Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Abstract
本公开是关于数据压缩方法及装置。该方法包括:获取待压缩数据,待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;将多个元素分为第一元素组和第二元素组,其中,第一元素组中各个元素标签对应的元素值为第一预设值,第二元素组由除去元素值为第一预设值的其他元素组成;获取第一元素组中的各个元素标签形成第一元素标签组;对第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;对第二元素组进行数据整理获取第二整理数组,其中,第二整理数组所占用的存储空间小于第二元素组所占用的存储空间;分别对第一整理数组和第二整理数据进行压缩得到压缩数据。
Description
技术领域
本公开涉及数据存储技术领域,尤其涉及数据压缩方法及装置。
背景技术
各个产品都设置有用于存储产品数据的数据库,如果直接将原始数据直接存入服务器中的数据库中将会占用较多的硬盘空间,这样就会使得服务器的负载非常高,也会严重影响数据库的运行效率。所以对数据进行有效压缩,以提升产品的性能是亟待解决的问题。
发明内容
为克服相关技术中存在的问题,本公开实施例提供数据压缩方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种数据压缩方法,包括:
获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
分别对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据。
本公开的实施例提供的技术方案可以包括以下有益效果:利用数据的特征对数据分成两类,分别用不同的方式处理,并且利用布隆过滤法用bit位代替数字,以及利用gzip压缩数据,通过该方式对海量数据进行压缩,在不影响数据完整性的情况下尽可能的将数据压缩到最小。
在一个实施例中,所述对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组,包括:
检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
在一个实施例中,所述对所述第二元素组进行数据整理获取第二整理数组,包括:
将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
在一个实施例中,所述对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据,包括:
使用gzip算法对所述第一整理数组和所述第二整理数据进行压缩得到所述压缩数据。
在一个实施例中,所述方法还包括:
获取参考数据,所述参考数据和所述待压缩数据的数据格式相同;
获取参考数据对应各个参考数据组,其中,每个所述参考数据组中的数据不相同;
获取各个参考数据组对应的第一参考值和第二参考值,所述第一参考值为采用预设符号隔开所述各个元素所占用的第一存储空间,所述第二参考值为采用所述布隆过滤法进行转换后所占用的第二存储空间;
获取各个所述第一存储空间与所述第二存储空间的差值;
获取所述差值满足预设关系的所述参考数据组中的元素数量为所述预设阈值。
根据本公开实施例的第二方面,提供一种数据压缩装置,包括:
第一获取模块,用于获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
划分模块,用于将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
第二获取模块,用于获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
第一处理模块,用于对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
第二处理模块,用于对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
压缩模块,用于分别对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据。
在一个实施例中,所述第一处理模块,包括:
第一检测子模块,用于检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
第一获取子模块,用于若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
第二获取子模块,用于若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
在一个实施例中,所述第二处理模块,包括:
拆分子模块,用于将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
第三获取子模块,用于将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
第二检测子模块,用于检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
第四获取子模块,用于若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
第五获取子模块,用于若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
在一个实施例中,所述压缩模块,包括:
压缩子模块,用于使用gzip算法对所述第一整理数组和所述第二整理数据进行压缩得到所述压缩数据。
在一个实施例中,所述装置还包括:
第三获取模块,用于获取参考数据,所述参考数据和所述待压缩数据的数据格式相同;
第四获取模块,用于获取参考数据对应各个参考数据组,其中,每个所述参考数据组中的数据不相同;
第五获取模块,用于获取各个参考数据组对应的第一参考值和第二参考值,所述第一参考值为采用预设符号隔开所述各个元素所占用的第一存储空间,所述第二参考值为采用所述布隆过滤法进行转换后所占用的第二存储空间;
第六三获取模块,用于获取各个所述第一存储空间与所述第二存储空间的差值;
第七获取模块,用于获取所述差值满足预设关系的所述参考数据组中的元素数量为所述预设阈值。
根据本公开实施例的第三方面,提供一种数据压缩装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
分别对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现第一方面中任一项所述方法的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的数据压缩方法的流程图。
图2是根据一示例性实施例示出的数据压缩方法中步骤S104的流程图。
图3是根据一示例性实施例示出的数据压缩方法中步骤S105的流程图。
图4是根据一示例性实施例示出的数据压缩方法的流程图。
图5是根据一示例性实施例示出的数据压缩装置的框图。
图6是根据一示例性实施例示出的数据压缩装置中第一处理模块的框图。
图7是根据一示例性实施例示出的数据压缩装置中第二处理模块的框图。
图8是根据一示例性实施例示出的数据压缩装置中压缩模块的框图。
图9是根据一示例性实施例示出的一种用于数据压缩的装置90的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的数据压缩方法的流程图,如图1所示,包括以下步骤S101-S106:
在步骤S101中,获取待压缩数据,待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
例如:待压缩数据可以表示为info,info格式可以表示为:{"1163":1,"971":1,"1335":1,"1037":1,"1257":337,"1321":1000};这个info包括6个元素,每个元素均包括:元素标签key和对应的元素值value,这个info包括的元素分别为:元素1:"1163":1,元素2:"971":146,元素3:"1335":1,元素4:"1037":1,元素5:"1257":337和元素6:"1321":1000。
其中,元素标签可以为一天内接收到的快递电话的数量,那么对应的元素值即为数量,例如:用1163表示一天内接收到的快递电话的数量,那么后面的元素值1表示一天内接收到的快递电话的数量为1。
在一种可实现方式中,key取值[1,2500]的正整数,value取值[1,1000]的正整数,且key不会重复。
在步骤S102中,将多个元素分为第一元素组和第二元素组,其中,第一元素组中各个元素标签对应的元素值为第一预设值,第二元素组由除去元素值为第一预设值的其他元素组成;
本公开中通过value值将多个元素分为第一元素组和第二元素组。
假设第一预设值为1,那么,就可以基于value值将info进行拆分,value值为1的放入第一元素组infoA′中,value值为非1的放入第二元素组infoB中,继续按照上述的例子:
infoA′={"1163":1,"971":1,"1335":1,"1037":1};
infoB={"1257":"337","1321":"1000"}。
在步骤S103中,获取第一元素组中的各个元素标签形成第一元素标签组;
继续按照上述的例子,第一元素组infoA′对应的第一元素标签组infoA为:
infoA=[971,1037,1163,1335]。
在步骤S104中,对第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
由于第一元素标签组中的各个元素标签的value均为第一预设值,因此,可以采用用布隆过滤法。
继续按照上述的例子,由于infoA的value均为1,可以采用布隆过滤法,bit位表示,长度为key中的最大值;将每个key对应的bit位数置为1,其余为0。
再例如:infoA=[1,5,7],则第一整理数组为:1000101。
其中,本公开使用的布隆过滤法与相关技术中相同,此处不再赘述。
在一个实施例中,如图2所示,上述步骤S104包括以下子步骤S1041-S1043:
在步骤S1041中,检测第一元素组中包括的元素标签的总数是否达到预设阈值;
其中,预设阈值的获取方法在以下实施例中详细介绍。
在步骤S1042中,若达到,则使用布隆过滤法对第一元素标签组中的各个元素标签进行转换得到第一整理数组;
在步骤S1043中,若未达到,则用预设符号隔开每个元素标签得到第一整理数组。
以预设阈值为120为例:检测第一元素组中包括的元素标签的总数是否达到120,如果达到,则得到的第一整理数组为:1000101,如果未达到,则得到的第一整理数组为:[1,5,7]。
在一个实施例中,上述方法还包括以下子步骤:
A1、获取参考数据,参考数据和待压缩数据的数据格式相同;
A2、获取参考数据对应各个参考数据组,其中,每个参考数据组中的数据不相同;
A3、获取各个参考数据组对应的第一参考值和第二参考值,第一参考值为采用预设符号隔开各个元素所占用的第一存储空间,第二参考值为采用布隆过滤法进行转换后所占用的第二存储空间;
A4、获取各个第一存储空间与第二存储空间的差值;
A5、获取差值满足预设关系的参考数据组中的元素数量为预设阈值。
由于布隆过滤法会存在出现大片0的极端情况,例如:{"2310":1,"2311":5},在该种情况下:数据key会占用2310个bit,一共需要占用288个Byte,如果用预设符号隔开key:2310,2311,只需要占用72个Byte,所以还需考虑定一个预设阈值X,如果:
元素数<=X:用预设符号隔开key存储;
元素数>X:用布隆过滤法存储。
具体的,可以获取一些参考数据,例如参考数据为{"1335":1,"1037":1,"1257":337},然后获取参考数据对应各个参考数据组,{"1335":1}、{"1037":1}、{"1257":337}、{"1335":1,"1037":1}、{"1037":1,"1257":337}和{"1335":1,"1037":1,"1257":337},然后对{"1335":1}计算采用逗号隔开各个元素所占用的第一存储空间,以及采用布隆过滤法进行转换后所占用的第二存储空间,并计算得到第一存储空间与第二存储空间的差值,依次计算其他几个参考数据组的第一存储空间与第二存储空间的差值,将差值满足预设区间的参考数据组中的元素数量确定为预设阈值。
例如:拿出180万数据条参考数据。分别计算元素数、p1大小、p2大小,然后计算出元素数量和p1,p2大小差值的趋势,发现:
127个元素数量以上,p1恒比p2效果差,且元素数量越大,差距越大;
107-127个元素数量之间没有明显的效果差别;
107个元素数量以下,p2恒比p1效果差,且元素数量越大,差距越大;
所以预设阈值定为107-127中间的数值即可,例如:可以为:120。
在步骤S105中,对第二元素组进行数据整理获取第二整理数组,其中,第二整理数组所占用的存储空间小于第二元素组所占用的存储空间;
在一个实施例中,如图3所示,上述步骤S105还包括以下子步骤S1051-S1055:
在步骤S1051中,将第二元素组拆分为第一子元素组和第二子元素组,第一子元素组由第二元素组中的各个元素标签组成,第二子元素组由第二元素组中的各个元素值组成;
将第二元素组拆分为第一子元素组infoBKey和第二子元素组infoBValue′。
在步骤S1052中,将第二子元素组中的各个数值转换为高进制数,并用预设符号隔开每个高进制数得到高进制数组;
考虑到64进制两个字符可以表示4096以内的所有正整数,四个字符的key会缩减成两个字符,则将第二子元素组中的各个数值转换为高进制数也可以有效减少存储空间,在本公开中,在将第二子元素组中的各个数值转换为高进制数后,还可以使用预设符号(例如:逗号)隔开每个高进制数得到高进制数组infoBValue。
例如:第二子元素组中的各个数值为十进制,则可以将第二子元素组中的各个数值转换为64进制。
在步骤S1053中,检测第一子元素组中包括的元素标签的总数是否达到预设阈值;
在步骤S1054中,若达到,则使用布隆过滤法对第一子元素组中的各个元素标签进行转换得到第一转化元素组;
infoBKey:用bit位表示,长度为key中的最大值;将每个key对应的bit位数置为1,其余为0。
在步骤S1055中,若未达到,则用预设符号隔开每个元素标签得到第二元素标签组;
其中,第二整理数组包括:高进制数组和第一转化元素组,或者,高进制数组和第二元素标签组。
例如:infoB={"1":"5H","3":"F3","7":"12"};
处理之后infoBKey=1010001;
处理之后infoBValue="5H,F3,12"。
在步骤S106中,分别对第一整理数组和第二整理数据进行压缩得到压缩数据。
可以使用gzip算法对第一整理数组和第二整理数据进行压缩得到压缩数据。
具体的,可以使用java的GZIPOutputStream方法分别对infoA、infoBKey、infoBValue进行压缩,将压缩之后的二进制存入数据库即可。
本公开中,利用数据的特征对数据分成两类,分别用不同的方式处理,并且利用布隆过滤法用bit位代替数字,以及利用gzip压缩数据,通过该方式对海量数据进行压缩,在不影响数据完整性的情况下尽可能的将数据压缩到最小。
进一步的,本公开中还利用六十四进制来代表十进制,进而减少数据大小,而预设阈值方案有效避免布隆过滤法的弊端。
本公开的算法可以将12TB的数据压缩到1.1TB,达到了90%的压缩率。极大的节约了服务器资源占用。
以下通过详细实施例介绍本公开的方法,如图4所示:
1、输入数据;数据包括(key,value),其中,key可以称之为键与上述实施例中的元素标签对应,value可以称之为值与上述实施例中的元素值对应;
2、将数据按照值value拆分为两种,1.值为一,2.值不为一;
对值为一的数据按照下述方法处理:
3、由于值均为一,所以只保留键即可,检测键的数量是否超过120,如果超过,则使用布隆过滤法将数字类型的键转换成bit位标识,放入infoA中,如果没有超过,则用逗号隔开每个键,放入infoA中;
对值不为一的数据按照下述方法处理:
4、将数据的键和值拆分;
对键按照下述方法处理:
5、检测键的数量是否超过120,如果超过,则使用布隆过滤法将数字类型的键转换成bit位标识,放入infoBKey中,如果没有超过,则用逗号隔开每个键,放入infoBKey中;
对值按照下述方法处理:
6、将值从十进制转换成六十四进制,然后用逗号隔开每个值,放入infoBValue中;
7、使用Gzip压缩之后存入数据库。
本公开中:
1.利用数据的特征对数据分成两类,分别用不同的方式处理,可以有效的减少数据大小;
2.利用六十四进制来代表十进制,进而减少数据大小;
3.利用布隆过滤法用bit位代替数字;
4.利用阈值方案有效避免布隆过滤法的弊端;
5.利用gzip压缩数据,可以进一步的减少数据大小。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图5是根据一示例性实施例示出的一种数据压缩装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图5所示,该数据压缩装置包括:
第一获取模块11,用于获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
划分模块12,用于将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
第二获取模块13,用于获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
第一处理模块14,用于对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
第二处理模块15,用于对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
压缩模块16,用于分别对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据。
在一个实施例中,如图6所示,所述第一处理模块14,包括:
第一检测子模块141,用于检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
第一获取子模块142,用于若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
第二获取子模块143,用于若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
在一个实施例中,如图7所示,所述第二处理模块15,包括:
拆分子模块151,用于将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
第三获取子模块152,用于将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
第二检测子模块153,用于检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
第四获取子模块154,用于若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
第五获取子模块155,用于若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
在一个实施例中,如图8所示,所述压缩模块16,包括:
压缩子模块161,用于使用gzip算法对所述第一整理数组和所述第二整理数据进行压缩得到所述压缩数据。
在一个实施例中,所述装置还包括:
第三获取模块,用于获取参考数据,所述参考数据和所述待压缩数据的数据格式相同;
第四获取模块,用于获取参考数据对应各个参考数据组,其中,每个所述参考数据组中的数据不相同;
第五获取模块,用于获取各个参考数据组对应的第一参考值和第二参考值,所述第一参考值为采用预设符号隔开所述各个元素所占用的第一存储空间,所述第二参考值为采用所述布隆过滤法进行转换后所占用的第二存储空间;
第六三获取模块,用于获取各个所述第一存储空间与所述第二存储空间的差值;
第七获取模块,用于获取所述差值满足预设关系的所述参考数据组中的元素数量为所述预设阈值。
根据本公开实施例的第三方面,提供一种数据压缩装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
分别对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据。
上述处理器还可被配置为:
所述对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组,包括:
检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
在一个实施例中,所述对所述第二元素组进行数据整理获取第二整理数组,包括:
将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
在一个实施例中,所述对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据,包括:
使用gzip算法对所述第一整理数组和所述第二整理数据进行压缩得到所述压缩数据。
在一个实施例中,所述处理器还被配置为:
获取参考数据,所述参考数据和所述待压缩数据的数据格式相同;
获取参考数据对应各个参考数据组,其中,每个所述参考数据组中的数据不相同;
获取各个参考数据组对应的第一参考值和第二参考值,所述第一参考值为采用预设符号隔开所述各个元素所占用的第一存储空间,所述第二参考值为采用所述布隆过滤法进行转换后所占用的第二存储空间;
获取各个所述第一存储空间与所述第二存储空间的差值;
获取所述差值满足预设关系的所述参考数据组中的元素数量为所述预设阈值。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种用于数据压缩的装置90的框图。例如,装置90可以被提供为一服务器。装置90包括处理组件902,其进一步包括一个或多个处理器,以及由存储器903所代表的存储器资源,用于存储可由处理组件902的执行的指令,例如应用程序。存储器903中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件902被配置为执行指令,以执行上述方法。
装置90还可以包括一个电源组件906被配置为执行装置90的电源管理,一个有线或无线网络接口905被配置为将装置90连接到网络,和一个输入输出(I/O)接口908。装置90可以操作基于存储在存储器903的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置90的处理器执行时,使得装置90能够执行上述的数据压缩方法,所述方法包括:
获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
分别对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据。
在一个实施例中,所述对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组,包括:
检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
在一个实施例中,所述对所述第二元素组进行数据整理获取第二整理数组,包括:
将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
在一个实施例中,所述对所述第一整理数组和所述第二整理数据进行压缩得到压缩数据,包括:
使用gzip算法对所述第一整理数组和所述第二整理数据进行压缩得到所述压缩数据。
在一个实施例中,所述方法还包括:
获取参考数据,所述参考数据和所述待压缩数据的数据格式相同;
获取参考数据对应各个参考数据组,其中,每个所述参考数据组中的数据不相同;
获取各个参考数据组对应的第一参考值和第二参考值,所述第一参考值为采用预设符号隔开所述各个元素所占用的第一存储空间,所述第二参考值为采用所述布隆过滤法进行转换后所占用的第二存储空间;
获取各个所述第一存储空间与所述第二存储空间的差值;
获取所述差值满足预设关系的所述参考数据组中的元素数量为所述预设阈值。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据压缩方法,其特征在于,包括:
获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
分别对所述第一整理数组和所述第二整理数组进行压缩得到压缩数据。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组,包括:
检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
3.根据权利要求2所述的方法,其特征在于,所述对所述第二元素组进行数据整理获取第二整理数组,包括:
将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
4.根据权利要求1所述的方法,其特征在于,所述对所述第一整理数组和所述第二整理数组进行压缩得到压缩数据,包括:
使用gzip算法对所述第一整理数组和所述第二整理数组进行压缩得到所述压缩数据。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述方法还包括:
获取参考数据,所述参考数据和所述待压缩数据的数据格式相同;
获取参考数据对应各个参考数据组,其中,每个所述参考数据组中的数据不相同;
获取各个参考数据组对应的第一参考值和第二参考值,所述第一参考值为采用所述预设符号隔开所述各个元素所占用的第一存储空间,所述第二参考值为采用所述布隆过滤法进行转换后所占用的第二存储空间;
获取各个所述第一存储空间与所述第二存储空间的差值;
获取所述差值满足预设关系的所述参考数据组中的元素数量为所述预设阈值。
6.一种数据压缩装置,其特征在于,包括:
第一获取模块,用于获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
划分模块,用于将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
第二获取模块,用于获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
第一处理模块,用于对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
第二处理模块,用于对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
压缩模块,用于分别对所述第一整理数组和所述第二整理数组进行压缩得到压缩数据。
7.根据权利要求6所述的装置,其特征在于,所述第一处理模块,包括:
第一检测子模块,用于检测所述第一元素组中包括的所述元素标签的总数是否达到预设阈值;
第一获取子模块,用于若达到,则使用布隆过滤法对所述第一元素标签组中的各个所述元素标签进行转换得到所述第一整理数组;
第二获取子模块,用于若未达到,则用预设符号隔开每个所述元素标签得到所述第一整理数组。
8.根据权利要求7所述的装置,其特征在于,所述第二处理模块,包括:
拆分子模块,用于将所述第二元素组拆分为第一子元素组和第二子元素组,所述第一子元素组由所述第二元素组中的各个所述元素标签组成,所述第二子元素组由所述第二元素组中的各个所述元素值组成;
第三获取子模块,用于将所述第二子元素组中的各个数值转换为高进制数,并用所述预设符号隔开每个所述高进制数得到高进制数组;
第二检测子模块,用于检测所述第一子元素组中包括的所述元素标签的总数是否达到所述预设阈值;
第四获取子模块,用于若达到,则使用所述布隆过滤法对所述第一子元素组中的各个所述元素标签进行转换得到第一转化元素组;
第五获取子模块,用于若未达到,则用所述预设符号隔开每个所述元素标签得到第二元素标签组;
其中,所述第二整理数组包括:所述高进制数组和所述第一转化元素组,或者,所述高进制数组和所述第二元素标签组。
9.一种数据压缩装置,其特征在于,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取待压缩数据,所述待压缩数据中包括多个元素,每个元素包括:元素标签和对应的元素值;
将所述多个元素分为第一元素组和第二元素组,其中,所述第一元素组中各个元素标签对应的元素值为第一预设值,所述第二元素组由除去所述元素值为第一预设值的其他元素组成;
获取所述第一元素组中的各个所述元素标签形成第一元素标签组;
对所述第一元素标签组中的各个元素标签使用布隆过滤法得到第一整理数组;
对所述第二元素组进行数据整理获取第二整理数组,其中,所述第二整理数组所占用的存储空间小于所述第二元素组所占用的存储空间;
分别对所述第一整理数组和所述第二整理数组进行压缩得到压缩数据。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1至5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211005973.5A CN115422142B (zh) | 2022-08-22 | 数据压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211005973.5A CN115422142B (zh) | 2022-08-22 | 数据压缩方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115422142A CN115422142A (zh) | 2022-12-02 |
CN115422142B true CN115422142B (zh) | 2024-07-09 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103458242A (zh) * | 2013-07-02 | 2013-12-18 | 北京京北方信息技术有限公司 | 基于颜色分类与聚类的图像压缩和解压缩方法 |
CN107967219A (zh) * | 2017-11-27 | 2018-04-27 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103458242A (zh) * | 2013-07-02 | 2013-12-18 | 北京京北方信息技术有限公司 | 基于颜色分类与聚类的图像压缩和解压缩方法 |
CN107967219A (zh) * | 2017-11-27 | 2018-04-27 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106549673B (zh) | 一种数据压缩方法及装置 | |
CN112328567B (zh) | 一种物联网mme日志数据的处理方法及装置 | |
EP3035209A1 (en) | Method and apparatus for deriving a perceptual hash value from an image | |
CN103067713B (zh) | 一种位图jpeg压缩检测的方法及系统 | |
CN112653928B (zh) | 一种基于内容相同的视频过滤方法、系统及设备 | |
WO2020000486A1 (zh) | 数据处理方法及装置 | |
CN115422142B (zh) | 数据压缩方法及装置 | |
CN114637870B (zh) | 一种图像数据处理方法、装置、设备及存储介质 | |
US8275198B2 (en) | Image processing apparatus, image processing method and computer readable medium with compression processing for each color | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
CN115422142A (zh) | 数据压缩方法及装置 | |
CN112153388A (zh) | 一种图像压缩方法、装置及相关设备 | |
CN110096478B (zh) | 文档索引生成方法及设备 | |
CN109145879B (zh) | 一种打印字体识别的方法、设备及存储介质 | |
WO2022179355A1 (zh) | 样点自适应补偿的边带补偿模式的数据处理方法、装置 | |
CN115603758A (zh) | 一种客户号压缩和解压方法及装置 | |
CN107341255B (zh) | 键值数据处理方法、装置及电子设备 | |
CN114281761A (zh) | 一种数据文件加载方法、装置、计算机设备及存储介质 | |
CA3144052A1 (en) | Method and apparatus for recognizing new sql statements in database audit systems | |
CN112054805A (zh) | 一种模型数据压缩方法、系统及相关设备 | |
US8213713B2 (en) | Image processing apparatus and computer readable medium | |
CN114327264B (zh) | 一种时序数据压缩方法、装置及设备 | |
CN110957016A (zh) | 基于健康云管理平台的体检数据智能识别系统及方法 | |
CN117592951B (zh) | 一种基于张量的多维印章数据处理方法 | |
CN112070178B (zh) | 图像序列样本集的确定方法、装置以及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |