CN105204781A - 压缩方法、装置和设备 - Google Patents
压缩方法、装置和设备 Download PDFInfo
- Publication number
- CN105204781A CN105204781A CN201510628949.0A CN201510628949A CN105204781A CN 105204781 A CN105204781 A CN 105204781A CN 201510628949 A CN201510628949 A CN 201510628949A CN 105204781 A CN105204781 A CN 105204781A
- Authority
- CN
- China
- Prior art keywords
- data block
- length
- address
- data
- preset length
- 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
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种压缩方法、装置和设备,属于数据压缩技术领域。所述方法包括:接收多个数据块;从所述多个数据块中获得具有相同对象标识的数据块;对所述具有相同对象标识的数据块进行合并;对合并后的数据块进行压缩。本发明通过采用合并的方式增加了数据块的长度,在对合并后的数据块进行压缩时,能够提高压缩率。且,通过根据对象标识对数据块进行分类,仅会将属于同一对象的数据块进行合并,保证了在对某一对象进行读取操作时的局部性,对该对象进行删除或覆盖写等操作时,不会对其他对象的压缩数据块造成影响,减少了存储设备的数据碎片。
Description
技术领域
本发明涉及数据压缩技术领域,特别涉及一种压缩方法、装置和设备。
背景技术
数据压缩是指在不丢失有用信息的前提下,缩减数据中的冗余数据以减小数据存储空间的方法,通过对数据进行压缩,可以有效地节省存储空间。
在对原始数据进行压缩时,通常会将原始数据划分为多个数据块,删除该多个数据块中重复的数据块,再对剩余的每个数据块分别进行压缩。数据块的重删率和压缩率取决于数据块的大小,数据块越大,重删率越小,单个数据块的压缩率越高;相反,数据块越小,重删率越大,单个数据块的压缩率越低。
在实现本发明的过程中,为了保证重删率较高,通常会将数据块设置的较小,但这会造成数据块的压缩率过低。因此,需要提出一种提高压缩率的方法。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种压缩方法、装置和设备。所述技术方案如下:
第一方面,提供了一种压缩方法,所述方法包括:
接收多个数据块;
从所述多个数据块中获得具有相同对象标识的数据块;
对所述具有相同对象标识的数据块进行合并;
对合并后的数据块进行压缩。
结合第一方面,在第一方面的第一种可能实现方式中,所述对所述具有相同对象标识的数据块进行合并,包括:
对于具有相同对象标识的多个数据块,根据每个数据块的地址,对所述多个数据块进行排序;
按照所述多个数据块的排列顺序,对地址连续的多个数据块进行合并。
结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,所述按照所述多个数据块的排列顺序,对地址连续的多个数据块进行合并,包括:
按照所述多个数据块的排列顺序,获取第一数据块;
判断所述第一数据块的长度是否大于第一预设长度;
如果所述第一数据块的长度大于所述第一预设长度,则将所述第一数据块确定为待压缩的数据块;
如果所述第一数据块的长度不大于所述第一预设长度,则将所述第一数据块与地址连续的下一数据块进行合并。
结合第一方面的第二种可能实现方式,在第一方面的第三种可能实现方式中,所述如果所述第一数据块的长度不大于所述第一预设长度,则将所述第一数据块与地址连续的下一数据块进行合并,包括:
如果所述第一数据块的长度不大于所述第一预设长度,则按照所述多个数据块的排列顺序,获取具有相同对象标识的多个数据块中所述第一数据块的下一数据块,作为第二数据块;
判断所述第二数据块的地址与所述第一数据块的地址是否连续;
如果所述第二数据块的地址与所述第一数据块的地址连续,将所述第二数据块与所述第一数据块合并,得到第三数据块;
如果所述第二数据块的地址与所述第一数据块的地址不连续,则判断所述第一数据块的长度是否大于第二预设长度;如果所述第一数据块的长度大于所述第二预设长度,则将所述第一数据块确定为待压缩的数据块;如果所述第一数据块的长度不大于所述第二预设长度,则将所述第一数据块确定为无需压缩的数据块。
结合第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,所述如果所述第二数据块的地址与所述第一数据块的地址连续,将所述第二数据块与所述第一数据块合并,得到第三数据块之后,所述方法还包括:
判断所述第三数据块的长度是否大于所述第一预设长度;
如果所述第三数据块的长度大于所述第一预设长度,则将所述第三数据块确定为待压缩的数据块;
如果所述第三数据块的长度不大于所述第一预设长度,则将所述第三数据块与地址连续的下一数据块进行合并。
第二方面,提供了一种压缩装置,所述装置包括:
接收模块,用于接收多个数据块;
分类模块,用于从所述多个数据块中获得具有相同对象标识的数据块;
合并模块,用于对所述具有相同对象标识的数据块进行合并;
压缩模块,用于对合并后的数据块进行压缩。
结合第二方面,在第二方面的第一种可能实现方式中,所述合并模块包括:
排序单元,用于对于具有相同对象标识的多个数据块,根据每个数据块的地址,对所述多个数据块进行排序;
合并单元,用于按照所述多个数据块的排列顺序,对地址连续的多个数据块进行合并。
结合第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述合并单元包括:
获取子单元,用于按照所述多个数据块的排列顺序,获取第一数据块;
判断子单元,用于判断所述第一数据块的长度是否大于第一预设长度;
确定子单元,用于如果所述第一数据块的长度大于所述第一预设长度,则将所述第一数据块确定为待压缩的数据块;
合并子单元,用于如果所述第一数据块的长度不大于所述第一预设长度,则将所述第一数据块与地址连续的下一数据块进行合并。
结合第二方面的第二种可能实现方式,在第二方面的第三种可能实现方式中,所述合并子单元具体用于如果所述第一数据块的长度不大于所述第一预设长度,则按照所述多个数据块的排列顺序,获取具有相同对象标识的多个数据块中所述第一数据块的下一数据块,作为第二数据块;判断所述第二数据块的地址与所述第一数据块的地址是否连续;如果所述第二数据块的地址与所述第一数据块的地址连续,将所述第二数据块与所述第一数据块合并,得到第三数据块;
所述合并子单元还用于如果所述第二数据块的地址与所述第一数据块的地址不连续,则判断所述第一数据块的长度是否大于第二预设长度;如果所述第一数据块的长度大于所述第二预设长度,则将所述第一数据块确定为待压缩的数据块;如果所述第一数据块的长度不大于所述第二预设长度,则将所述第一数据块确定为无需压缩的数据块。
结合第二方面的第三种可能实现方式,在第二方面的第四种可能实现方式中,所述合并子单元还用于判断所述第三数据块的长度是否大于所述第一预设长度;如果所述第三数据块的长度大于所述第一预设长度,则将所述第三数据块确定为待压缩的数据块;如果所述第三数据块的长度不大于所述第一预设长度,则将所述第三数据块与地址连续的下一数据块进行合并。
第三方面,提供了一种压缩设备,所述设备包括:存储器和处理器,所述存储器与所述处理器连接,所述存储器存储有指令所述处理器执行所述第一方面提供的任一方法。
本发明实施例提供的方法、装置和设备,通过根据每个数据块的对象标识,获得具有相同对象标识的数据块,即属于同一对象的数据块,从而将属于同一对象的数据块进行合并,再对合并后的数据块进行压缩。通过采用合并的方式增加了数据块的长度,减少了数据碎片,在对合并后的数据块进行压缩时,能够提高压缩率。且,通过对数据块进行分类,仅会将属于同一对象的数据块进行合并,而不会将属于不同对象的数据块进行合并,保证了在对某一对象进行读取操作时的局部性,对该对象进行删除或覆盖写等操作时,不会对其他对象的压缩数据块造成影响,减少了存储设备的数据碎片。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种压缩方法的流程图;
图2是本发明实施例提供的一种压缩方法的流程图;
图3是本发明实施例提供的压缩数据块的示意图;
图4是本发明实施例提供的一种压缩设备的框图;
图5是本发明实施例提供的一种压缩装置的结构示意图;
图6是本发明实施例提供的一种压缩设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。
图1是本发明实施例提供的一种压缩方法的流程图,参见图1,该方法包括:
101、接收多个数据块。
102、从该多个数据块中获得具有相同对象标识的数据块。
103、对该具有相同对象标识的数据块进行合并。
104、对合并后的数据块进行压缩。
其中,对于任两个数据块,将这两个数据块进行合并是指将两个数据块标记为同一个数据块,自动生成新标记的数据块的地址。后续如果要对合并后的数据块进行压缩时,即可将这两个数据块中的数据一起进行压缩。
可选地,数据块以“起始地址+长度”的形式表示,将两个数据块合并即为将第一个数据块的起始地址作为合并后数据块的起始地址,将两个数据块的长度相加,作为合并后数据块的长度,从而得到合并后的数据块。例如,第一个数据块表示为“1KB+1KB”,第二个数据块表示为“2KB+1KB”,则将第一个数据块与第二个数据块合并,即可得到新的数据块“1KB+2KB”。
本发明实施例提供的方法,通过根据每个数据块的对象标识,获得具有相同对象标识的数据块,即属于同一对象的数据块,从而将属于同一对象的数据块进行合并,再对合并后的数据块进行压缩。通过采用合并的方式增加了数据块的长度,在对合并后的数据块进行压缩时,能够提高压缩率。且,通过对数据块进行分类,仅会将属于同一对象的数据块进行合并,而不会将属于不同对象的数据块进行合并,保证了在对某一对象进行读取操作时的局部性,对该对象进行删除或覆盖写等操作时,不会对其他对象的压缩数据块造成影响,减少了存储设备的数据碎片。
可选地,该对具有相同对象标识的数据块进行合并,包括:
对于具有相同对象标识的多个数据块,根据每个数据块的地址,对该数据分组内的多个数据块进行排序;
按照该多个数据块的排列顺序,对地址连续的多个数据块进行合并。
其中,任两个数据块的地址连续是指前一个数据块的起始地址与长度之和等于后一个数据块的起始地址,从而能够保证前一个数据块的最后一个数据的地址与后一个数据块的第一个数据的地址连续。
例如,数据块A的起始地址为1KB,长度为1KB,而数据块B的起始地址为2KB,则可以确定数据块A的地址与数据块B的地址连续。
可选地,该按照该多个数据块的排列顺序,对地址连续的多个数据块进行合并,包括:
按照该多个数据块的排列顺序,获取第一数据块;
判断该第一数据块的长度是否大于第一预设长度;
如果该第一数据块的长度大于该第一预设长度,则将该第一数据块确定为待压缩的数据块;
如果该第一数据块的长度不大于该第一预设长度,则将该第一数据块与地址连续的下一数据块进行合并。
可选地,该如果该第一数据块的长度不大于该第一预设长度,则将该第一数据块与地址连续的下一数据块进行合并,包括:
如果该第一数据块的长度不大于该第一预设长度,则按照该多个数据块的排列顺序,获取具有相同对象标识的多个数据块中该第一数据块的下一数据块,作为第二数据块;
判断该第二数据块的地址与该第一数据块的地址是否连续;
如果该第二数据块的地址与该第一数据块的地址连续,将该第二数据块与该第一数据块合并,得到第三数据块;
如果该第二数据块的地址与该第一数据块的地址不连续,则判断该第一数据块的长度是否大于第二预设长度;如果该第一数据块的长度大于该第二预设长度,则将该第一数据块确定为待压缩的数据块;如果该第一数据块的长度不大于该第二预设长度,则将该第一数据块确定为无需压缩的数据块。
可选地,该如果该第二数据块的地址与该第一数据块的地址连续,将该第二数据块与该第一数据块合并,得到第三数据块之后,该方法还包括:
判断该第三数据块的长度是否大于该第一预设长度;
如果该第三数据块的长度大于该第一预设长度,则将该第三数据块确定为待压缩的数据块;
如果该第三数据块的长度不大于该第一预设长度,则将该第三数据块与地址连续的下一数据块进行合并。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图2是本发明实施例提供的一种压缩方法的流程图,参见图2,本发明实施例的执行主体为数据存储设备,所述方法包括:
201、接收待压缩的多个数据块。
其中,每个数据块中至少包括对象标识,该对象标识用于表示相应数据块所属的对象。数据块所属的对象可以包括文件、块设备等,相应地,该数据块的对象标识可以为文件ID(Identity,序列号)、块设备的地址、LUN(LogicalUnitNumber,逻辑单元号)ID等,本发明实施例对此不做限定。
进一步地,在生成数据块时,生成该数据块的设备,如文件系统或者块设备等,会在该数据块中添加该数据块的描述信息,该描述信息中至少包括该对象标识,还可以包括数据块的生成时间、详情介绍等,本发明实施例对此不做限定。在后续过程中,获取到数据块的设备均可根据该数据块中的描述信息,确定该数据块的对象标识。
当数据存储设备接收到多个数据块时,可以先对多个数据块进行压缩,再对得到的压缩数据块进行存储。可选地,该数据存储设备接收待存储的原始数据,该原始数据中包括多个数据块,并删除多个数据块中的重复数据块。其中,该多个数据块中的任两个数据块相同时,该两个数据块中的其中一个数据块可以作为重复数据块,删除重复数据块可以避免对重复数据的压缩,提高了处理效率。另外,该多个数据块中任两个数据块的长度可以相等,也可以不相等,本发明实施例对此不做限定。
其中,该数据存储设备可以为各类NAS(NetworkAttachedStorage,网络附属存储)设备或者SAN(StorageAreaNetwork,存储区域网络)设备等,本发明实施例对此不做限定。
202、从多个数据块中获得具有相同对象标识的数据块。
为了避免不同对象的数据块之间相互影响,降低解压开销,该数据存储设备可以从多个数据块中分别获得具有相同对象标识的数据块,将不同对象的数据块区分开来,按照所属对象的不同,对多个数据块分别进行合并。
可选地,该数据存储设备获取每个数据块的对象标识,根据每个数据块的对象标识,对多个数据块进行分类,得到多个数据分组。每个数据分组内包括一个或多个数据块,且同一数据分组内数据块的对象标识相同,不同数据分组内数据块的对象标识不同。此时,该数据存储设备即可分别对每个数据分组内的数据块进行压缩。
203、对于具有相同对象标识的多个数据块,根据每个数据块的地址,对多个数据块进行排序。
对于每个数据分组,该数据存储设备可以获取该数据分组内的每个数据块的地址,根据获取到的每个数据块的地址的先后顺序,对该数据分组内的多个数据块进行排序,后续过程中,该数据存储设备即可根据该多个数据块的排列顺序,对地址连续的多个数据块进行合并。
其中,数据块的地址可以为LBA(LogicalBlockAddress,逻辑区块地址)或偏移地址,本发明实施例对此不做限定。
204、按照该多个数据块的排列顺序,获取具有相同对象标识的多个数据块中的第一数据块,判断该第一数据块的长度是否大于第一预设长度,如果是,执行步骤209,如果否,执行步骤205。
为了便于对该多个数据块进行合并压缩,该数据存储设备对该数据分组内的多个数据块进行排序之后,可以按照该多个数据块的排列顺序,获取该数据分组内的第一数据块,以便后续能够对该第一数据块和下一数据块进行合并。
而在对该第一数据块和下一数据块进行合并之前,该数据存储设备可以先判断该第一数据块的长度是否大于第一预设长度。其中,该第一预设长度用于表示合并数据块长度的上限值,可以由该数据存储设备预先确定,本发明实施例对此不做限定。
如果该第一数据块的长度大于该第一预设长度,表示该第一数据块的长度已超出规定的上限值,对该第一数据块进行压缩会造成解压开销过大,则无需在对该第一数据块和下一数据块进行合并,直接对该第一数据块进行压缩即可,即该数据存储设备执行步骤209,将该第一数据块确定为待压缩的数据块。
如果该第一数据块的长度不大于该第一预设长度,表示该第一数据块的长度还未超出规定的上限值,则该数据存储设备可以执行步骤205,对该第一数据块和下一数据块进行合并,后续再对合并得到的数据块进行压缩。
需要说明的是,判断该第一数据块的长度是否大于第一预设长度的步骤为可选步骤,该数据存储设备还可以不执行该判断步骤,而直接按照该多个数据块的排列顺序,获取该第一数据块和该第二数据块,本发明实施例对此不做限定。
205、按照该多个数据块的排列顺序,获取具有相同对象标识的多个数据块中该第一数据块的下一数据块,作为第二数据块,判断该第二数据块的地址与该第一数据块的地址是否连续,如果否,执行步骤206,如果是,执行步骤207。
为了对该第一数据块和下一数据块进行合并,该数据存储设备按照该多个数据块的排列顺序,获取到该数据分组内该第一数据块的下一数据块,作为第二数据块。此时,该数据存储设备可以先判断该第二数据块的地址与该第一数据块的地址是否连续。
而如果该第二数据块的地址与该第一数据块的地址不连续,则不再对该第一数据块与该第二数据块进行合并,而是执行步骤206。如果该第二数据块的地址与该第一数据块的地址连续,则执行步骤207,将该第二数据块与该第一数据块进行合并,得到第三数据块。
206、判断该第一数据块的长度是否大于第二预设长度,如果是,执行步骤209,如果否,将该第一数据块确定为无需压缩的数据块,执行步骤210。
不再对该第一数据块与该第二数据块进行合并时,该数据存储设备可以直接将该第一数据块确定为待压缩的数据块。然而,如果该第一数据块的长度过小,对该第一数据块进行压缩时,压缩率很低,会造成不必要的资源浪费,则为了提高压缩率,该数据存储设备还可以先判断该第一数据块的长度是否大于第二预设长度。其中,该第二预设长度用于表示数据块长度的下限值,可以由该数据存储设备预先确定,本发明实施例对此不做限定。
如果该第一数据块的长度大于该第二预设长度,则该数据存储设备可以执行步骤209,将该第一数据块确定为待压缩的数据块,以便后续对该第一数据块进行压缩。而如果该第一数据块的长度不大于该第二预设长度,即使对该第一数据块进行压缩,压缩率也很低,则该数据存储设备将该第一数据块确定为无需压缩的数据块,不再对该数据块进行压缩,直接执行步骤210,对该数据块进行存储即可。
需要说明的是,该步骤206为可选步骤,该数据存储设备还可以不执行步骤206,而是直接将该第一数据块确定为待压缩的数据块,以便后续对该第一数据块进行压缩。
207、将该第二数据块与该第一数据块合并,得到第三数据块。
其中,将该第二数据块与该第一数据块合并是指按照第一数据块地址与第二数据块的地址的先后顺序,将该第一数据块和该第二数据块标记为同一个数据块,即第三数据块,并根据该第一数据块和该第二数据块的地址,自动生成第三数据块的地址。
进一步地,对于任两个数据块,将这两个数据块进行合并是指按照两个数据块的地址的先后顺序,将两个数据块标记为同一个数据块,自动生成新标记的数据块的地址。后续如果要对合并后的数据块进行压缩时,会根据标记将这两个数据块中的数据一起进行压缩。
208、判断该第三数据块的长度是否大于该第一预设长度,如果是,执行步骤209,如果否,继续执行步骤205。
该数据存储设备将该第二数据块与该第一数据块合并,将合并得到的数据块作为第三数据块,此时,该数据存储设备可以判断该第三数据块的长度是否大于该第一预设长度。
如果该第三数据块的长度大于该第一预设长度,表示该第三数据块的长度已超出规定的上限值,则无需再将该第三数据块与下一数据块进行合并,直接执行步骤209,将该第三数据块确定为待压缩的数据块即可。
而如果该第三数据块的长度不大于该第一预设长度,表示该第三数据块的长度还未超出规定的上限值,则还可以将该第三数据块与下一数据块进行合并,即该数据存储设备可以继续执行步骤205,按照该多个数据块的排列顺序,获取具有相同对象标识的多个数据块中该第三数据块的下一数据块,作为第四数据块,以此类推,直至该数据分组内不存在地址连续的下一数据块为止,或者,直至该数据存储设备将当前合并得到的数据块确定为待压缩的数据块为止。
需要说明的是,该步骤208为可选步骤,该数据存储设备还可以不执行步骤208,直接将该第三数据块与下一地址连续的数据块进行合并,直至当前不存在地址连续的下一数据块为止。
209、将当前的数据块确定为待压缩的数据块。
210、对已确定的每个待压缩数据块进行压缩,并对压缩后的每个数据块以及已确定无需压缩的每个数据块进行存储。
通过上述步骤201-209,该数据存储设备可以获取到待压缩的数据块和无需压缩的数据块,则当所有的数据块处理完成时,该数据存储设备可以对该待压缩数据块进行压缩,对压缩后得到的每个数据块以及已确定无需压缩的每个数据块进行存储。
具体地,该数据存储设备可以采用无损数据压缩的方式,对待压缩数据块进行压缩,本发明实施例对压缩方式不做限定。
本发明实施例通过该第一预设长度和该第二预设长度,对待压缩数据块的长度进行限制,使得合并得到的数据块的长度是动态的,保证了待压缩数据块的长度大于该第二预设长度,提高了压缩率,且保证了待压缩数据块的长度不大于该第一预设长度,降低了解压开销。
进一步地,该数据存储设备在对该待压缩数据块进行压缩之前,还可以先对该待压缩数据块进行压缩预判,判断该待压缩数据块是否能够被压缩,如果该待压缩数据块能够被压缩,则对该待压缩数据块进行压缩,而如果该待压缩数据块不能被压缩,则不再对该待压缩数据块进行压缩,直接存储该待压缩数据块即可。
其中,进行压缩预判时,该数据存储设备可以计算该待压缩数据块的熵值,判断计算的熵值是否小于预设阈值,如果该熵值小于该预设阈值,可以认为该待压缩数据块的随机性较强,此时,无需对该待压缩数据块进行压缩,直接存储该待压缩数据块即可。而如果该熵值不小于该预设阈值,可以认为该待压缩数据块的随机性较弱,则可以对该待压缩数据块进行压缩。其中,该预设阈值可以由该数据存储设备预先确定,本发明实施例对此不做限定。
通过先对待压缩数据块进行快速的压缩预判,能够提高压缩性能,减少不必要的CPU(CentralProcessingUnit,中央处理器)开销,节省CPU资源。
本发明实施例提供的方法,通过根据每个数据块的对象标识,获得具有相同对象标识的数据块,即属于同一对象的数据块,从而将属于同一对象的数据块进行合并,再对合并后的数据块进行压缩。通过采用合并的方式增加了数据块的长度,在对合并后的数据块进行压缩时,能够提高压缩率。且,通过对数据块进行分类,仅会将属于同一对象的数据块进行合并,而不会将属于不同对象的数据块进行合并,保证了在对某一对象进行读取操作时的局部性,对该对象进行删除或覆盖写等操作时,不会对其他对象的压缩数据块造成影响,减少了存储设备的数据碎片。即使在为了提高重删率而将数据块的长度设置的较小时,通过采用合并压缩的方式,也可以增加数据块的长度,提高压缩率。
无损数据压缩的方式是在一个特定的压缩窗口内,将数据中的冗余数据去掉,以达到数据压缩的效果,在解压缩的时候,去掉的这部分冗余数据是可以恢复的,不会减少数据的信息量。
本发明实施例中,通过动态合并数据块的方式,在小IO(Input/Output,输入/输出)场景下,增加了压缩数据的长度,则在对合并后的数据块进行压缩时,在一个更长的数据中找到重复数据的机率会增大,提高了压缩率,且在大IO场景下,通过减少合并的数据块的个数,能够在提高压缩率的同时减少读取数据块时的解压缩开销。本发明实施例可以更加灵活的应用在不同的场景下,大IO场景及小IO场景都可以使用。
进一步地,存储设备上的数据具有一定的空间局部性,如果某一地址上的数据要被删除、读取或重新覆盖写,那么相邻的数据也有很大的可能会被删除、读取或重新覆盖写。比如要删除一个文件的时候,属于这个文件的所有IO都得要从盘上回收,如果不同文件的IO也压缩在一起,那么删除一个文件时,而不删除其他文件时,这个压缩的数据块也不能被回收,因为压缩的数据块中还包括其他文件的数据。
而本发明实施例中,通过按照对象进行分类,将同一对象的连续数据压缩在一起,增强了待压缩数据的相关性,可以提高压缩率,保证了在对某一对象进行读取操作时的局部性,对该对象进行删除或覆盖写等操作时,不会对其他对象的压缩数据块造成影响,减少存储设备上的盘碎片,提高存储设备的利用率。
图3是本发明实施例提供的压缩数据块的示意图,以图3中的数据块为例,该压缩方法可以包括以下步骤:
(1)获取到IO数据时,对IO数据按照对象(Obj)进行分类,得到3组数据块,并对每组的数据块按照地址进行排序,得到以下数据:
1、Obj_1组:Obj_1_1、Obj_1_2、Obj_1_3、Obj_1_5、Obj_1_6、Obj_1_11;
2、Obj_2组:Obj_2_1、Obj_2_3、Obj_2_4;
3、Obj_3组:Obj_3_1、Obj_3_2。
(2)对于具有相同对象标识的多个数据块,将地址连续且长度和值不大于第一预设长度的数据块进行合并,并标记为一个待压缩数据块(segment),而对于长度不大于第二预设长度的数据块不再进行压缩。则可以得到以下数据块:
1、Obj_1组:segment1、segment2、Obj_1_11;
2、Obj_2组:segment1、Obj_2_4;
3、Obj_3组:segment1。
(3)对于确定的每个待压缩数据块进行压缩,将压缩后的数据块和长度不大于第二预设长度的数据块进行存储。
图4是本发明实施例提供的一种压缩设备的框图,参见图4,该压缩设备包括IO接口、内存缓存、文件系统层、块设备层、压缩/解压缩单元、存储单元。
压缩设备通过IO接口获取到IO流,并缓存在内存缓存中,文件系统层或块设备层从内存缓存中调用IO流,下发给压缩/解压缩单元,压缩/解压缩单元接收到文件系统层或块设备层下发的IO流,将IO数据按照对象进行分类后,对每个对象的IO数据进行动态合并和压缩,并存入存储单元中。当读取压缩数据时,压缩/解压缩单元从存储单元中读取出压缩数据,并对压缩数据进行解压还原后,返回给文件系统层或者块设备层。
图5是本发明实施例提供的一种压缩装置的结构示意图,参见图5,该压缩装置包括:
接收模块501,用于接收多个数据块;
分类模块502,用于从该多个数据块中获得具有相同对象标识的数据块;
合并模块503,用于对该具有相同对象标识的数据块进行合并;
压缩模块504,用于对合并后的数据块进行压缩。
本发明实施例提供的装置,通过根据每个数据块的对象标识,获得具有相同对象标识的数据块,即属于同一对象的数据块,从而将属于同一对象的数据块进行合并,再对合并后的数据块进行压缩。通过采用合并的方式增加了数据块的长度,在对合并后的数据块进行压缩时,能够提高压缩率。且,通过对数据块进行分类,仅会将属于同一对象的数据块进行合并,而不会将属于不同对象的数据块进行合并,保证了在对某一对象进行读取操作时的局部性,对该对象进行删除或覆盖写等操作时,不会对其他对象的压缩数据块造成影响,减少了存储设备的数据碎片。即使在为了提高重删率而将数据块的长度设置的较小时,通过采用合并压缩的方式,也可以增加数据块的长度,提高压缩率。
可选地,该合并模块503包括:
排序单元,用于对于具有相同对象标识的多个数据块,根据每个数据块的地址,对该多个数据块进行排序;
合并单元,用于按照该多个数据块的排列顺序,对地址连续的多个数据块进行合并。
可选地,该合并单元包括:
获取子单元,用于按照该多个数据块的排列顺序,获取第一数据块;
判断子单元,用于判断该第一数据块的长度是否大于第一预设长度;
确定子单元,用于如果该第一数据块的长度大于该第一预设长度,则将该第一数据块确定为待压缩的数据块;
合并子单元,用于如果该第一数据块的长度不大于该第一预设长度,则将该第一数据块与地址连续的下一数据块进行合并。
可选地,该合并子单元具体用于如果该第一数据块的长度不大于该第一预设长度,则按照该多个数据块的排列顺序,获取具有相同对象标识的多个数据块中该第一数据块的下一数据块,作为第二数据块;判断该第二数据块的地址与该第一数据块的地址是否连续;如果该第二数据块的地址与该第一数据块的地址连续,将该第二数据块与该第一数据块合并,得到第三数据块;
该合并子单元还用于如果该第二数据块的地址与该第一数据块的地址不连续,则判断该第一数据块的长度是否大于第二预设长度;如果该第一数据块的长度大于该第二预设长度,则将该第一数据块确定为待压缩的数据块;如果该第一数据块的长度不大于该第二预设长度,则将该第一数据块确定为无需压缩的数据块。
可选地,该合并子单元还用于判断该第三数据块的长度是否大于该第一预设长度;如果该第三数据块的长度大于该第一预设长度,则将该第三数据块确定为待压缩的数据块;如果该第三数据块的长度不大于该第一预设长度,则将该第三数据块与地址连续的下一数据块进行合并。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的压缩装置在进行压缩时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据存储设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的压缩装置与压缩方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本发明实施例提供的一种压缩设备的结构示意图。参见图6,包括:存储器601和处理器602,该存储器601与该处理器602连接,该存储器601存储有指令使该处理器602执行以下操作:
接收多个数据块;
从该多个数据块中获得具有相同对象标识的数据块;
对该具有相同对象标识的数据块进行合并;
对合并后的数据块进行压缩。
可选地,该处理器602还用于调用该程序代码,执行以下操作:
对于具有相同对象标识的多个数据块,根据每个数据块的地址,对该多个数据块进行排序;
按照该多个数据块的排列顺序,对地址连续的多个数据块进行合并。
可选地,该处理器602还用于调用该程序代码,执行以下操作:
按照该多个数据块的排列顺序,获取第一数据块;
判断该第一数据块的长度是否大于第一预设长度;
如果该第一数据块的长度大于该第一预设长度,则将该第一数据块确定为待压缩的数据块;
如果该第一数据块的长度不大于该第一预设长度,则将该第一数据块与地址连续的下一数据块进行合并。
可选地,该处理器602还用于调用该程序代码,执行以下操作:
如果该第一数据块的长度不大于该第一预设长度,则按照该多个数据块的排列顺序,获取具有相同对象标识的多个数据块中该第一数据块的下一数据块,作为第二数据块;
判断该第二数据块的地址与该第一数据块的地址是否连续;
如果该第二数据块的地址与该第一数据块的地址连续,将该第二数据块与该第一数据块合并,得到第三数据块。
如果该第二数据块的地址与该第一数据块的地址不连续,则判断该第一数据块的长度是否大于第二预设长度;如果该第一数据块的长度大于该第二预设长度,则将该第一数据块确定为待压缩的数据块;如果该第一数据块的长度不大于该第二预设长度,则将该第一数据块确定为无需压缩的数据块。
可选地,该处理器602还用于调用该程序代码,执行以下操作:
判断该第三数据块的长度是否大于该第一预设长度;
如果该第三数据块的长度大于该第一预设长度,则将该第三数据块确定为待压缩的数据块;
如果该第三数据块的长度不大于该第一预设长度,则将该第三数据块与地址连续的下一数据块进行合并。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
Claims (11)
1.一种压缩方法,其特征在于,所述方法包括:
接收多个数据块;
从所述多个数据块中获得具有相同对象标识的数据块;
对所述具有相同对象标识的数据块进行合并;
对合并后的数据块进行压缩。
2.根据权利要求1所述的方法,其特征在于,所述对所述具有相同对象标识的数据块进行合并,包括:
对于具有相同对象标识的多个数据块,根据每个数据块的地址,对所述多个数据块进行排序;
按照所述多个数据块的排列顺序,对地址连续的多个数据块进行合并。
3.根据权利要求2所述的方法,其特征在于,所述按照所述多个数据块的排列顺序,对地址连续的多个数据块进行合并,包括:
按照所述多个数据块的排列顺序,获取第一数据块;
判断所述第一数据块的长度是否大于第一预设长度;
如果所述第一数据块的长度大于所述第一预设长度,则将所述第一数据块确定为待压缩的数据块;
如果所述第一数据块的长度不大于所述第一预设长度,则将所述第一数据块与地址连续的下一数据块进行合并。
4.根据权利要求3所述的方法,其特征在于,所述如果所述第一数据块的长度不大于所述第一预设长度,则将所述第一数据块与地址连续的下一数据块进行合并,包括:
如果所述第一数据块的长度不大于所述第一预设长度,则按照所述多个数据块的排列顺序,获取具有相同对象标识的多个数据块中所述第一数据块的下一数据块,作为第二数据块;
判断所述第二数据块的地址与所述第一数据块的地址是否连续;
如果所述第二数据块的地址与所述第一数据块的地址连续,将所述第二数据块与所述第一数据块合并,得到第三数据块;
如果所述第二数据块的地址与所述第一数据块的地址不连续,则判断所述第一数据块的长度是否大于第二预设长度;如果所述第一数据块的长度大于所述第二预设长度,则将所述第一数据块确定为待压缩的数据块;如果所述第一数据块的长度不大于所述第二预设长度,则将所述第一数据块确定为无需压缩的数据块。
5.根据权利要求4所述的方法,其特征在于,所述如果所述第二数据块的地址与所述第一数据块的地址连续,将所述第二数据块与所述第一数据块合并,得到第三数据块之后,所述方法还包括:
判断所述第三数据块的长度是否大于所述第一预设长度;
如果所述第三数据块的长度大于所述第一预设长度,则将所述第三数据块确定为待压缩的数据块;
如果所述第三数据块的长度不大于所述第一预设长度,则将所述第三数据块与地址连续的下一数据块进行合并。
6.一种压缩装置,其特征在于,所述装置包括:
接收模块,用于接收多个数据块;
分类模块,用于从所述多个数据块中获得具有相同对象标识的数据块;
合并模块,用于对所述具有相同对象标识的数据块进行合并;
压缩模块,用于对合并后的数据块进行压缩。
7.根据权利要求6所述的装置,其特征在于,所述合并模块包括:
排序单元,用于对于具有相同对象标识的多个数据块,根据每个数据块的地址,对所述多个数据块进行排序;
合并单元,用于按照所述多个数据块的排列顺序,对地址连续的多个数据块进行合并。
8.根据权利要求7所述的装置,其特征在于,所述合并单元包括:
获取子单元,用于按照所述多个数据块的排列顺序,获取第一数据块;
判断子单元,用于判断所述第一数据块的长度是否大于第一预设长度;
确定子单元,用于如果所述第一数据块的长度大于所述第一预设长度,则将所述第一数据块确定为待压缩的数据块;
合并子单元,用于如果所述第一数据块的长度不大于所述第一预设长度,则将所述第一数据块与地址连续的下一数据块进行合并。
9.根据权利要求8所述的装置,其特征在于,所述合并子单元具体用于如果所述第一数据块的长度不大于所述第一预设长度,则按照所述多个数据块的排列顺序,获取具有相同对象标识的多个数据块中所述第一数据块的下一数据块,作为第二数据块;判断所述第二数据块的地址与所述第一数据块的地址是否连续;如果所述第二数据块的地址与所述第一数据块的地址连续,将所述第二数据块与所述第一数据块合并,得到第三数据块;
所述合并子单元还用于如果所述第二数据块的地址与所述第一数据块的地址不连续,则判断所述第一数据块的长度是否大于第二预设长度;如果所述第一数据块的长度大于所述第二预设长度,则将所述第一数据块确定为待压缩的数据块;如果所述第一数据块的长度不大于所述第二预设长度,则将所述第一数据块确定为无需压缩的数据块。
10.根据权利要求9所述的装置,其特征在于,所述合并子单元还用于判断所述第三数据块的长度是否大于所述第一预设长度;如果所述第三数据块的长度大于所述第一预设长度,则将所述第三数据块确定为待压缩的数据块;如果所述第三数据块的长度不大于所述第一预设长度,则将所述第三数据块与地址连续的下一数据块进行合并。
11.一种压缩设备,其特征在于,所述设备包括:存储器和处理器,所述存储器与所述处理器连接,所述存储器存储指令用于使所述处理器执行权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510628949.0A CN105204781B (zh) | 2015-09-28 | 2015-09-28 | 压缩方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510628949.0A CN105204781B (zh) | 2015-09-28 | 2015-09-28 | 压缩方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105204781A true CN105204781A (zh) | 2015-12-30 |
CN105204781B CN105204781B (zh) | 2019-04-12 |
Family
ID=54952500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510628949.0A Active CN105204781B (zh) | 2015-09-28 | 2015-09-28 | 压缩方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105204781B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106383911A (zh) * | 2016-10-09 | 2017-02-08 | 广州唯品会信息科技有限公司 | 应收订单压缩方法及系统 |
CN106447455A (zh) * | 2016-10-09 | 2017-02-22 | 广州唯品会信息科技有限公司 | 基于电子商务管理系统ebs的订单预处理方法及系统 |
CN106484852A (zh) * | 2016-09-30 | 2017-03-08 | 华为技术有限公司 | 数据压缩方法、设备与计算设备 |
CN107340976A (zh) * | 2017-07-14 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种元数据存储方法及系统 |
CN107612554A (zh) * | 2017-09-21 | 2018-01-19 | 国家电网公司 | 数据压缩处理方法 |
CN107634915A (zh) * | 2017-08-25 | 2018-01-26 | 中国科学院计算机网络信息中心 | 数据传输方法、装置及储存介质 |
CN107682016A (zh) * | 2017-09-26 | 2018-02-09 | 深信服科技股份有限公司 | 一种数据压缩方法、数据解压方法及相关系统 |
CN107734023A (zh) * | 2017-09-30 | 2018-02-23 | 努比亚技术有限公司 | 静态资源文件下载方法、移动终端及计算机可读存储介质 |
CN109597572A (zh) * | 2018-11-22 | 2019-04-09 | 上海新储集成电路有限公司 | 一种存储管理方法 |
CN111506271A (zh) * | 2020-06-29 | 2020-08-07 | 南京鹏云网络科技有限公司 | 数据段单元传输差异化管理方法和分布式块存储系统 |
CN112099725A (zh) * | 2019-06-17 | 2020-12-18 | 华为技术有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN112783418A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种存储应用程序数据的方法及移动终端 |
CN113326001A (zh) * | 2021-05-20 | 2021-08-31 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
WO2021258749A1 (zh) * | 2020-06-24 | 2021-12-30 | 苏州浪潮智能科技有限公司 | 一种写请求数据压缩方法、系统、终端及存储介质 |
WO2022206334A1 (zh) * | 2021-03-30 | 2022-10-06 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN116166830A (zh) * | 2023-04-21 | 2023-05-26 | 北京象帝先计算技术有限公司 | 数据处理系统、电子组件、电子设备及数据处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318684A1 (en) * | 1999-03-11 | 2010-12-16 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
CN104216803A (zh) * | 2014-09-29 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种退服节点的数据备份方法及装置 |
US20150178013A1 (en) * | 2013-12-20 | 2015-06-25 | Sandisk Technologies Inc. | Systems and methods of compressing data |
CN104866236A (zh) * | 2012-07-10 | 2015-08-26 | 青岛海信移动通信技术股份有限公司 | 存储介质的数据读取方法和设备 |
-
2015
- 2015-09-28 CN CN201510628949.0A patent/CN105204781B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318684A1 (en) * | 1999-03-11 | 2010-12-16 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
CN104866236A (zh) * | 2012-07-10 | 2015-08-26 | 青岛海信移动通信技术股份有限公司 | 存储介质的数据读取方法和设备 |
US20150178013A1 (en) * | 2013-12-20 | 2015-06-25 | Sandisk Technologies Inc. | Systems and methods of compressing data |
CN104216803A (zh) * | 2014-09-29 | 2014-12-17 | 北京奇艺世纪科技有限公司 | 一种退服节点的数据备份方法及装置 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484852A (zh) * | 2016-09-30 | 2017-03-08 | 华为技术有限公司 | 数据压缩方法、设备与计算设备 |
CN106484852B (zh) * | 2016-09-30 | 2019-10-18 | 华为技术有限公司 | 数据压缩方法、设备与计算设备 |
CN106383911A (zh) * | 2016-10-09 | 2017-02-08 | 广州唯品会信息科技有限公司 | 应收订单压缩方法及系统 |
CN106447455A (zh) * | 2016-10-09 | 2017-02-22 | 广州唯品会信息科技有限公司 | 基于电子商务管理系统ebs的订单预处理方法及系统 |
CN107340976A (zh) * | 2017-07-14 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种元数据存储方法及系统 |
CN107634915A (zh) * | 2017-08-25 | 2018-01-26 | 中国科学院计算机网络信息中心 | 数据传输方法、装置及储存介质 |
CN107612554A (zh) * | 2017-09-21 | 2018-01-19 | 国家电网公司 | 数据压缩处理方法 |
CN107612554B (zh) * | 2017-09-21 | 2020-08-11 | 国家电网公司 | 数据压缩处理方法 |
CN107682016A (zh) * | 2017-09-26 | 2018-02-09 | 深信服科技股份有限公司 | 一种数据压缩方法、数据解压方法及相关系统 |
CN107734023A (zh) * | 2017-09-30 | 2018-02-23 | 努比亚技术有限公司 | 静态资源文件下载方法、移动终端及计算机可读存储介质 |
CN109597572A (zh) * | 2018-11-22 | 2019-04-09 | 上海新储集成电路有限公司 | 一种存储管理方法 |
CN109597572B (zh) * | 2018-11-22 | 2022-05-03 | 上海新储集成电路有限公司 | 一种存储管理方法 |
CN112099725A (zh) * | 2019-06-17 | 2020-12-18 | 华为技术有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
WO2020253406A1 (zh) * | 2019-06-17 | 2020-12-24 | 华为技术有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
US11797204B2 (en) | 2019-06-17 | 2023-10-24 | Huawei Technologies Co., Ltd. | Data compression processing method and apparatus, and computer-readable storage medium |
CN112783418A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 一种存储应用程序数据的方法及移动终端 |
WO2021258749A1 (zh) * | 2020-06-24 | 2021-12-30 | 苏州浪潮智能科技有限公司 | 一种写请求数据压缩方法、系统、终端及存储介质 |
CN111506271A (zh) * | 2020-06-29 | 2020-08-07 | 南京鹏云网络科技有限公司 | 数据段单元传输差异化管理方法和分布式块存储系统 |
WO2022206334A1 (zh) * | 2021-03-30 | 2022-10-06 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN113326001A (zh) * | 2021-05-20 | 2021-08-31 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
CN116166830A (zh) * | 2023-04-21 | 2023-05-26 | 北京象帝先计算技术有限公司 | 数据处理系统、电子组件、电子设备及数据处理方法 |
CN116166830B (zh) * | 2023-04-21 | 2023-08-11 | 北京象帝先计算技术有限公司 | 数据处理系统、电子组件、电子设备及数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105204781B (zh) | 2019-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105204781A (zh) | 压缩方法、装置和设备 | |
CN108427538B (zh) | 全闪存阵列的存储数据压缩方法、装置、及可读存储介质 | |
CN108427539B (zh) | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 | |
JP6537214B2 (ja) | 重複排除方法および記憶デバイス | |
CN106610790B (zh) | 一种重复数据删除方法及装置 | |
US10481797B2 (en) | Data storage device for compressing input data | |
KR20080023191A (ko) | 퓨전메모리 장치 및 방법 | |
US10585856B1 (en) | Utilizing data access patterns to determine compression block size in data storage systems | |
CN110377226B (zh) | 基于存储引擎bluestore的压缩方法、装置及存储介质 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
US9977598B2 (en) | Electronic device and a method for managing memory space thereof | |
US9710166B2 (en) | Systems and methods for predicting compressibility of data | |
CN107850983B (zh) | 计算机系统、存储装置和数据的管理方法 | |
WO2021073635A1 (zh) | 一种数据存储方法及装置 | |
US20150227540A1 (en) | System and method for content-aware data compression | |
CN103150260A (zh) | 重复数据删除方法和装置 | |
CN111625531B (zh) | 基于可编程装置的合并装置、数据合并方法及数据库系统 | |
CN113806341A (zh) | 数据处理方法及存储设备 | |
CN111857574A (zh) | 一种写请求数据压缩方法、系统、终端及存储介质 | |
CN113687773B (zh) | 数据压缩模型训练方法及装置、存储介质 | |
CN111124940B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
CN110309138B (zh) | 数据合并方法、基于fpga的合并器及数据库系统 | |
CN114968090A (zh) | 数据处理方法、装置及计算机存储可读存储介质 | |
CN111061428A (zh) | 一种数据压缩的方法及装置 | |
CN108234552B (zh) | 一种数据存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |