一种基于效果优选的组合数据压缩算法
【专利摘要】本发明涉及一种基于效果优选的组合数据压缩算法,包括:根据待压缩数据类型、主要特征和/或时间限制因素选取多种压缩算法,构成压缩算法集,获取多种压缩算法对应的解压算法的平均解压速度Di;分析待压缩数据需求,将其分成多个数据块,获取计算机系统的公共参数;计算每个数据块使用多种压缩算法的压缩效果值;比较多种压缩算法的压缩效果值,选取压缩效果值最小的算法作为最优算法;根据每个数据块对应的最优算法进行数据压缩计算。本发明基于效果优选的组合压缩算法融合了多种压缩算法的优点,同时考虑了数据读取速度和磁盘空间资源的影响,能够最大化的提高数据压缩效果,并提高数据实际读取的性能。
【专利说明】一种基于效果优选的组合数据压缩算法
【技术领域】
[0001]本发明涉及计算机算法【技术领域】,尤其涉及一种基于效果优选的组合数据压缩算法。
【背景技术】
[0002]目前,程序算法原理存在差异性,不同的压缩算法对同一类型数据的压缩效果并不相同,同理,相同的压缩算法对于不同类型数据的压缩效果也不相同。由于具体数据特征的不可预知,导致任何单一数据压缩算法都无法达到最优压缩效果。针对不同数据类型的压缩,如何才能达到理想的压缩效果,是目前人们一直研究和探讨的热点问题。
[0003]我们实验统计的数据表明,基于特征值的组合压缩算法会使得15%左右的数据选择的压缩算法不能达到最优压缩效果,其压缩效果大约在最优压缩效果的40%?80%之间。因此,就总体数据而言,基于特征值的组合压缩算法存在15% *(1-60%) =6%的优化空间。
[0004]在压缩和解压的次数差别不大的场景下,上述的6%的优化空间的优化价值并不大,而在解压次数远大于压缩次数的场景中,如分析型数据库,牺牲一定的压缩性能,从而提高上述6%的压缩效果,能够在多次解压过程中,极大的提高整体的解压读取性能。
[0005]本发明针对基于特征值的组合压缩算法存在的优化空间,提出了基于效果优选的组合压缩算法,本算法通过对实际压缩结果的对比,从备选压缩算法选择最优压缩算法,能最大限度的提高数据的实际压缩效果。
【发明内容】
[0006]本发明所要解决的技术问题是如何解决目前基于特征值的压缩算法存在部分数据无法达到压缩最优化的关键问题。
[0007]为此目的,本发明提出了一种基于效果优选的组合数据压缩算法,包括以下具体步骤:
[0008]S1:根据待压缩数据类型、主要特征和/或时间限制因素选取多种压缩算法,构成压缩算法集,以及
[0009]获取所述多种压缩算法对应的解压算法的平均解压速度Di ;
[0010]S2:分析所述待压缩数据需求,将其分成多个数据块,以及
[0011]获取所述计算机系统的公共参数;
[0012]S3:计算所述每个数据块使用所述多种压缩算法的压缩效果值;
[0013]S4:比较所述多种压缩算法的所述压缩效果值,选取压缩效果值最小的算法作为最优算法;
[0014]S5:根据所述每个数据块对应的所述最优算法进行数据压缩计算。
[0015]进一步地,所述步骤S3还包括:
[0016]S31:对于所述多个数据块,预设数据大小为C。;
[0017]S32:遍历所述压缩算法集其中的所述多种压缩算法对所述每个数据块进行压缩计算,并统计压缩结果的大小CRitl
[0018]进一步地,所述步骤S3还包括:
[0019]S31’:计算得到所述多种压缩算法对于所述每个数据块的压缩结果的总读取时间Ti;
[0020]S32’:计算所述每个数据块中的数据不进行压缩时的读取总时间Ttl以及压缩效果值。
[0021]具体地,通过公式:
[0022]Ti = (CRiZDi) +(CRiA)
[0023]计算得到所述多种压缩算法对于所述每个数据块的压缩结果的总读取时间Ti,其中,所述压缩结果的大小CRi,所述多种压缩算法中的每种算法的平均解压速率为Di,平均I/O的读取速度为V。
[0024]具体地,通过公式:
[0025]T0 = C0/V
[0026]计算得到所述多种压缩算法对于所述每个数据块中的数据不进行压缩时的读取总时间I;。
[0027]具体地,通过公式:
[0028]CEV0 = (T0/T0) +C0*DSR = 1+C0*DSR
[0029]计算得到所述多种压缩算法对于所述每个数据块中的数据不进行压缩时的压缩效果值,其中,所述预设数据大小为Ctl,磁盘敏感系数为DSR。
[0030]进一步地,所述步骤S3还包括:
[0031]通过公式:
[0032]CEVi = (TiZT0) +CRi^DSR
[0033]计算所述每个数据块使用所述多种压缩算法的压缩效果值,其中,计算得到所述多种压缩算法对于所述每个数据块的压缩结果的总读取时间Ti,计算所述每个数据块中的数据不进行压缩时的读取总时间Ttl,所述压缩结果的大小CRi,所述磁盘敏感系数为DSR。
[0034]进一步地,所述步骤S5之后还包括:记录所述每个数据块压缩结果,以及所述最优算法息O
[0035]本发明公开了一种基于效果优选的组合数据压缩算法,基于效果的组合压缩算法融合了多种压缩算法的优点,同时考虑了数据读取速度和磁盘空间资源的影响,能够最大化的提高数据压缩效果,并能提高数据实际读取的性能;进一步地,组合压缩算法结合了LZ4、哈夫曼算法、gzip压缩三种压缩算法的优点,能够最大化的提高数据压缩效果,从而有效的提高数据的读取性能。
【专利附图】
【附图说明】
[0036]通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
[0037]图1示出了本发明实施例中的一种基于效果优选的组合数据压缩算法的步骤流程图;
[0038]图2示出了本发明另一实施例中的一种基于效果优选的组合数据压缩算法的步骤流程图。
【具体实施方式】
[0039]首先对以下名词进行详细解释:1)压缩算法集:多种压缩算法组成的集合,根据不同的数据特点、场景等,可以选择不同的压缩算法构成压缩算法集;2)平均解压速率:使用压缩算法对应的解压算法执行解压操作时,单位时间内能够处理的压缩数据的平均数据量;DSR(Disk Sensitivity Rat1,磁盘敏感系数):一定数量的数据在磁盘进行存储时的敏感系数,该系数的值为TDV (Total Disk Volume:磁盘总容量)的倒数与ES (ExpertScore:专家打分)的积:DSR = ES/TDV。其中,TDV是系统硬件的参数,ES是由专家对应用场景及系统进行综合评价后给出的打分。DSR越小,表示对于系数越不敏感。极端情况下,当磁盘无穷大时,DSR为O ;4) CEV(Compress Effect Value:压缩效果值)通过计算得出的评价压缩效果的数值,单位为I。下面将结合附图对本发明的实施例进行详细描述。
[0040]如图1所示,本发明提供了一种基于效果优选的组合数据压缩算法,包括以下具体步骤:
[0041]步骤S1:根据待压缩数据类型、主要特征和/或时间限制因素选取多种压缩算法,构成压缩算法集,以及获取多种压缩算法对应的解压算法的平均解压速度Dp
[0042]步骤S2:分析待压缩数据需求,将待压缩数据分成多个数据块,以及获取计算机系统的公共参数。
[0043]步骤S3:计算每个数据块使用多种压缩算法的压缩效果值。
[0044]具体地,步骤S3还包括:
[0045]步骤S31:对于多个数据块,预设数据大小为C。。
[0046]步骤S32:遍历压缩算法集其中的多种压缩算法对每个数据块进行压缩计算,并统计压缩结果的大小CR”
[0047]进一步地,步骤S3还包括:
[0048]步骤S31’:计算得到多种压缩算法对于多个数据块的压缩结果的总读取时间凡。
[0049]步骤S32’:计算多个数据块中的数据不进行压缩时的读取总时间Ttl以及压缩效果值。
[0050]具体地,通过公式=Ti= (CRiZDi) +(CRiA)
[0051]计算得到多种压缩算法对于每个数据块的压缩结果的总读取时间Ti,其中,压缩结果的大小CRi,多种压缩算法中的每种算法的平均解压速率为Di,平均1/0的读取速度为V。
[0052]进一步地,通过公式:Ttl = CQ/V
[0053]计算得到多种压缩算法对于每个数据块中的数据不进行压缩时的读取总时间I;。
[0054]更进一步地,通过公式:
[0055]CEV0 = (T0/T0) +C0*DSR = 1+C0*DSR
[0056]计算得到多种压缩算法对于每个数据块中的数据不进行压缩时的压缩效果值,其中,预设数据大小为Ctl,磁盘敏感系数为DSR。
[0057]更进一步地,由于数据压缩的最终目的是为了能够更快的读取可用的数据,当数据不进行压缩时,虽然数据量比压缩后数据更大,但是读取时不需要解压,存在着总读取时间更小的可能,即在选择压缩算法时,需要将不压缩数据的数据总读取时间加入参考备选算法中。
[0058]具体地,通过公式:
[0059]CEVi = (TiZT0) +CRi^DSR
[0060]计算每个数据块使用多种压缩算法的压缩效果值,其中,计算得到多种压缩算法对于每个数据块的压缩结果的总读取时间Ti,计算每个数据块中的数据不进行压缩时的读取总时间Ttl,压缩结果的大小CRi,磁盘敏感系数为DSR。
[0061]进一步地,数据读取的时间包括从磁盘读取压缩后数据的时间以及对数据进行解压的时间。
[0062]步骤S4:比较多种压缩算法的压缩效果值,选取压缩效果值最小的算法作为最优算法。
[0063]步骤S5:根据每个数据块对应的最优算法进行数据压缩计算。
[0064]进一步地,步骤S5之后还包括:记录每个数据块压缩结果,以及所述最优算法信息,从而在解压本算法压缩的数据时,解压算法能够使用对应的算法进行解压,有效、准确的得到解压数据。
[0065]为了更好地理解与应用本发明提出的一种基于效果优选的组合数据压缩算法,结合图2对本发明进行以下示例,本发明不仅局限以下示例。
[0066]具体地,以列存数据库中常用的大表数据为例,一张通信公司详细的单表数据中,按照数据特点划分成三类数据:以交易时间为代表的大量重复有序数据、以用户区域为代表的大量重复无序数据和以交易费用(即精确到分)为代表的较少重复无序数据。
[0067]在常用的压缩编码模型中,属于字典模型的游程编码与原始数据的排列次序关系密切,而与其出现频率无关;属于统计模型的霍夫曼编码与原始数据出现频率关系密切,而与其排列次序无关。因此,以交易时间为代表的有序数据的特点,选择LZ4算法;根据用户区域为代表的基数较小数据的特点,选择哈夫曼算法;依据交易费用(即精确到分)为代表的较少重复无序数据的特点,选择综合两种算法特点的gzip算法。因此,在此示例中,压缩算法集由LZ4算法、哈夫曼算法、gzip算法三种构成。
[0068]进一步地,大量重复有序数据使用游程编码的LZ4压缩算法,此算法使用游程编码来实现,这种算法用数字描述数据重复的次数,当数据大量有序重复时,这种算法具有极高的压缩率,能够将所有数据压缩到一个适合存储的基本数据单元中,因此所有待压缩数据只需要分成I个数据块即可。大量重复无序的数据选择使用哈夫曼算法,当基数值较大时,这种算法需要使用较多空间存储所有的基数。因此,优化组合压缩算法只有适当减少单次压缩的数据总量,才能将数据压缩结果保存到适合存储的数据单元内,从而实现最优的压缩效果。本示例中数据库大表中待压缩数据需要分成10?20个数据块左右。对于较少重复无序的数据选择使用gzip算法,由于其平均压缩比小于其他两种类型数据使用的算法。因此,本示例中的单表需要将全部数据分成50?100个数据块左右,才能保证压缩结果能够存储在基本数据单元中。
[0069]具体地,首先使用LZ4算法对数据块进行压缩计算,得到压缩后数据的大小CR1,然后使用哈夫曼算法对数据块进行压缩计算,得到压缩后数据的大小CR2,最后使用gzip压缩算法对数据块进行压缩计算,得到压缩后的数据大小cr3。
[0070]进一步地,分别获取LZ4算法、哈夫曼算法、gzip算法的平均解压速率DpD2、D3以及平均I/O读取速度V,并结合上述操作中得到的三种算法的压缩后的数据大小CRp CR2,CR3,计算得到三种算法对于该数据块的压缩结果的总读取时间!\、T2、Τ3。
[0071]更进一步地,分别计算得到LZ4算法、哈夫曼算法、gzip算法的CEVp CEV2, CEV3。其中,压缩算法集包括LZ4、哈夫曼算法、gzip压缩三种算法以及不压缩的CEV,即压缩效果值分别为CEVp CEV2, CEV3> CEV00从中选取最小值,假定为CEV2,其对应的算法即哈夫曼算法就是该数据块的最优算法。保存上述操作过程中哈夫曼算法计算得到的压缩结果作为该数据块的压缩结果。
[0072]更进一步地,记录数据块压缩结果的同时,需要记录下该数据块使用的是哈夫曼压缩算法,这样才能在解压时使用正确的解压算法。
[0073]本发明公开了一种基于效果优选的组合数据压缩算法,基于效果的组合压缩算法融合了多种压缩算法的优点,同时考虑了数据读取速度和磁盘空间资源的影响,能够最大化的提高数据压缩效果的同时,提高数据实际读取的性能;进一步地,组合压缩算法结合了LZ4、哈夫曼算法、gzip压缩三种压缩算法的优点,能够最大化的提高数据压缩效果,从而有效的提高数据的读取性能;更进一步地,虽然加载时,该组合算法对数据分别使用LZ4、哈夫曼算法、gzip压缩三种压缩算法进行压缩计算,降低了数据加载性能,但是大大提高数据读取性能,对于一次加载多次读取的使用场景,例如,大数据查询分析等其在数据的多次读取中,读取性能的提升远远大于加载性能的降低,从而为这类场景提供高效的数据压缩算法。
[0074]虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
【权利要求】
1.一种基于效果优选的组合数据压缩算法,其特征在于,包括以下具体步骤: S1:根据待压缩数据类型、主要特征和/或时间限制因素选取多种压缩算法,构成压缩算法集,以及 获取所述多种压缩算法对应的解压算法的平均解压速度Di ; 52:分析所述待压缩数据需求,将其分成多个数据块,以及 获取所述计算机系统的公共参数; 53:计算所述每个数据块使用所述多种压缩算法的压缩效果值; S4:比较所述多种压缩算法的所述压缩效果值,选取压缩效果值最小的算法作为最优算法; S5:根据所述每个数据块对应的所述最优算法进行数据压缩计算。
2.如权利要求1所述的一种基于效果优选的组合数据压缩算法,其特征在于,所述步骤S3还包括: 531:对于所述多个数据块,预设数据大小为Ctl ; 532:遍历所述压缩算法集其中的所述多种压缩算法对所述每个数据块进行压缩计算,并统计压缩结果的大小CRitl
3.如权利要求1所述的一种基于效果优选的组合数据压缩算法,其特征在于,所述步骤S3还包括: S31’:计算得到所述多种压缩算法对于所述每个数据块的压缩结果的总读取时间Ti ; S32’:计算所述每个数据块中的数据不进行压缩时的读取总时间Ttl以及压缩效果值。
4.如权利要求3所述的一种基于效果优选的组合数据压缩算法,其特征在于,通过公式:
Ti = (CRiZDi)+ (CRiA) 计算得到所述多种压缩算法对于所述每个数据块的压缩结果的总读取时间Ti,其中,所述压缩结果的大小CRi,所述多种压缩算法中的每种算法的平均解压速率为Di,平均I/O的读取速度为V。
5.如权利要求3所述的一种基于效果优选的组合数据压缩算法,其特征在于,通过公式:
T0 = C0/V 计算得到所述多种压缩算法对于所述每个数据块中的数据不进行压缩时的读取总时间V
6.如权利要求3或5所述的一种基于效果优选的组合数据压缩算法,其特征在于,通过公式:
CEV0 = (T0/T0) +C0*DSR = I+C0^DSR 计算得到所述多种压缩算法对于所述每个数据块中的数据不进行压缩时的压缩效果值,其中,所述预设数据大小为Ctl,磁盘敏感系数为DSR。
7.如权利要求1所述的一种基于效果优选的组合数据压缩算法,其特征在于,所述步骤S3还包括: 通过公式:
CEVi = (TiZT0) +CRjDSR 计算所述每个数据块使用所述多种压缩算法的压缩效果值,其中,计算得到所述多种压缩算法对于所述每个数据块的压缩结果的总读取时间Ti,计算所述每个数据块中的数据不进行压缩时的读取总时间Ttl,所述压缩结果的大小CRi,所述磁盘敏感系数为DSR。
8.如权利要求1所述的一种基于效果优选的组合数据压缩算法,其特征在于,所述步骤S5之后还包括:记录所述每个数据块压缩结果,以及所述最优算法信息。
【文档编号】H03M7/30GK104348490SQ201410647747
【公开日】2015年2月11日 申请日期:2014年11月14日 优先权日:2014年11月14日
【发明者】张烨, 霍卫平, 周群年, 郭志弘, 金正皓 申请人:北京东方国信科技股份有限公司