一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2021-08-17 13:39:00 来源:中国专利 TAG:数据处理 装置 公开 数据压缩 方法
数据压缩方法及装置与流程

本公开涉及数据处理技术领域,尤其涉及一种数据压缩方法及装置。



背景技术:

目前,为了应对持续增长的数据存储需求,分布式存储系统被广泛应用,通过将数据分散存储在多台独立的设备上以减缓存储压力。此外,通过对数据压缩缩小数据所需的存储容量也成为数据存储中常用的手段。

相关技术中,对数据的压缩算法只能实现增量数据的压缩,无法实现存量数据的压缩。



技术实现要素:

本公开提供一种数据压缩方法及装置,可以解决分布式存储系统存量数据的压缩问题。本公开的技术方案如下:

根据本公开实施例的第一方面,提供一种数据压缩方法,所述数据压缩方法包括:获取数据节点的磁盘中的第一纠删块;将单块所述磁盘中的所述第一纠删块排入一个队列,以生成纠删块队列;对所述纠删块队列中的所述第一纠删块依次进行数据压缩操作。

根据本公开的一个实施例,对所述第一纠删块进行数据压缩操作包括:将所述第一纠删块中压缩率等于或小于预设的压缩率阈值的对象写入第二纠删块中;对所述第一纠删块中压缩率大于所述压缩率阈值的所述对象进行压缩;将压缩后的所述对象写入所述第二纠删块中;所述第一纠删块中压缩率大于所述压缩率阈值的所述对象全部压缩完成后,将所述磁盘中的所述第一纠删块替换为所述第二纠删块。

根据本公开的一个实施例,所述压缩后的所述对象中包括已压缩标志位,所述对所述第一纠删块中压缩率大于预设的压缩率阈值的所述对象进行压缩,包括:检测所述第一纠删块中是否存在包括所述已压缩标志位的所述对象;若所述第一纠删块中不存在包括所述已压缩标志位的所述对象,则对所述第一纠删块中压缩率大于所述压缩率阈值的所述对象进行压缩。

根据本公开的一个实施例,所述数据压缩方法还包括:若所述第一纠删块中存在包括所述已压缩标志位的所述对象,则不对所述第一纠删块进行压缩。

根据本公开的一个实施例,所述压缩率阈值的取值范围为3%-7%。

本公开的实施例提供的技术方案至少带来以下有益效果:

本公开实施例中,先获取数据节点的磁盘中的第一纠删块,并将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列,再对纠删块队列中的第一纠删块依次进行数据压缩操作。针对单块磁盘中的第一纠删块分别进行压缩,无需重新读取数据,避免了存量数据的大规模挪动,通过简单的操作实现了分布式存储系统中存量数据的压缩问题。在已压缩过的对象中设置已压缩标志位,当在第一纠删块中检测出任意一个已经完成压缩的对象时,便可认为该第一纠删块已经进行过数据压缩,以此对第一纠删块进行压缩前的预检查,有效地避免了宕机重启之后的重复压缩。

根据本公开实施例的第二方面,提供一种数据压缩装置,所述数据压缩装置包括:获取模块,用于获取数据节点的磁盘中的第一纠删块;生成模块,用于将单块所述磁盘中的所述第一纠删块排入一个队列,以生成纠删块队列;压缩模块,用于对所述纠删块队列中的所述第一纠删块依次进行数据压缩操作。

根据本公开实施例的第三方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本公开第一方面实施例所述的数据压缩方法。

根据本公开实施例的第四方面,提供一种存储有计算机指令的计算机可读存储介质,所述计算机指令用于使所述计算机执行如本公开第一方面实施例所述的数据压缩方法。

根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本公开第一方面实施例所述的数据压缩方法。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。

图1是根据一示例性实施例示出的一种数据压缩方法的流程图。

图2是根据一示例性实施例示出的另一种数据压缩方法的流程图。

图3是根据一示例性实施例示出的另一种数据压缩方法的流程图。

图4是根据一示例性实施例示出的另一种数据压缩方法的整体流程图。

图5是根据一示例性实施例示出的一种数据压缩装置的框图。

图6是根据一示例性实施例示出的一种电子设备的框图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种数据压缩方法的流程图,如图1所示,本实施例提出的数据压缩方法,包括以下步骤:

s101,获取数据节点的磁盘中的第一纠删块。

本公开实施例的数据压缩方法具体可应用于本公开实施例提供的数据压缩装置中,该数据压缩装置可以设置在电子设备的存储装置中。

具体实施中,为减缓存储压力,分布式存储系统将经过纠删码(erasurecode,简称ec)编码的数据块即第一纠删块(block)分散存储在多个数据节点的磁盘中。在本公开实施例中,以数据节点为粒度,每个数据节点以磁盘为粒度,从数据节点的磁盘中获取第一纠删块。

