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

文档序号:11917351阅读:337来源:国知局
数据压缩的方法及装置与流程

本发明涉及数据处理的技术领域,特别是涉及一种数据压缩的方法及装置。



背景技术:

当今社会每天都有海量的数据产生,产生的这些数据很多都是重复的数据,如何合理的分析运用这些数据并将其保存在磁盘中是一项非常重大的任务。保存如此巨大的数据需要太多的磁盘来完成,这样将会大大地增加一个企业的成本,尤其是互联网公司。因此在对数据进行保存之前需要对数据进行压缩处理,这样可以大大的节约磁盘空间,提高磁盘的空间利用率。

目前压缩的产品有很多,但是大多数的压缩都是基于固定的块进行数据输入,然后这些输入的数据经过压缩后不再具有固定的大小,这些数据在磁盘保存也很难具有统一的格式,产生了很多磁盘碎片,对磁盘空间造成了巨大的浪费。此外,压缩产品都不是采用实时压缩的形式,他们首先将数据存储磁盘,然后将数据从磁盘读取出来进行压缩,并且这些数据读取都是采用顺序的方式进行读取,然后进行压缩。这种方式的弊端是这些压缩数据是基于磁盘的位置而非是基于时间的,因为同一个时间窗口的IO具有更大的关联度。



技术实现要素:

本发明的目的是提供一种数据压缩的方法及装置,以克服现有技术数据压缩后写入磁盘,磁盘中产生很多磁盘碎片,占用大量的磁盘空间,造成磁盘空间浪费的缺陷。

为了实现上述目的,本发明采用以下的技术方案:

一种数据压缩的方法,包括以下步骤:

数据写入到压缩缓存;

压缩引擎以固定容量的方式从压缩缓存中读取数据;

压缩引擎对上述读取的数据进行压缩。

优选地,压缩引擎根据时间窗口,并以固定容量的方式从压缩缓存中读取数据。

优选地,数据写入到压缩缓存之前,还包括:设置时间窗口和固定容量的值。

优选地,同一个时间窗口的数据通过元数据记录。

优选地,压缩引擎以固定容量的方式从压缩缓存中读取数据之后,还包括:判断数据的容量是否达到预先设置的固定容量值,如果是,则压缩引擎对读取的数据进行压缩;如果否,则继续读取数据。

优选地,数据写入到压缩缓存之后,还包括:向主机返回写数据成功。

优选地,压缩引擎对上述读取的数据进行压缩之后,还包括:将压缩后的数据写入到磁盘。

本发明还提供一种数据压缩的装置,包括:

数据写入模块,用于数据写入到压缩缓存;

数据读取模块,分别与数据写入模块和数据压缩模块连接,用于压缩引擎以固定容量的方式从压缩缓存中读取数据;

数据压缩模块,用于压缩引擎对上述读取的数据进行压缩。

优选地,压缩引擎根据时间窗口,并以固定容量的方式从压缩缓存中读取数据。

优选地,还包括:信息发送模块,用于向主机返回写数据成功。

优选地,还包括:判断模块,用于判断数据的容量是否达到预先设置的固定容量值。

优选地,还包括:数据写入磁盘模块,用于将压缩后的数据写入到磁盘。

优选地,还包括:参数设置模块,用于设置时间窗口和固定容量的值。

与现有技术相比,本发明具有以下优点:

1. 目前大多数的数据压缩都是基于不同容量进行数据写入,然后这些写入的数据经过压缩后也不具有相同容量,因此,这些数据在磁盘中的保存很难具有统一的格式,这样增加了数据之间的间隙,产生了很多磁盘碎片。本发明压缩引擎将写入到压缩缓存中的数据以固定容量的方式进行读取并压缩,压缩后的数据以固定容量的方式按顺序写入到磁盘,这样数据在磁盘中就具有统一的格式,避免了压缩后的数据之间的间隙,从而减少了磁盘碎片,提升了磁盘空间利用率。

2.数据是采用随机的方式存储到磁盘上,但是同一个时间窗口的数据往往具有较大的关联度。本发明压缩引擎是根据时间窗口从压缩缓存中读取数据,将同一时间窗口具有关联度的数据进行压缩,提高了压缩后数据的预读准确度,进而提升系统的性能。

3.现有技术数据压缩的过程是,先将数据写入到磁盘,然后从磁盘中读取数据,再进行压缩,最后将压缩后的数据写入到磁盘。而本发明先将数据写入到压缩缓存中,压缩引擎对数据读取并进行压缩,最后将压缩后的数据写入到磁盘,与现有技术不同的是,本发明不需要先将数据写入到磁盘,而是先将数据写入到压缩缓存,本发明将数据写入磁盘之前就已经完成了对数据的压缩,实现了实时压缩,大大提高了数据性能和磁盘的利用率。

附图说明

图1是本发明一种数据压缩的装置的一种结构示意图。

图2是本发明一种数据压缩的方法一种实例的流程示意图;

图3是图2具体实例的流程示意图。

图4是本发明一种数据压缩的装置的另一种结构示意图;

图5为本发明一种数据压缩的方法另一种实例的流程示意图。

具体实施方式

