数据压缩装置及方法与流程

文档序号:13675161阅读:185来源:国知局
技术领域本发明涉及数据处理领域,特别涉及一种数据压缩装置及方法。

背景技术:
在数据处理领域中,数据压缩是一种通过特定步骤来减少重复数据,达到缩减存储空间的方法。差分(英文:Delta)压缩是目前较为常用的一种无损数据压缩方法。其主要包括如下步骤:通过特定的相似度检测算法从若干个参考数据块中检测出一个与待压缩数据相似度最高的参考数据块,并对待压缩数据与该参考数据块进行差异计算,以获得压缩结果。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:现有的差分压缩算法对参考数据块与待压缩数据之间的相似度要求较高,当不存在与待压缩数据之间的相似度较高的压缩数据块时,压缩效果较差。

技术实现要素:
为了解决现有技术中当不存在与待压缩数据之间的相似度较高的压缩数据块时,压缩效果较差的问题,本发明实施例提供了一种数据压缩装置及方法。所述技术方案如下:第一方面,提供了一种数据压缩方法,该方法包括:获取待压缩数据与m个参考数据块,m大于1,且m为整数;将该待压缩数据与该m个参考数据块进行匹配,获得至少一个索引编码,每个索引编码包括参考数据块标识和字符串信息,每个参考数据块标识指示m个参考数据块中的一个参考数据块,每个字符串信息指示待压缩数据中的连续字符串在参考数据块中的位置信息。本发明实施例提供的数据压缩方法,通过多个参考数据块对待压缩数据进行压缩,当不存在与待压缩数据之间的相似度较高的压缩数据块时,也能够保证较高的压缩效率。此外,本发明实施例所示的数据压缩方法对参考数据块与待压缩数据之间的相似度要求较低,相似度匹配的算法简单,且很容易匹配出符合要求的参考数据块,能够在保证压缩效果的前提下提高压缩效率。在第一方面的第一种可能的实施方式中,获取m个参考数据块时,逐一计算预先设置的各个参考数据块各自与待压缩数据之间的相似度,获取该各个参考数据块中,与该待压缩数据之间的相似度大于预设阈值的m个参考数据块。结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,该获取该各个参考数据块中,与该待压缩数据之间的相似度最大的m个参考数据块,包括:每计算出一个与该待压缩数据之间的相似度大于该预设阈值的参考数据块时,将匹配数量加1,该匹配数量的初值为0;判断该匹配数量是否达到预设的数量上限M,M≥2,且M为整数;若判断结果为该匹配数量达到预设的数量上限M,则将已计算出的与该待压缩数据之间的相似度大于该预设阈值的参考数据块获取为与该待压缩数据相匹配的m个参考数据块;若判断结果为该匹配数量未达到预设的数量上限M,则判断该各个参考数据块各自与该待压缩数据之间的相似度是否全部计算完毕;若判断结果为该各个参考数据块各自与该待压缩数据之间的相似度全部计算完毕,则将已计算出的与该待压缩数据之间的相似度大于该预设阈值的参考数据块获取为与该待压缩数据相匹配的m个参考数据块。本发明实施例提供的数据压缩方法,只需要从若干个参考数据块中获取出多个相似度要求较低的参考数据块即可,由于对参考数据块与待压缩数据之间的相似度要求较低,因此,逐一计算各个参考数据块与该待压缩数据之间的相似度,当计算出与待压缩数据相匹配的参考数据块的数量足够时,可以停止后续计算过程,从而缩短匹配过程,提高压缩效率。在第一方面的第三种可能的实施方式中,该方法还包括:当该待压缩数据中存在未对应该至少一个索引编码的连续字符串时,生成包含未对应该至少一个索引编码的连续字符串的插入编码,该插入编码用于指示在解压缩时插入未对应该至少一个索引编码的连续字符串。在第一方面的第四种可能的实施方式中,根据该待压缩数据与该m个参考数据块进行匹配,包括:将该m个参考数据块首尾相连,获得一个总参考数据块;将该待压缩数据与该总参考数据块进行匹配。第二方面,本发明实施例提供了一种计算设备,该计算设备包括:处理器、存储器和总线;存储器通过总线连接处理器;处理器被配置为执行存储器中存储的指令;处理器通过执行指令来实现上述第一方面或第一方面中任意一种可能的实现方式所提供的数据压缩方法。第三方面,本发明实施例提供了一种数据压缩装置,该数据压缩装置包括至少一个单元,该至少一个单元用于实现上述第一方面或第一方面中任意一种可能的实现方式所提供的数据压缩方法。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明示例性实施例所示出的计算设备的结构框图;图2A是本发明一示例性实施例示出的数据压缩方法的方法流程图;图2B是图2A所示实施例涉及的一种获取参考数据块的方法流程图;图2C是图2A所示实施例涉及的一种基于多参考数据块的差分压缩方法的流程图;图3是本发明一个示例性实施例提供的数据压缩装置的框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1是本发明一示例性实施例所示出的计算设备的结构框图。该计算设备100可以包括:处理器110、存储器130以及总线150。存储器130通过总线150与处理器110相连接。处理器110包括运算逻辑部件、寄存器部件以及控制部件等,其可以是独立的中央处理器,或者也可以是嵌入式处理器,比如微处理器(英文:MicroProcessorUnit,缩写:MPU)、微控制器(英文:MicrocontrollerUnit,缩写:MCU)或者数字信号处理器(英文:EmbeddedDigitalSignalProcessor,缩写:EDSP)等。存储器130由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(英文:StaticRandomAccessMemory,简称:SRAM),电可擦除可编程只读存储器(英文:ElectricallyErasableProgrammableRead-OnlyMemory,简称:EEPROM),可擦除可编程只读存储器(英文:ErasableProgrammableReadOnlyMemory,简称:EPROM),可编程只读存储器(英文:ProgrammableRead-OnlyMemory,简称:PROM),只读存储器(英文:ReadOnlyMemory,简称:ROM),磁存储器,快闪存储器,磁盘或光盘。存储器130可用于存储指令,该指令可以实现为软件程序或者软件模块。其中,处理器110可以通过执行存储器130中存储的指令来实现下文图2A所示实施例中的数据压缩方法的全部或者部分步骤。可选的,计算设备100还可以包括通信组件120和高速缓存器140等部件。通信组件120与高速缓存器140分别通过总线150与处理器110相连。其中,通信组件120用于对外通信,包括对外部网络通信或者与其它计算或存储设备之间的通信。其可以包括多种类型接口,比如以太网络接口或者无线收发器等。高速缓存器140用于缓存处理器110计算过程中的一些中间数据。图2A是本发明一示例性实施例示出的数据压缩方法的方法流程图,该方法可以用于如图1所示的计算设备中。如图2A所示,该数据压缩方法可以包括:步骤201,获取待压缩数据与m个参考数据块,m大于1,且m为整数。具体的,计算设备在获取m个参考数据块时,可以逐一计算预先设置的各个参考数据块各自与该待压缩数据之间的相似度,并获取该各个参考数据块中,与该待压缩数据之间的相似度大于预设阈值的m个参考数据块。在本示例性实施例中,计算设备中预先存储有若干个待选择的参考数据块,在对待压缩数据进行压缩时,只需要从若干个参考数据块中获取出多个相似度要求较低的参考数据块即可,比如,计算设备可以使用较为简单的相似度计算算法计算各个参考数据块各自与待压缩数据之间的相似度,并将其中相似度大于预设阈值的m个参考数据块获取为与待压缩数据相匹配的m个参考数据块,或者,计算设备也可以将其中相似度最大的m个参考数据块获取为与待压缩数据相匹配的m个参考数据块。由于对参考数据块与待压缩数据之间的相似度要求较低,可能存在很多与待压缩数据相匹配的参考数据块,而实际应用中可能并不需要如此多的参考数据块,因此,在本示例性实施例一种可能的实现方式中,可以逐一计算各个参考数据块与该待压缩数据之间的相似度,当计算出与待压缩数据相匹配的参考数据块的数量足够时,可以停止后续计算过程,从而缩短匹配过程,提高压缩效率。具体的,请参考图2B,其示出了图2A所涉及的一种获取参考数据块的方法流程图,如图2B所示,该方法可以包括如下步骤:步骤201a,计算各个参考数据块与该待压缩数据之间的相似度。执行图2A所示的方法的设备中,可以预存N个参考数据块,N大于等于M,步骤201a至步骤201e从这N个参考数据块中选取M个与待压缩数据相似度较高的参考数据块。在一种可能的实现方式中,在计算一个参考数据块与待压缩数据之间的相似度时,可以查找该参考数据块与待压缩数据之间的相同特征来计算,该特征可以由参考数据块或者待压缩数据的拉宾(英文:Rabin)指纹来表示,比如,对于参考数据块和待压缩数据,分别选择固定数量的Rabin指纹组成各自的特征子集,该特征子集中的每个指纹是对应特征子集的一个哈希(英文:Hash)值,通过计算两个特征子集中相匹配的Rabin指纹的数量来确定该参考数据块和待压缩数据之间的相似度。在计算一个参考数据块和待压缩数据之间的相似度时,可以对两者各自对应的特征子集中的Rabin指纹进行逐一比对,直至全部比对结束,或者,比对出匹配的Rabin指纹在特征子集中所占的比例已经达到预设阈值。比如,当预设阈值为20%,参考数据块和待压缩数据各自对应的特征子集各包含5个Rabin指纹,在计算相似度时,首先比对两个特征子集各自的第一个Rabin指纹,如果匹配,则比对结束,确定该参考数据块与该待压缩数据相匹配,否则,继续比对两个特征子集各自的第二个Rabin指纹,依次类推,直至全部比对完毕,或者,比对到匹配的Rabin指纹。如果参考数据块和待压缩数据各自对应的特征子集中的Rabin指纹非常多,为了提高匹配效率,还可以将特征子集降为超级特征子集,或者,将特征子集中的Rabin指纹缩减为超级指纹,以组成的指纹数量更少的特征子集。步骤201b,每计算出一个与该待压缩数据之间的相似度大于预设阈值的参考数据块时,则将匹配数量加1。步骤201c,判断该匹配数量是否达到预设的数量上限M,若是,进入步骤201d,否则,进入步骤201e。其中,该匹配数量的初值为0,M≥2,且M为整数。在本示例性实施例中,M是一个预先设置的固定数值,该数值可以由开发人员或者用户根据实际的压缩场景进行设定。步骤201d,将已计算出的与该待压缩数据之间的相似度大于该预设阈值的参考数据块获取为与该待压缩数据相匹配的m个参考数据块。在本示例性实施例中,逐一计算各个参考数据块与该待压缩数据之间的相似度时,每计算出一个与待压缩数据相匹配的参考数据块,即判断已计算出的、与待压缩数据相匹配的参考数据块是否足够,若是,则获取已计算出的各个与待压缩数据相匹配的参考数据块,并停止后续计算过程。步骤201e,判断该各个参考数据块各自与该待压缩数据之间的相似度是否全部计算完毕,若是,进入步骤201d,否则,返回步骤201a。若判断结果为该各个参考数据块各自与该待压缩数据之间的相似度未全部计算完毕,则继续计算下一个参考数据块与该待压缩数据之间的相似度。在每计算出一个与待压缩数据相匹配的参考数据块时,如果判断出已计算出的、与待压缩数据相匹配的参考数据块还不够,则可以继续进行后续计算,直至数量足够或者所有的参考数据块全部计算结束,当所有的参考数据块全部计算结束时,无论与待压缩数据相匹配的参考数据块的数量是否达到M,都获取已计算出的各个与待压缩数据相匹配的参考数据块,并停止后续计算过程。步骤202,将该待压缩数据与该m个参考数据块进行匹配,获得至少一个索引编码,每个索引编码包括参考数据块标识和字符串信息,每个参考数据块标识指示m个参考数据块中的一个参考数据块,每个字符串信息指示待压缩数据中的连续字符串在参考数据块中的位置信息。其中,每个索引编码对应待压缩数据中的一个连续字符串,且该索引编码指示对应的连续字符串存在于该m个参考数据块中的哪一个参考数据块中的哪个位置。比如,该索引编码中的字符串信息可以包含对应的连续字符串在参考数据块中的起始位置以及字符数,表示该参考数据块的标识对应的参考数据块中,从起始位置开始的指定数量的字符同样存在于待压缩数据中。步骤203,当该待压缩数据中存在未对应该至少一个索引编码的连续字符串时,生成包含未对应该至少一个索引编码的连续字符串的插入编码,该插入编码用于指示在解压缩时插入未对应该至少一个索引编码的连续字符串。在实际应用中,可能出现待压缩数据中的部分字符不存在于m个参考数据块的任何一个参考数据块中的情况,此时,计算设备可以对应生成插入编码,每个插入编码中包含不存在于m个参考数据块的任何一个参考数据块中的一个连续字符串。步骤204,按照该至少一个索引编码和插入编码各自对应的连续字符串在待压缩数据中的先后顺序,将该至少一个索引编码和插入编码输出为压缩结果。具体的,请参考图2C,其示出了图2A所示的示例性实施例涉及的一种基于多参考数据块的差分压缩方法的流程图,如图2C所示,该方法可以包括如下步骤:步骤20a,将待压缩数据划分为若干个连续字符串。其中,该连续字符串是存在目标参考块的字符串,该目标参考块是该m个参考数据块中包含该连续字符串的数据块;或者,该连续字符串是包含的任意一个字符在该m个参考数据块中都不存在的字符串。在本发明实施例中,划分出的连续字符串可以有以下两类:第一类是存在于m个参考数据块的一个参考数据块中的连续字符串,此类字符串的划分方法可以如下:计算设备从待压缩数据中未划分的字符中的第一个字符开始,查询该第一个字符是否存在于m个参考数据块的一个参考数据块中,如果是,则继续查询未划分的字符中的前两个字符组成的字符串是否存在于m个参考数据块的一个参考数据块中,以此类推,直到查询出未划分的字符中的前p个字符组成的字符串存在于m个参考数据块的一个参考数据块中,且未划分的字符中的前p+1个字符组成的字符串不存在于m个参考数据块的任一参考数据块中时,将未划分的字符中的前p个字符组成的字符串划分为一个连续字符串,p为大于等于1的整数。或者,计算设备也可以为第一类连续字符串设置一个字符数阈值q,当p达到q时,不再查询未划分的字符中的前q+1个字符组成的字符串是否存在于m个参考数据块的一个参考数据块中,直接将未划分的字符中的前q个字符组成的字符串划分为一个连续字符串。第二类是不存在于m个参考数据块的任一参考数据块中的连续字符串,此类字符串的划分方法可以如下:计算设备从待压缩数据中未划分的字符中的第一个字符开始,查询该第一个字符是否不存在于m个参考数据块的任一参考数据块中,如果是,则继续查询未划分的字符中的第二个字符是否不存在于m个参考数据块的任一参考数据块中,以此类推,直到查询出未划分的字符中的第p’个字符不存在于m个参考数据块的任一参考数据块中,且未划分的字符中的第p’+1个字符存在于m个参考数据块的一个参考数据块中时,将未划分的字符中的前p’个字符组成的字符串划分为一个连续字符串,p’为大于等于1的整数。或者,计算设备也可以为第二类连续字符串设置一个字符数阈值q’,当p’达到q’时,不再查询未划分的字符中的第q’+1个字符是否不存在于m个参考数据块的任一参考数据块中,直接将未划分的字符中的前q’个字符组成的字符串划分为一个连续字符串。步骤20b,当一个连续字符串是存在于m个参考数据块的一个参考数据块中的连续字符串时,生成该连续字符串的索引编码。步骤20c,当一个连续字符串是不存在于m个参考数据块的任一参考数据块中的连续字符串时,生成包含该连续字符串的插入编码。步骤20d,将生成的各个索引编码和插入编码按照各自对应的连续字符串在该待压缩数据中的位置进行排列,获得该待压缩数据对应的压缩编码。比如,假设m的值取3,即有3个参考数据块。3个参考数据块和待压缩数据如下所示:参考数据块1为:ABCDEFGHIABCDEFGHIMNOPQRST参考数据块2为:12345678910111213141516171参考数据块3为:abcdefghijklmnopqrstuvwxyz待压缩数据为:ABCDEFGHIABCDEFGHI234567891011abcdefghijklXYZ在使用上述参考数据块1至参考数据块3对待压缩数据进行压缩时,首先,对待压缩数据第一个字符“A”在参考数据块中进行检索,找到参考数据块1中有相同的字符“A”;之后,连续对比参考数据块1的字符“A”和待压缩数据的字符“A”之后的各个字符,确定参考数据块1从字符“A”开始的一共18个字符和待压缩数据从“A”开始的18个字符相同。参考压缩块1从“A”开始的第19个字符是“M”,而待压缩数据从“A”开始的第19个字符是“2”,两者不同,此时,生成第一组索引编码为“<C1,18,1>”。其中,索引编码由固定格式“<,,>”和三个数据组成。其中,第一数据为参考数据块标识,“C1”表示该索引编码使用的参考数据块是参考数据块1,同理可知,“C2”表示索引编码使用的参考数据块是参考数据块2;第二数据和第三个数据为字符串信息,中间的第二数据“18”表示索引字符的个数是18个;第三数据“1”表示待压缩数据中的连续字符串在参考数据块中的起始位置是第1位,该索引编码的含义为:从参考数据块1的第1个字符开始索引18个字符,在解压缩时,将索引到的这18个字符添加到该索引编码所在位置。同理,待压缩数据的第19位字符至第42位字符运用同样的索引方式得到第二组索引编码<C2,12,2>以及第三组索引编码<C3,12,1>。而待压缩数据的第43至第45个字符中的任意一个都不能从3个参考数据块中找到,此时可以生成插入编码<I,3,XYZ>,该插入编码中的第一数据“I”表示在当前位置插入字符;中间的第二数据“3”表示插入的字符的个数是3个;第三个数据“XYZ”表示插入的具体字符,即该插入编码的含义为:从当前位置添加长度为3的字符串“XYZ”。由此,本例中的待压缩数据使用参考数据块1至参考数据块3进行压缩后得到的压缩编码为:“<C1,18,1><C2,12,2><C3,12,1><I,3,XYZ>”。在本发明实施例上述方案中,计算设备可以获取多个与待压缩数据具有一定相似性的参考数据块,通过该多个参考数据块对待压缩数据进行压缩,当不存在与待压缩数据之间的相似度较高的压缩数据块时,也能够保证较高的压缩效率;同时,本发明实施例所示的方案对于参考数据块与待压缩数据之间的相似度的要求较低,只需要简单的相似度匹配算法即可以满足计算要求,且很容易匹配出符合要求的参考数据块,能够节约运算资源和运算时间,能够在保证压缩效果的前提下提高压缩效率。在本发明上述方案中,m的值大于1,即计算设备需要从各个参考数据块中至少找出两个与待压缩数据相匹配的参考数据块。在实际应用中,可能出现查找不到与待压缩数据相匹配的参考数据块,或者,只查找到一个与待压缩数据相匹配的参考数据块的情形,对此,计算设备可以根据查找出的与待压缩数据相匹配的参考数据块的数目选择不同的压缩算法,具体比如:一、当查找不到与待压缩数据相匹配的参考数据块时,计算设备使用自压缩算法对待压缩数据块进行压缩。比如,在一种可以实现的实施方式中,自压缩算法的具体实现过程可以如下:首先从待压缩数据中要进行压缩的字符开始,以该字符为起点向后寻找一段一定长度的字符串作为滑动窗口,并执行下列步骤:1)从当前压缩位置开始,考察未编码的数据,并试图在滑动窗口中找出最长的匹配字符串,如果找到,则进行步骤2),否则进行步骤3);步骤2)输出三元符号组(off,len,c)。其中off为窗口中匹配字符串相对窗口边界的偏移,len为可匹配的长度,c为下一个字符,然后将窗口向后滑动len+1个字符,继续步骤1);步骤3)输出三元符号组(0,0,c),其中c为下一个字符,然后将窗口向后滑动len+1个字符,继续步骤1)。例如,滑动窗口的大小为10个字符长度,其中的字符分别为“abcdbbccaa”,紧跟在滑动窗口后的待压缩数据为“abaeaaabaee”。首先,确定从待压缩数据中第一个字符开始,与滑动窗口中的10个字符中,最长的匹配字符串为“ab”,“ab”的下一个字符为“a”,此时输出三元组(0,2,a),表示从此时滑动窗口位移为0的字符位置开始索引2个字符,该2个字符的下一个字符为“a”。然后,滑动窗口向待压缩数据的方向滑动3个字符位,此时滑动窗口内的10个字符是“dbbccaaaba”。由于已被压缩的3个待压缩数据“aba”下一个字符是“e”,“e”在滑动窗口中没有和其相同的字符,所以输出三元组(0,0,e),表示从滑动窗口位移为0的字符位置开始索引0个字符,该字符后的一个字符为“e”。之后,滑动窗口向后滑动1个字符位,此时滑动窗口内的10个字符是“bbccaaabae”,同理,得到输出三元组(4,6,e)。此时,待压缩数据“abaeaaabaee”变成了一组索引(0,2,a)、(0,0,e)和(4,6,e),自此完成对待压缩数据的压缩。可选的,计算设备可以获取历次自压缩的压缩率,并根据历次自压缩的压缩率确定上述计算参考数据块与该待压缩数据之间的相似度时的预设阈值。在数据压缩的过程中,可能会出现如下场景:一连串的待压缩数据的自身冗余度较为相似,比如,在一段时间内,连续多个待压缩数据的自身冗余度都较高,在另一段时间内,连续多个待压缩数据的自身冗余度都较低,针对这样的压缩场景,在本示例性实施例的一种可能的实现方式中,计算设备每次选择自压缩算法并进行压缩后,可以统计本次自压缩的压缩率,在压缩数据过程中,定期获取历次统计的自压缩的压缩率,并根据自压缩的压缩率确定新的预设阈值,比如,可以取最近5次自压缩时的压缩率的平均值,根据该平均值确定新的预设阈值,该平均值越高,说明最近5次自压缩时的待压缩数据的自身冗余度也越高,以最近5次自压缩时的待压缩数据为参考,可能之后的待压缩数据的自身冗余度也较高,此时,可以适当上调预设阈值,让更多的待压缩数据通过自压缩算法进行压缩;相应的,如果平均值越低,说明最近5次自压缩时的待压缩数据的自身冗余度也越低,可能之后的待压缩数据的自身冗余度也较低,此时,可以适当下调预设阈值,让更多的待压缩数据通过基于单参考数据块的差分压缩算法或者基于多参考数据块的差分压缩算法进行压缩;从而达到在连续多个待压缩数据的自身冗余度较为相似的场景下,提高压缩率的效果。二、当只查找到一个与待压缩数据相匹配的参考数据块时,计算设备使用基于单参考数据块的差分压缩算法对待压缩数据块进行压缩。比如,当只有一个参考数据块时,假设该参考数据块和待压缩数据如下所示:参考数据块:ABCDEFGHIABCDEFGHIMNOPQRST待压缩数据:ABCDEFGHIABCDEFGHI234567891011abcdefghijkl参考上述步骤20a至步骤20d所示的方法,上述待压缩数据经过基于单参考数据块的差分压缩后,同样可以获得由索引编码和插入编码组成的压缩编码:“<C,18,1><I,24,234567891011abcdefghijkl>”。可选的,在又一种可能的实现方式中,可以将基于多参考数据块的差分压缩方法转化为基于单参考数据块的差分压缩方法,即M大于或者等于2时,将m个参考数据块首尾相连,获得一个总参考数据块,并将待压缩数据与总参考数据块进行匹配,获得该待压缩数据的压缩编码,其具体压缩步骤可以参考上面的描述,通过简单的处理即可以将多个参考数据块转化为单个参考数据块,使基于单个参考数据块的差分压缩算法能够兼容多个参考数据块,在支持通过多个与待压缩数据相似度较低的参考块对待压缩数据进行压缩来达到较高的压缩率的同时,不需要额外设置基于多参考数据块的压缩算法,从而简化算法的复杂度。综上所述,本示例性实施例所示的数据压缩方法,计算设备获取与待压缩数据相匹配的至少两个参考数据块,将该待压缩数据与该m个参考数据块进行匹配,获得至少一个索引编码,该索引编码用于指示该索引编码对应的连续字符串在该m个参考数据块中的一个参考数据块中的位置,且该索引编码对应的连续字符串是存在于该待压缩数据中的连续字符串,通过该多个参考数据块对待压缩数据进行压缩,当不存在与待压缩数据之间的相似度较高的压缩数据块时,也能够保证较高的压缩效率。此外,本示例性实施例所示的数据压缩方法,对参考数据块与待压缩数据之间的相似度要求较低,相似度匹配的算法简单,且很容易匹配出符合要求的参考数据块,能够在保证压缩效果的前提下提高压缩效率。请参考图3,其示出了本发明一个示例性实施例提供的数据压缩装置的框图。该数据压缩装置可以通过软件、硬件或者两者的结合实现成为上述图1所示计算设备110的全部或者一部分。该数据压缩装置可以通过专用集成电路(英文:application-specificintegratedcircuit,缩写:ASIC)实现,或可编程逻辑器件(英文:programmablelogicdevice,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmablegatearray,缩写:FPGA),通用阵列逻辑(英文:genericarraylogic,缩写:GAL)或其任意组合。当图2所示的数据压缩方法通过软件实现时,该数据压缩装置中的各个单元也可以为软件模块。如图3所示,该数据压缩装置可以包括:获取单元301和匹配单元302。所述获取单元301,用于获取待压缩数据与m个参考数据块,m大于1,且m为整数;所述匹配单元302,用于将所述待压缩数据与所述m个参考数据块进行匹配,获得至少一个索引编码,每个所述索引编码包括参考数据块标识和字符串信息,每个所述参考数据块标识指示所述m个参考数据块中的一个参考数据块,每个所述字符串信息指示所述待压缩数据中的连续字符串在参考数据块中的位置信息。可选的,所述获取单元301,具体用于在获取m个参考数据块时,逐一计算预先设置的各个参考数据块各自与所述待压缩数据之间的相似度,并获取所述各个参考数据块中,与所述待压缩数据之间的相似度大于预设阈值的m个参考数据块。可选的,所述获取单元301,具体用于在获取所述各个参考数据块中,与所述待压缩数据之间的相似度大于预设阈值的m个参考数据块时,每计算出一个与所述待压缩数据之间的相似度大于所述预设阈值的参考数据块时,将匹配数量加1,所述匹配数量的初值为0;判断所述匹配数量是否达到预设的数量上限M,M≥2,且M为整数;若判断结果为所述匹配数量达到预设的数量上限M,则将已计算出的与所述待压缩数据之间的相似度大于所述预设阈值的参考数据块获取为与所述待压缩数据相匹配的m个参考数据块;若判断结果为所述匹配数量未达到预设的数量上限M,则判断所述各个参考数据块各自与所述待压缩数据之间的相似度是否全部计算完毕;若判断结果为所述各个参考数据块各自与所述待压缩数据之间的相似度全部计算完毕,则将已计算出的与所述待压缩数据之间的相似度大于所述预设阈值的参考数据块获取为与所述待压缩数据相匹配的m个参考数据块。可选的,所述装置还包括:生成单元303;所述生成单元303,用于当所述待压缩数据中存在未对应所述至少一个索引编码的连续字符串时,生成包含未对应所述至少一个索引编码的连续字符串的插入编码,所述插入编码用于指示在解压缩时插入未对应所述至少一个索引编码的连续字符串。可选的,所述匹配单元302,具体用于将所述m个参考数据块首尾相连,获得一个总参考数据块,将所述待压缩数据与所述总参考数据块进行匹配。综上所述,本示例性实施例所示的数据压缩装置,计算设备获取与待压缩数据相匹配的至少两个参考数据块,将该待压缩数据与该m个参考数据块进行匹配,获得至少一个索引编码,该索引编码用于指示该索引编码对应的连续字符串在该m个参考数据块中的一个参考数据块中的位置,且该索引编码对应的连续字符串是存在于该待压缩数据中的连续字符串,通过该多个参考数据块对待压缩数据进行压缩,当不存在与待压缩数据之间的相似度较高的压缩数据块时,也能够保证较高的压缩效率。此外,本示例性实施例所示的数据压缩装置,对参考数据块与待压缩数据之间的相似度要求较低,相似度匹配的算法简单,且很容易匹配出符合要求的参考数据块,能够在保证压缩效果的前提下提高压缩效率。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1