s102,将单块磁盘中的第一纠删块排入一队列,以生成纠删块队列。

具体的,根据步骤s101获取的第一纠删块,将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列。

s103,对纠删块队列中的第一纠删块依次进行数据压缩操作。

具体的,对步骤s102生成的纠删块队列中的第一纠删块依次进行数据压缩操作。

具体实施中,对于一个数据节点,有几块磁盘便可以发起几个常驻线程对每个磁盘中的第一纠删块进行上述数据压缩步骤,以节约压缩时间。

本公开实施例中,先获取数据节点的磁盘中的第一纠删块,并将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列,再对纠删块队列中的第一纠删块依次进行数据压缩操作。针对单块磁盘中的第一纠删块分别进行压缩,无需重新读取数据,避免了存量数据的大规模挪动,通过简单的操作实现了分布式存储系统中存量数据的压缩问题。

图2是根据一示例性实施例示出的另一种数据压缩方法的流程图,如图2所示,在图1所示实施例的基础上,步骤s103中的“对第一纠删块进行数据压缩操作”具体包括以下步骤:

s201,将第一纠删块中压缩率等于或小于预设的压缩率阈值的对象写入第二纠删块中。

具体的,对每个第一纠删块进行压缩时,可以以第一纠删块中的对象(object)为粒度,对第一纠删块中各对象的压缩率进行判断,若第一纠删块中对象的压缩率等于或小于预设的压缩率阈值,则该对象无需进行数据压缩,可以直接写入第二纠删块中。其中,第二纠删块为相对于第一纠删块建立的临时的新的纠删块。其中,为避免压缩率阈值过小,导致系统的压缩工作量大,浪费系统资源,或者压缩率阈值过大,导致数据压缩后仍占用大量的存储空间,压缩率阈值的取值范围可以设置为3%-7%,具体取值范围和具体取值本公开不做限定。

s202,对第一纠删块中压缩率大于预设的压缩率阈值的对象进行压缩。

具体的,若第一纠删块中对象的压缩率大于预设的压缩率阈值,则对该对象进行压缩。

s203,将压缩后的对象写入第二纠删块中。

具体的,将经过步骤s202压缩后的对象写入第二纠删块。

s204,第一纠删块中压缩率大于压缩率阈值的对象全部压缩完成后,将磁盘中的第一纠删块替换为第二纠删块。

具体的,通过步骤s201-s203将第一纠删块中压缩率等于或小于压缩率阈值的对象写入第二纠删块,且将第一纠删块中压缩率大于压缩率阈值的对象全部压缩完成并写入第二纠删块后,即将第一纠删块中的全部对象直接或压缩后写入第二纠删块后,将上述第一纠删块替换为第二纠删块,以第二纠删块作为新的第一纠删块加载入数据节点的磁盘中。

进一步的,如图3所示,在上述实施例的基础上,压缩后的对象中可以包括已压缩标志位,步骤s202中的“对第一纠删块中压缩率大于预设的压缩率阈值的对象进行压缩”具体包括以下步骤:

s301,检测第一纠删块中是否存在包括已压缩标志位的对象。

具体的,对第一纠删块进行数据压缩时,数据压缩装置首先遍历第一纠删块中的所有对象,检测第一纠删块中是否存在包括已压缩标志位的对象。此处需要说明的是,对于第一纠删块中的每一个压缩率大于预设压缩率阈值的对象,在压缩完成后,都在该对象的起始数据端(header)设置已压缩标志位,用于标志该对象已经经过压缩,从而可以通过识别上述对象的header中是否包括已压缩标志位,判断该对象是否已经完成数据压缩,以避免重复压缩。

s302,若第一纠删块中不存在包括已压缩标志位的对象,则对第一纠删块中压缩率大于压缩率阈值的对象进行压缩。

具体的,通过步骤s301的检测,若第一纠删块中不存在包括已压缩标志位的对象,则可以认为该第一纠删块未经过数据压缩,数据压缩装置将对该纠删块进行数据压缩,即对该第一纠删块中压缩率大于压缩率阈值的对象进行压缩。具体实施过程,与上述实施例相同,此处不再赘述。

进一步的,在上述实施例的基础上,本公开实施例的数据压缩方法还包括:

s303,若第一纠删块中存在包括已压缩标志位的对象,则不对第一纠删块进行压缩。

具体的,通过步骤s301的检测,若第一纠删块中存在已压缩标志位的对象,即检测中若遇到任何一个存在已压缩标志位的对象,则认为该第一纠删块已经完成了数据压缩,无需再对上述第一纠删块进行压缩。