为了便于理解,对本发明中出现的部分名词作以下解释说明:

时间窗口,在限定的时间范围内完成特定的作业任务,这一限定的时间范围,称之为时间窗口。

元数据(Metadata),是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据,元数据包含与另一个模块进行交互所需的全部信息。

滑动分块算法,指数据分块技术的一种方法,将数据文件划分为较小的数据块,滑动窗口顺序的从数据文件的起始位置部向后逐一字节滑动,当滑动窗口与预设的值匹配时,就产生一个分块。这个数据块的长度被指定在一个区间范围内获取。

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:

实施例一:本发明的一种数据压缩的装置如图1所示,包括数据写入模块12、数据读取模块14、数据压缩模块16、参数设置模块11、判断模块15、信息发送模块13和数据写入磁盘模块17;所述参数设置模块11依次顺序与数据写入模块12、信息发送模块13、数据读取模块14、判断模块15、数据压缩模块16和数据写入磁盘模块17。

参数设置模块11用于预先设置时间窗口和固定容量的值;数据写入模块12用于将数据写入到压缩缓存中;信息发送模块13用于向主机返回写数据成功;数据读取模块14用于压缩引擎以固定容量的方式从压缩缓存中读取数据或者压缩引擎根据时间窗口以固定容量的方式从压缩缓存中读取数据;判断模块15用于判断数据的容量是否达到预先设置的固定容量值,如果是,则压缩引擎对读取的数据进行压缩;如果否,则继续读取数据;数据压缩模块16用于压缩引擎对读取的固定容量数据进行压缩;数据写入磁盘模块17用于将压缩后的数据写入到磁盘。

实施例二:本发明一种数据压缩的方法如图2所示,包括以下步骤:

步骤S201,预先在系统文件中设置时间窗口和固定容量的值。

步骤S202,将数据写入到压缩缓存中。

步骤S203,向主机返回写数据成功,实现了在线的实时数据压缩。

步骤S204,压缩引擎根据时间窗口,并以固定容量的方式从压缩缓存中读取数据;同一个时间窗口的数据具有较高的关联度,采用时间窗口的方式提高了压缩后数据的预读准确度,进而提升系统的性能。同一个时间窗口的数据通过元数据记录,缩短了压缩引擎从压缩缓存中读取数据的时间。

步骤S205,判断数据的容量是否达到预先设置的固定容量值,如果是,则转步骤S206;如果否,则转步骤S204。

步骤S206,压缩引擎对读取的固定容量的数据进行压缩。

步骤S207,压缩后的数据以固定容量的方式按顺序写入到磁盘空间上,避免了数据之间的空隙,从而减少了磁盘碎片,提升了磁盘的空间利用率。

本发明压缩引擎将写入到压缩缓存中的数据以固定容量的方式进行读取,压缩后的数据以固定容量的方式按顺序写入到磁盘空间,这样数据在磁盘中就具有统一的格式,避免了压缩后数据之间的间隙,减少了磁盘碎片,节约了磁盘的存储空间。本发明采用基于时间窗口的压缩而非基于位置的压缩,这样可以提高压缩后数据的预读准确度,加快读取数据的速度。本发明将数据写入磁盘之前就已经完成了对数据的压缩,实现了实时压缩。

下面结合具体实施例进行进一步详细描述,如图3所示,本实施例包括以下步骤:

步骤S301,预先在系统文件中设置时间窗口为10ms和固定容量为4K。要选择一个合适的时间窗口,时间窗口越长压缩率越高,但是磁盘写入时性能越低,一般情况下时间窗口为10ms。

步骤S302,将数据写入到压缩缓存中。

步骤S303,向主机返回写数据成功。

步骤S304,压缩缓存中的数据按时序每4K形成一个数据块(变长输入、定长输出),压缩引擎每10ms从压缩缓存中读取一次数据块。

步骤S305,采用滑动分块算法,判断每个数据块的容量是否达到4K,如果是,则转步骤S306;如果否,则转步骤S304。

步骤S306,压缩引擎对至少一个容量为4K的数据块中的数据进行压缩,使每个容量为4K的数据块按90%的压缩率压缩成容量为3.6K的数据块。

步骤S307,将容量为3.6K的数据块中的数据写入到磁盘。

实施例三:本发明另一种数据压缩的装置如图4所示,包括数据写入模块41、数据读取模块42和数据压缩模块43,数据读取模块42分别与数据写入模块41和数据压缩模块43连接。

数据写入模块41用于数据写入到压缩缓存;数据读取模块42用于压缩引擎以固定容量的方式从压缩缓存中读取数据;数据压缩模块43用于压缩引擎对上述读取的数据进行压缩。

实施例四:本发明另一种数据压缩的方法如图5所示,包括以下步骤:

S501,数据写入到压缩缓存。

S502,压缩引擎以固定容量的方式从压缩缓存中读取数据。

S503,压缩引擎对读取的数据进行压缩。

本发明写入压缩缓存中的数据是非固定容量,压缩引擎以固定容量的方式读取数据并进行压缩,压缩后的数据又以固定容量的形式写入到磁盘,这些数据具有统一的格式,从而减少了磁盘碎片,提升了磁盘的空间利用率。

以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1