此处需要说明的是,对一个数据节点磁盘中的数据进行压缩时,只有当第一纠删块中所有压缩率大于压缩率阈值的对象均完成压缩且写入第二纠删块时,第二纠删块才会替换第一纠删块被载入磁盘。若存在压缩率大于压缩率阈值的对象未压缩,系统宕机重启时加载的仍然是未经过压缩的第一纠删块,即没有一个对象经过压缩的纠删块。因此在对第一纠删块进行检测时,当检测到任意一个包括已压缩标志位的对象时,便可认为该第一纠删块已经完成数据压缩,避免了系统宕机重启之后的重复压缩。

本公开实施例中,先获取数据节点的磁盘中的第一纠删块,并将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列,再对纠删块队列中的第一纠删块依次进行数据压缩操作。针对单块磁盘中的第一纠删块分别进行压缩,无需重新读取数据,避免了存量数据的大规模挪动,通过简单的操作实现了分布式存储系统中存量数据的压缩问题。在已压缩过的对象中设置已压缩标志位,当在第一纠删块中检测出任意一个已经完成压缩的对象时,便可认为该第一纠删块已经进行过数据压缩,以此对第一纠删块进行压缩前的预检查,有效地避免了宕机重启之后的重复压缩。

为清楚说明本公开实施例的数据压缩方法,下面结合图4来进行详细描述。图4是根据一示例性实施例示出的一种数据压缩方法的整体流程图,如图4所示,包括以下步骤:

s401,获取数据节点的磁盘中的第一纠删块。

s402,将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列。

对纠删块队列中的第一纠删块依次进行数据压缩操作,具体包括以下步骤:

s403,检测第一纠删块中是否存在包括已压缩标志位的对象。

若否,则执行步骤s404-s407对第一纠删块进行压缩,若是,则执行步骤s408不对第一纠删块进行压缩。

s404,将第一纠删块中压缩率等于或小于预设的压缩率阈值的对象写入第二纠删块中。

s405,对第一纠删块中压缩率大于满足压缩率阈值的对象进行压缩。

s406,将压缩后的对象写入第二纠删块中。

s407,第一纠删块中压缩率大于满足压缩率阈值的对象全部压缩完成后,将磁盘中的第一纠删块替换为第二纠删块。

s408,不对第一纠删块进行压缩。

图5是根据一示例性实施例示出的一种数据压缩装置的框图,如图5所示,本示例性实施例中的数据处理装置500具体可包括:获取模块501、生成模块502和压缩模块503,其中:

获取模块501,用于获取数据节点的磁盘中的第一纠删块。

生成模块502,用于将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列。

压缩模块503,用于对纠删块队列中的第一纠删块依次进行数据压缩操作。

进一步地,压缩模块503具体可包括:第一写入子模块,用于将第一纠删块中压缩率等于或小于预设的压缩率阈值的对象写入第二纠删块中;压缩子模块,用于对第一纠删块中压缩率大于压缩率阈值的对象进行压缩;第二写入子模块,用于将压缩后的对象写入第二纠删块中;替换子模块,用于第一纠删块中压缩率大于压缩率阈值的对象全部压缩完成后,将磁盘中的第一纠删块替换为第二纠删块。

进一步地,压缩后的对象中包括已压缩标志位,压缩子模块具体可包括:检测单元,用于检测第一纠删块中是否存在包括已压缩标志位的对象;第一压缩单元,用于若第一纠删块中不存在包括已压缩标志位的对象,则对第一纠删块中压缩率大于压缩率阈值的对象进行压缩。

进一步地,数据压缩装置500还包括:第二压缩单元,用于若第一纠删块中存在包括已压缩标志位的对象,则不对第一纠删块进行压缩。

进一步地,压缩率阈值的取值范围为3%-7%。

本数据压缩装置中,先获取数据节点的磁盘中的第一纠删块,并将单块磁盘中的第一纠删块排入一个队列,以生成纠删块队列,再对纠删块队列中的第一纠删块依次进行数据压缩操作。针对单块磁盘中的第一纠删块分别进行压缩,无需重新读取数据,避免了存量数据的大规模挪动,通过简单的操作实现了分布式存储系统中存量数据的压缩问题。在已压缩过的对象中设置已压缩标志位,当在第一纠删块中检测出任意一个已经完成压缩的对象时,便可认为该第一纠删块已经进行过数据压缩,以此对第一纠删块进行压缩前的预检查,有效地避免了宕机重启之后的重复压缩。

为了实现上述实施例,本公开还提供了一种电子设备,如图6所示,电子设备600包括:至少一个处理器601;与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行本公开实施例的数据压缩方法。

为了实现上述实施例,本公开还提供了一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备600的至少一个处理器601执行时,使得电子设备600能够执行以完成上述实施例的数据压缩方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

为了实现上述实施例,本公开还提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述实施例的数据压缩方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