CN109802684B - 进行数据压缩的方法和装置 - Google Patents
进行数据压缩的方法和装置 Download PDFInfo
- Publication number
- CN109802684B CN109802684B CN201811604685.5A CN201811604685A CN109802684B CN 109802684 B CN109802684 B CN 109802684B CN 201811604685 A CN201811604685 A CN 201811604685A CN 109802684 B CN109802684 B CN 109802684B
- Authority
- CN
- China
- Prior art keywords
- data
- hot
- determining
- time point
- written
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/607—Selection between different types of compressors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
- H03M7/6094—Selection strategies according to reasons other than compression rate or data type
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Abstract
本申请提供了一种进行数据压缩的方法和装置,涉及存储技术领域。所述方法包括:存储设备在接收待存储的第一数据后,可以判断第一数据是否属于热写数据,如果第一数据不是热写数据,则对第一数据进行压缩。采用本申请,可以使压缩性能提升。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种进行数据压缩的方法和装置。
背景技术
在存储技术领域中,为了节约存储空间,会对数据进行压缩后进行存储,当前有多种通用的压缩算法,不同的压缩算法有不同的压缩率和压缩性能,一般是压缩率越高,压缩性能就越差,反之压缩率越低,压缩性能就越好。
相关技术中,在存储数据时均采用一种压缩算法,对所有的待写入数据使用同一种压缩算法进行压缩处理,有可能会导致压缩性能较差或者压缩率较低。
发明内容
为了解决相关技术中的问题,本申请实施例提供了一种进行数据压缩的方法和装置。所述技术方案如下:
第一方面,提供了一种进行数据压缩的方法,所述方法包括:
接收第一数据,判断所述第一数据是否属于热写数据,当所述第一数据不是热写数据,则对所述第一数据进行压缩。
本申请实施例所示的方案,在一个系统中,存储设备作为该系统的存储设备,在该系统中有数据往存储设备进行写入时,存储设备可以接收写入的数据(后续可以称为是第一数据),然后可以判断第一数据是否是第一次被写入,如果不是第一次被写入,则确定第一数据是否属于热写数据。如果确定第一数据不是热写数据,可以获取压缩算法,对第一数据进行压缩处理。
在一种可能的实施方式中,所述对所述第一数据进行压缩,包括:当所述第一数据为冷读数据,则使用第一压缩算法压缩所述第一数据,当所述第一数据为热读数据,则使用第二压缩算法压缩所述第一数据;其中,所述第一压缩算法的压缩率大于所述第二压缩算法的压缩率。
本申请实施例所示的方案,存储设备确定出第一数据是热写数据之后,可以确定第一数据是不是冷读数据,如果确定第一数据为冷读数据,则可以获取预先存储的第一压缩算法,然后使用第一压缩算法,对第一数据进行压缩,得到压缩后的第一数据。如果确定第一数据不是冷读数据,则可以获取预先存储的第二压缩算法,然后使用第二压缩算法,对第一数据进行压缩,得到压缩后的第一数据。也就是说,如果第一数据不是热写数据。且是冷读数据,则使用第一压缩算法进行压缩,如果第一数据不是热写数据,且是热读数据,则使用第二压缩算法进行压缩。这样,如果数据是冷读数据且不是热写数据,则表明该数据不会被频繁访问修改,可以采用压缩率较高的压缩算法(第一压缩算法)进行压缩,如果数据是热读数据且不是热写数据,则表明该数据可能会被频繁访问读取,但是修改率较低,则可以采用高解压性能的压缩算法(第二压缩算法)。
在一种可能的实施方式中,所述方法还包括:存储压缩后的第一数据至第一存储区域。
其中,第一存储区域用于存储非热写数据。
本申请实施例所示的方案,存储设备可以控制将压缩后的第一数据存储至第一存储区域。这样,非热写数据存储在第一存储区域,与热写数据实现隔离。
在一种可能的实施方式中,所述方法还包括:接收第二数据,判断所述第二数据是否属于热写数据,当所述第二数据是热写数据,则存储所述第二数据至第二存储区域。
本申请实施例所示的方案,在一个系统中,存储设备作为该系统的存储设备,在该系统中有数据往存储设备进行写入时,存储设备可以接收写入的数据(后续可以称为第二数据)。
然后判断第二数据是否属于热写数据,如果是热写数据,则可以不对第二数据进行压缩,直接将第二数据存储至第二存储区域。这样,可以实现热写数据与非热写数据的隔离存储。
在一种可能的实施方式中,所述判断所述第一数据是否属于热写数据,包括:如果当前的时间点与上一次所述第一数据所对应的存储地址被写入的时间点的差值大于第一预设阈值,则确定所述第一数据不是热写数据,如果当前的时间点与上一次所述第一数据所对应的存储地址被写入的时间点的差值小于或等于第一预设阈值,则确定所述第一数据是热写数据。
本申请实施例所示的方案,存储设备在接收到第一数据时,可以确定当前的时间点,并且可以获取上一次第一数据所对应的存储地址被写入的时间点,也就是第一数据要更新的数据所对应的存储地址被写入的时间点,然后可以确定该时间点与当前的时间点的差值。判断该差值与第一预设阈值的大小,如果该差值大于第一预设阈值,则确定第一数据不是热写数据,如果该差值小于或等于第一预设阈值,则确定第一数据为热写数据。这样,在上述差值大于第一预设阈值时,确定第一数据不是热写数据,这是由于第一数据的更新时间比较长,不会经常被重写,所以第一数据不是热写数据。在上述差值小于或等于第一预设阈值时,确定第一数据是热写数据,这是由于第一数据的更新时间比较短,会经常被重写,所以第一数据是热写数据。所以可以准确的确定出数据是否属于热写数据。
在一种可能的实施方式中,所述方法还包括:如果所述第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数小于或等于第二预设阈值,则确定所述第一数据为冷读数据,如果所述第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数大于所述第二预设阈值,则确定所述第一数据为热读数据。
其中,预设时长可以预设,并且存储至存储设备,第二预设阈值可以预设,并且存储至存储设备中。
本申请实施例所示的方案,存储设备会记录每个存储地址的数据的读取次数,被读取一次,读取次数增加一次。存储设备可以获取第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数,然后判断该读出次数与第二预设阈值的大小,如果该读出次数大于第二预设阈值,则可以确定第一数据为热读数据,如果该读出次数小于或等于第二预设阈值,则确定第一数据为冷读数据。这样,上述在读出次数大于第二预设阈值时,说明第一数据被频繁的读出,所以可以确定为第一数据为热读数据,反之为冷读数据。所以可以准确的确定出数据是否属于热读数据。
第二方面,提供了一种存储设备,该存储设备包括处理器和接口,所述处理器通过执行指令来实现上述第一方面所提供的进行数据压缩的方法。
第三方面,提供了一种进行数据压缩的装置,该装置包括一个或多个模块,该一个或多个模块通过执行指令来实现上述第一方面所提供的进行数据压缩的方法。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有指令,当计算机可读存储介质在存储设备上运行时,使得存储设备执行上述第一方面所提供的进行数据压缩的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在存储设备上运行时,使得存储设备执行上述第一方面所提供的进行数据压缩的方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例中,存储设备在接收待存储的第一数据后,判断第一数据是否属于热写数据,如果第一数据不是热写数据,则对第一数据进行压缩。这样,判断数据是否是热写数据,对于不同的判断结果,选择不同的压缩算法,可以使压缩性能提升或者可以提高压缩率。
另外,由于本申请实施例可以使压缩性能,相应的解压缩性能也会提升。
附图说明
图1是本申请实施例提供的一种压缩率与压缩性能的示意图;
图2是本申请实施例提供的一种存储设备的结构示意图;
图3是本申请实施例提供的一种进行数据压缩的方法流程示意图;
图4是本申请实施例提供的一种容器的示意图;
图5是本申请实施例提供的一种存储数据的示意图;
图6是本申请实施例提供的一种进行数据压缩的装置的结构示意图;
图7是本申请实施例提供的一种进行数据压缩的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于对本申请实施例的理解,下面首先介绍本申请实施例涉及的系统架构、以及所涉及到名词的概念。
本申请实施例可以适用于全闪存储领域中的存储设备,存储设备可以是服务器、服务器集群、存储阵列等,也可以适用于非全闪存领域的存储设备。
压缩率,数据压缩后的大小与数据压缩前的大小的比值。
压缩性能与压缩率的关系,如图1所示,一般是压缩率越高、压缩及解压性能越差,压缩率越低、压缩性能及解压性能越好。
本申请实施例提供了一种进行数据压缩的方法,该方法的执行主体可以是存储设备。
图2示出了本申请实施例中存储设备的结构框图,该存储设备至少可以包括接口201、处理器202。其中,接口201可以用于实现数据的接收,具体实现,接口201可以为硬件接口,如网络接口卡(Network Interface Card,NIC)或主机总线适配器(Host Bus Adaptor,HBA)等,也可以为程序接口模块等。处理器202可以是中央处理单元(Central ProcessingUnit,CPU)和存储器的组合,还可以是现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)或其他硬件。处理器202是存储设备的控制中心,利用各种接口和线路连接整个存储设备的各个部分。
下面将结合具体实施方式,对图3所示的处理流程进行详细的说明,内容可以如下:
步骤301,接收第一数据。
在实施中,在一个系统中,存储设备作为该系统的存储设备,在该系统中有数据往存储设备写入时,存储设备可以接收写入的数据(后续可以称为是第一数据)。
步骤302,判断第一数据是否属于热写数据。
在实施中,存储设备接收到第一数据后,可以判断第一数据是否是第一次被写入,如果不是第一次被写入,则确定第一数据是否属于热写数据。
另外,如果确定第一数据是第一次被写入,则确定第一数据的存储地址,然后将第一数据写入至该存储地址所对应的存储区域。或者,如果确定第一数据是第一次被写入,则确定第一数据的存储地址,然后将第一数据使用预设的压缩算法进行压缩,存储至该存储地址对应的存储区域。
需要说明的是,如果第一数据不是第一次被写入,则说明第一数据是对已经写入在存储设备中的数据进行更新。
可选的,本申请中有多种方式可以确定出第一数据是否属于热写数据,以下给出两种可行的方式:
方式一:如果当前的时间点与上一次第一数据所对应的存储地址被写入的时间点的差值大于第一预设阈值,则确定第一数据不是热写数据,如果当前的时间点与上一次第一数据所对应的存储地址被写入的时间点的差值小于或等于第一预设阈值,则确定第一数据是热写数据。
其中,第一预设阈值可以预设,并且存储至存储设备中,如3小时等。
在实施中,存储设备在接收到第一数据时,可以确定当前的时间点,并且可以获取上一次第一数据所对应的存储地址被写入的时间点,也就是第一数据要更新的数据所对应的存储地址被写入的时间点,然后可以确定该时间点与当前的时间点的差值。判断该差值与第一预设阈值的大小,如果该差值大于第一预设阈值,则确定第一数据不是热写数据,如果该差值小于或等于第一预设阈值,则确定第一数据为热写数据。
例如,第一预设阈值为15分钟,对于上一次第一数据的存储地址被写入的时间点为10点15分,当前的时间点为10点50分,两个时间点的差值为35分钟,大于第一预设阈值,则可以确定第一数据不是热写数据。
需要说明的是,在上述差值大于第一预设阈值时,确定第一数据不是热写数据,这是由于第一数据的更新时间比较长,不会经常被重写,所以第一数据不是热写数据。在上述差值小于或等于第一预设阈值时,确定第一数据是热写数据,这是由于第一数据的更新时间比较短,会经常被重写,所以第一数据是热写数据。
方式二:确定第一数据所要写入的容器,以及在容器中写入的数据块,将当前的时间点与容器中各数据块所对应的存储地址上一次被写入的时间点相减,得到各数据块所对应的存储地址的数据写入时间的差值。确定差值所属的差值范围对应的权值,与差值范围对应的权值相乘,得到各数据块对应的第一乘积。将每个数据块对应的第一乘积相加,得到第一加权值。如果第一加权值大于第三预设阈值,则确定第一数据不是热写数据,如果第一加权值小于或等于第三预设阈值,则确定第一数据是热写数据。
其中,如图4所示,容器(Container)为存储设备中的逻辑存储单元,可以存放多个数据块。第三预设阈值可以预设,并且存储在存储设备中。
在实施中,存储设备在接收到第一数据时,可以首先确定将要写入的容器(例如,可以随机从可写的容器中选取一个容器)、以及写入的数据块,然后确定该容器中当前各数据块所对应的存储地址上一次被写入的时间点,将当前时间点与容器中各数据块所对应的存储地址上一次被写入的时间点相减,得到各数据块所对应的存储地址的数据写入时间的差值。然后获取预先存储的差值范围与权值的对应关系,在该对应关系中,确定各数据块对应的差值所属的差值范围对应的权值。对于任一数据块,将该数据块对应的差值与该数据块对应的差值所对应的权值相乘,得到该数据块对应的第一乘积。然后将该容器中所有数据块的第一乘积相加,得到第一加权值,判断第一加权值与第三预设阈值的大小,如果第一加权值大于第三预设阈值,则可以确定第一数据不是热写数据,如果第一加权值小于或等于第三预设阈值,则可以确定第一数据是热写数据。
方式三:如果当前的时间点与上一次第一数据所对应的存储地址被写入的时间点的差值大于第一预设阈值,则确定第一数据不是热写数据,如果当前的时间点与上一次第一数据所对应的存储地址被写入的时间点的差值小于或等于第五预设阈值,则确定第一数据是热写数据。
其中,第五预设阈值小于第一预设阈值,也可以预设,并且存储在存储设备中。
在实施中,存储设备在接收到第一数据时,可以确定当前的时间点,并且可以获取上一次第一数据所对应的存储地址被写入的时间点,也就是第一数据要更新的数据所对应的存储地址被写入的时间点,然后可以确定该时间点与当前的时间点的差值。判断该差值与第一预设阈值的大小,如果该差值大于第一预设阈值,则确定第一数据不是热写数据,并且可以判断该差值与第五预设阈值的大小,如果该差值小于或等于第五预设阈值,则确定第一数据为热写数据。
另外,如果上述差值大于第五预设阈值,且小于第一预设阈值,则确定第一数据为温写数据。
步骤303,当第一数据不是热写数据,则对第一数据进行压缩。
在实施中,存储设备如果确定第一数据不是热写数据,可以获取压缩算法,对第一数据进行压缩处理。
另外,在第一数据是热写数据时,表明第一数据会频繁被修改,对该类数据做压缩的意义不大,所以不进行压缩处理。
可选的,可以基于数据类型,对第一数据进行压缩,相应的处理可以如下:
当第一数据不是热写数据,且第一数据是非图像数据或者非视频数据,则对第一数据进行压缩。
在实施中,存储设备如果确定第一数据不是热写数据,则可以确定第一数据是否是非图像数据,如果是非图像数据,则可以对第一数据进行压缩。
另外,如果不是非图像数据则不对第一数据进行压缩,这是由于图像数据本身已经是经过压缩后的,现有的无损压缩算法无法再进一步压缩,所以对图像数据不进行进一步压缩。
存储设备如果确定第一数据不是热写数据,则可以确定第一数据是否是非视频数据,如果是非视频数据,则可以对第一数据进行压缩。
另外,如果不是非视频数据则不对第一数据进行压缩,这是由于视频数据本身已经是经过压缩后的,现有的无损压缩算法无法再进一步压缩,所以对视频数据不进行进一步压缩。
另外,如果第一数据不是热写数据,但是第一数据是日志文件,由于每条日志文件都有固定的格式,可以将固定的格式存储为一个模板,其它的数据以这个模板为参考进行压缩,压缩后的数据只存储与模板的差异值。
可选的,还可以基于第一数据的读出信息,对第一数据进行压缩,相应的处理可以如下:
当第一数据为冷读数据,则使用第一压缩算法压缩第一数据。当第一数据为热读数据,则使用第二压缩算法压缩第一数据。
其中,第一压缩算法的压缩率大于第二压缩算法的压缩率,但是第一压缩算法的压缩性能低于第二压缩算法的压缩性能,且第二压缩算法的解压性能高于第一压缩算法的解压性能。例如,第一压缩算法可以是高压缩率的无损压缩算法(Zstandard,ZSTD)、高压缩率的无损压缩算法(GNUzip,GZIP)等,第二压缩算法可以是与LZ4具有相同压缩格式的高压缩率算法,该算法可以是(Abraham Lempel and Jacob Ziv with High compressionratio,LZ4HC)等。
在实施中,存储设备确定出第一数据是热写数据之后,可以确定第一数据是不是冷读数据,如果确定第一数据为冷读数据,则可以获取预先存储的第一压缩算法,然后使用第一压缩算法,对第一数据进行压缩,得到压缩后的第一数据。如果确定第一数据不是冷读数据,则可以获取预先存储的第二压缩算法,然后使用第二压缩算法,对第一数据进行压缩,得到压缩后的第一数据。也就是说,如果第一数据不是热写数据。且是冷读数据,则使用第一压缩算法进行压缩,如果第一数据不是热写数据,且是热读数据,则使用第二压缩算法进行压缩。这样,如果数据是冷读数据且不是热写数据,则表明该数据不会被频繁访问修改,可以采用压缩率较高的压缩算法(第一压缩算法)进行压缩,如果数据是热读数据且不是热写数据,则表明该数据可能会被频繁访问读取,但是修改率较低,则可以采用高解压性能的压缩算法(第二压缩算法)。
需要说明的是,在获取第一压缩算法时,可以是从预先存储的对应关系中获取,该对应关系可以为读出类型与压缩算法的对应关系,读出类型包括热读数据和冷读数据,如表一所示:
表一
读出类型 | 压缩算法 |
冷读数据 | 第一压缩算法 |
热读数据 | 第二压缩算法 |
可选的,本申请中还提供了确定第一数据是否属于冷读数据的处理,相应的三种处理方式可以如下:
方式一:如果第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数小于或等于第二预设阈值,则确定第一数据为冷读数据,如果第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数大于第二预设阈值,则确定第一数据为热读数据。
其中,预设时长可以预设,并且存储至存储设备,第二预设阈值可以预设,并且存储至存储设备中。
在实施中,存储设备会记录每个存储地址的数据的读取次数,被读取一次,读取次数增加一次。
存储设备可以获取第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数,然后判断该读出次数与第二预设阈值的大小,如果该读出次数大于第二预设阈值,则可以确定第一数据为热读数据,如果该读出次数小于或等于第二预设阈值,则确定第一数据为冷读数据。
例如,第二预设阈值为20次,预设时长为2个小时,当前的时间点为10点50分,第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数为30次,大于第二预设阈值,则可以确定第一数据是热读数据。
需要说明的是,上述在读出次数大于第二预设阈值时,说明第一数据被频繁的读出,所以可以确定为第一数据为热读数据,反之为冷读数据。
方式二:确定第一数据所要写入的容器,以及在容器中写入的数据块。确定距离当前时间点之前的预设时长之内各数据块所对应的存储地址的读出次数。确定读出次数所属的读出次数范围对应的权值,将读出次数与读出次数范围对应的权值相乘,得到各数据块的第二乘积。将每个数据块对应的第二乘积相加,得到第二加权值。如果第二加权值大于第四预设阈值,则确定第一数据为热读数据,如果第二加权值小于或等于第四预设阈值,则确定第一数据为冷读数据。
其中,容器(Container)为存储设备中的逻辑存储单元,可以存放多个数据块。预设时长可以与上述提到的预设时长相同,第四预设阈值可以预设,并且存储至存储设备中。
在实施中,存储设备在接收到第一数据时,可以首先确定将要写入的容器、以及写入的数据块,然后确定距离当前时间点预设时长之内的时间段,确定这段时间内各数据块所对应的存储地址的读出次数,然后获取预先存储的读出次数范围与权值的对应关系,从该对应关系中,确定各数据块对应的读出次数所属的读出次数范围所对应的权值,这样,可以得到各数据块分别对应的权值。然后对于任一数据块,将该数据块对应的权值与该数据块对应的读出次数相乘,得到该数据块对应的第二乘积。将该容器中所有数据块对应的第二乘积相加,得到第二加权值。
判断第二加权值与第四预设阈值的大小,如果第二加权值大于第四预设阈值,则确定第一数据为热读数据,如果第二加权值小于或等于第四预设阈值,则确定第一数据为冷读数据。
方式三:如果第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数小于或等于第二预设阈值,则确定第一数据为冷读数据,如果第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数大于第六预设阈值,则确定第一数据为热读数据。
其中,第六预设阈值大于第二预设阈值,也可以是预设,并存储在存储设备中。
在实施中,存储设备可以获取第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数,然后判断该读出次数与第二预设阈值的大小,如果该读出次数小于或等于第二预设阈值,则可以确定第一数据为冷读数据,并且可以判断该读出次数与第六预设阈值的大小,如果该读出次数大于第六预设阈值,则确定第一数据为热读数据。
另外,如果上述读出次数大于第二预设阈值,且小于或等于第六预设阈值,则确定第一数据为温读数据。
可选的,本申请实施例还提供了将压缩后的第一数据存储至某个存储区域的处理,相应的处理可以如下:
存储压缩后的第一数据至第一存储区域。
其中,第一存储区域用于存储非热写数据。
在实施中,存储设备可以控制将压缩后的第一数据存储至第一存储区域。
可选的,本申请实施例还提供了热写数据的存储过程,相应的处理可以如下:
接收第二数据。判断第二数据是否属于热写数据。当第二数据是热写数据,则存储第二数据至第二存储区域。
在实施中,在一个系统中,存储设备作为该系统的存储设备,在该系统中有数据往存储设备进行写入时,存储设备可以接收写入的数据(后续可以称为第二数据)。
然后判断第二数据是否属于热写数据,如果是热写数据,则可以不对第二数据进行压缩,直接将第二数据存储至第二存储区域。
需要说明的是,第二存储区域与上述提到的第一存储区域不相同,第一存储区域存储的是压缩后的数据,第二存储区域存储的是不进行压缩的数据。
例如,如图5所示,第一存储区域为非写热容器,第二存储区域为写热容器,分别用于存储非热写数据、热写数据。
这样,通过对热写数据和非热写数据进行分离存储,热写数据经常被重写,可以将进行垃圾回收(Garbage Collection,GC),而非热写数据不经常被重写,一般不用进行垃圾回收,所以可以提升垃圾回收的效率。
另外,对于上述提到的温写数据和温读数据,如果某个数据是温写数据和温读数据,压缩算法可以是字典压缩算法(Abraham Lempel and Jacob Ziv,LZ4)算法。
通过本申请,能够提升端到端的缩减率至20%以上,对存储设备的整体性能影响小于5%。
本申请实施例中,存储设备在接收待存储的第一数据后,判断第一数据是否属于热写数据,如果第一数据不是热写数据,则对第一数据进行压缩。这样,判断数据是否是热写数据,对于不同的判断结果,选择不同的压缩算法,可以使压缩性能提升或者可以提高压缩率。
另外,由于本申请实施例可以使压缩性能,相应的解压缩性能也会提升。
图6是本申请实施例提供的进行数据压缩的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本申请实施例提供的装置可以实现本申请实施例图2所述的流程,该装置包括:获取模块610、输入模块620和分配模块630,其中:
接收模块610,用于接收第一数据,具体可以用于执行步骤301以及其包含的隐含步骤;
识别模块620,用于判断所述第一数据是否属于热写数据,具体可以用于执行步骤302以及其包含的隐含步骤;
压缩模块630,用于当所述第一数据不是热写数据,则对所述第一数据进行压缩,具体可以用于执行步骤303以及其包含的隐含步骤。
可选的,所述压缩模块630,用于:
当所述第一数据为冷读数据,则使用第一压缩算法压缩所述第一数据;
当所述第一数据为热读数据,则使用第二压缩算法压缩所述第一数据;其中,所述第一压缩算法的压缩率大于所述第二压缩算法的压缩率。
可选的,如图7所示,所述装置还包括:
存储模块640,用于存储压缩后的第一数据至第一存储区域。
可选的,所述接收模块610,还用于接收第二数据;
所述识别模块,还用于判断所述第二数据是否属于热写数据;
所述装置,还包括:
存储模块640,用于当所述第二数据是热写数据,则存储所述第二数据至第二存储区域。
可选的,所述识别模块,用于:
如果当前的时间点与上一次所述第一数据所对应的存储地址被写入的时间点的差值大于第一预设阈值,则确定所述第一数据不是热写数据,如果当前的时间点与上一次所述第一数据所对应的存储地址被写入的时间点的差值小于或等于第一预设阈值,则确定所述第一数据是热写数据。
可选的,所述识别模块,还用于:
如果所述第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数小于或等于第二预设阈值,则确定所述第一数据为冷读数据,如果所述第一数据所对应的存储地址中的数据在距离当前的时间点之前的预设时长之内的读出次数大于所述第二预设阈值,则确定所述第一数据为热读数据。
本申请实施例中,存储设备在接收待存储的第一数据后,判断第一数据是否属于热写数据,如果第一数据不是热写数据,则对第一数据进行压缩。这样,判断数据是否是热写数据,对于不同的判断结果,选择不同的压缩算法,可以使压缩性能提升或者可以提高压缩率。
另外,由于本申请实施例可以使压缩性能,相应的解压缩性能也会提升。
本申请实施例图6所示的数据压缩的装置的具体实现,可以参考图2所描述的存储设备。
需要说明的是:上述实施例提供的进行数据压缩的装置在进行数据压缩时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的进行数据压缩的装置与进行数据压缩的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
Claims (16)
1.一种进行数据压缩的方法,其特征在于,所述方法包括:
接收第一数据;
确定所述第一数据所要写入的容器,根据当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值,确定第一数据是否为热写数据,所述容器为用于存储所述第一数据的存储设备中的逻辑存储单元,所述容器存放多个数据块;
当所述第一数据不是热写数据,则根据距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数,确定所述第一数据是热读数据或冷读数据,在所述第一数据为冷读数据的情况下,使用第一压缩算法压缩所述第一数据,在所述第一数据为热读数据的情况下,使用第二压缩算法压缩所述第一数据,其中,所述第一压缩算法的压缩率大于所述第二压缩算法的压缩率。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
存储压缩后的第一数据至第一存储区域。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收第二数据;
判断所述第二数据是否属于热写数据;
当所述第二数据是热写数据,则存储所述第二数据至第二存储区域。
4.根据权利要求1或2所述的方法,其特征在于,所述根据当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值,确定第一数据是否为热写数据,包括:
确定当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值所属的差值范围对应的权值;
根据所述各数据块分别对应的差值和权值,进行加权处理,得到第一加权值;
如果所述第一加权值大于第三预设阈值,则确定所述第一数据不是热写数据,如果所述第一加权值小于或等于所述第三预设阈值,则确定所述第一数据是热写数据。
5.根据权利要求1所述的方法,其特征在于,所述根据距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数,确定所述第一数据是热读数据或冷读数据,包括:
确定距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数所属的读出次数范围对应的权值;
根据所述各数据块分别对应的读出次数和权值,进行加权处理,得到第二加权值;
如果所述第二加权值大于第四预设阈值,则确定所述定第一数据是热读数据,如果所述第二加权值小于或等于所述第四预设阈值,则确定所述第一数据是冷读数据。
6.一种进行数据压缩的存储设备,其特征在于,所述存储设备包括接口和处理器,其中:
所述接口,用于接收第一数据;
所述处理器,用于:
确定所述第一数据所要写入的容器,根据当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值,确定第一数据是否为热写数据,所述容器为所述存储设备中的逻辑存储单元,所述容器存放多个数据块;
当所述第一数据不是热写数据,则根据距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数,确定所述第一数据是热读数据或冷读数据,在所述第一数据为冷读数据的情况下,使用第一压缩算法压缩所述第一数据,在所述第一数据为热读数据的情况下,使用第二压缩算法压缩所述第一数据,其中,所述第一压缩算法的压缩率大于所述第二压缩算法的压缩率。
7.根据权利要求6所述的存储设备,其特征在于,所述处理器,还用于:
存储压缩后的第一数据至第一存储区域。
8.根据权利要求6或7所述的存储设备,其特征在于,所述接口,还用于接收第二数据;
所述处理器,还用于:
判断所述第二数据是否属于热写数据;
当所述第二数据是热写数据,则存储所述第二数据至第二存储区域。
9.根据权利要求6或7所述的存储设备,其特征在于,所述处理器,用于:
确定当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值所属的差值范围对应的权值;
根据所述各数据块分别对应的差值和权值,进行加权处理,得到第一加权值;
如果所述第一加权值大于第三预设阈值,则确定所述第一数据不是热写数据,如果所述第一加权值小于或等于所述第三预设阈值,则确定所述第一数据是热写数据。
10.根据权利要求6所述的存储设备,其特征在于,所述处理器,用于:
确定距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数所属的读出次数范围对应的权值;
根据所述各数据块分别对应的读出次数和权值,进行加权处理,得到第二加权值;
如果所述第二加权值大于第四预设阈值,则确定所述定第一数据是热读数据,如果所述第二加权值小于或等于所述第四预设阈值,则确定所述第一数据是冷读数据。
11.一种进行数据压缩的装置,其特征在于,所述装置包括:
接收模块,用于接收第一数据;
识别模块,用于:
确定所述第一数据所要写入的容器,根据当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值,确定第一数据是否为热写数据,所述容器为用于存储所述第一数据的存储设备中的逻辑存储单元,所述容器存放多个数据块;
压缩模块,用于当所述第一数据不是热写数据,则根据距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数,确定所述第一数据是热读数据或冷读数据,在所述第一数据为冷读数据的情况下,使用第一压缩算法压缩所述第一数据,在所述第一数据为热读数据的情况下,使用第二压缩算法压缩所述第一数据,其中,所述第一压缩算法的压缩率大于所述第二压缩算法的压缩率。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
存储模块,用于存储压缩后的第一数据至第一存储区域。
13.根据权利要求11或12所述的装置,其特征在于,所述接收模块,还用于接收第二数据;
所述识别模块,还用于判断所述第二数据是否属于热写数据;
所述装置,还包括:
存储模块,用于当所述第二数据是热写数据,则存储所述第二数据至第二存储区域。
14.根据权利要求11或12任一所述的装置,其特征在于,所述识别模块,用于:
确定当前的时间点与所述容器中各数据块所对应的存储地址上一次被写入的时间点的差值所属的差值范围对应的权值;
根据所述各数据块分别对应的差值和权值,进行加权处理,得到第一加权值;
如果所述第一加权值大于第三预设阈值,则确定所述第一数据不是热写数据,如果所述第一加权值小于或等于所述第三预设阈值,则确定所述第一数据是热写数据。
15.根据权利要求11所述的装置,其特征在于,所述识别模块,用于:
确定距离所述当前的时间点之前的预设时长之内所述各数据块所对应的存储地址的读出次数所属的读出次数范围对应的权值;
根据所述各数据块分别对应的读出次数和权值,进行加权处理,得到第二加权值;
如果所述第二加权值大于第四预设阈值,则确定所述定第一数据是热读数据,如果所述第二加权值小于或等于所述第四预设阈值,则确定所述第一数据是冷读数据。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述计算机可读存储介质在存储设备上运行时,使得所述存储设备执行所述权利要求1-5中任一权利要求所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811604685.5A CN109802684B (zh) | 2018-12-26 | 2018-12-26 | 进行数据压缩的方法和装置 |
EP19902311.0A EP3883133A4 (en) | 2018-12-26 | 2019-12-24 | DATA COMPRESSION METHOD AND APPARATUS |
PCT/CN2019/127736 WO2020135384A1 (zh) | 2018-12-26 | 2019-12-24 | 进行数据压缩的方法和装置 |
US17/358,240 US20210318836A1 (en) | 2018-12-26 | 2021-06-25 | Data compression method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811604685.5A CN109802684B (zh) | 2018-12-26 | 2018-12-26 | 进行数据压缩的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109802684A CN109802684A (zh) | 2019-05-24 |
CN109802684B true CN109802684B (zh) | 2022-03-25 |
Family
ID=66557690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811604685.5A Active CN109802684B (zh) | 2018-12-26 | 2018-12-26 | 进行数据压缩的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210318836A1 (zh) |
EP (1) | EP3883133A4 (zh) |
CN (1) | CN109802684B (zh) |
WO (1) | WO2020135384A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109802684B (zh) * | 2018-12-26 | 2022-03-25 | 华为技术有限公司 | 进行数据压缩的方法和装置 |
CN110543281A (zh) * | 2019-07-19 | 2019-12-06 | 苏州浪潮智能科技有限公司 | 一种存储压缩实现方法、装置、设备及存储介质 |
CN111277274A (zh) * | 2020-01-13 | 2020-06-12 | 平安国际智慧城市科技股份有限公司 | 数据压缩方法、装置、设备及存储介质 |
CN112965664A (zh) * | 2021-03-08 | 2021-06-15 | 北京金山云网络技术有限公司 | 一种数据压缩的方法和相关装置 |
US11681456B2 (en) * | 2021-05-19 | 2023-06-20 | Huawei Cloud Computing Technologies Co., Ltd. | Compaction policies for append-only stores |
CN114356225A (zh) * | 2021-12-17 | 2022-04-15 | 得一微电子股份有限公司 | 存储器的数据存储方法、装置、终端设备以及存储介质 |
CN115905168B (zh) * | 2022-11-15 | 2023-11-07 | 本原数据(北京)信息技术有限公司 | 基于数据库的自适应压缩方法和装置、设备、存储介质 |
CN116303409B (zh) * | 2023-05-24 | 2023-08-08 | 北京庚顿数据科技有限公司 | 超高压缩比的工业生产时序数据透明压缩方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526923B (zh) * | 2009-04-02 | 2012-04-04 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和闪存存储系统 |
CN102609360B (zh) * | 2012-01-12 | 2015-03-25 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
US9355112B1 (en) * | 2012-12-31 | 2016-05-31 | Emc Corporation | Optimizing compression based on data activity |
US9395924B2 (en) * | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
CN104125458B (zh) * | 2013-04-27 | 2017-08-08 | 展讯通信(上海)有限公司 | 内存数据无损压缩方法及装置 |
CN103516369B (zh) * | 2013-06-20 | 2016-12-28 | 易乐天 | 一种自适应数据压缩和解压缩的方法和系统及存储装置 |
US20150095553A1 (en) * | 2013-10-01 | 2015-04-02 | International Business Machines Corporation | Selective software-based data compression in a storage system based on data heat |
CN104199784B (zh) * | 2014-08-20 | 2017-12-08 | 浪潮(北京)电子信息产业有限公司 | 一种基于分级存储的数据迁移方法及装置 |
US10101938B2 (en) * | 2014-12-30 | 2018-10-16 | International Business Machines Corporation | Data storage system selectively employing multiple data compression techniques |
US9990308B2 (en) * | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US9985649B1 (en) * | 2016-06-29 | 2018-05-29 | EMC IP Holding Company LLC | Combining hardware and software approaches for inline data compression |
US10503443B2 (en) * | 2016-09-13 | 2019-12-10 | Netapp, Inc. | Systems and methods for allocating data compression activities in a storage system |
US10116329B1 (en) * | 2016-09-16 | 2018-10-30 | EMC IP Holding Company LLC | Method and system for compression based tiering |
CN106775461B (zh) * | 2016-11-30 | 2020-01-21 | 华为技术有限公司 | 热点数据确定方法、设备及装置 |
CN107463606B (zh) * | 2017-06-22 | 2020-11-13 | 浙江力石科技股份有限公司 | 一种用于大数据存储系统的数据压缩引擎及方法 |
US10115437B1 (en) * | 2017-06-26 | 2018-10-30 | Western Digital Technologies, Inc. | Storage system and method for die-based data retention recycling |
CN107465413B (zh) * | 2017-07-07 | 2020-11-17 | 南京城市职业学院 | 一种自适应数据压缩系统及其方法 |
CN108829344A (zh) * | 2018-05-24 | 2018-11-16 | 北京百度网讯科技有限公司 | 数据存储方法、装置及存储介质 |
CN108932738B (zh) * | 2018-07-03 | 2022-08-16 | 南开大学 | 一种基于字典的位片索引压缩方法 |
CN108920107B (zh) * | 2018-07-13 | 2022-02-01 | 深圳忆联信息系统有限公司 | 筛选冷数据的方法、装置、计算机设备及存储介质 |
CN109802684B (zh) * | 2018-12-26 | 2022-03-25 | 华为技术有限公司 | 进行数据压缩的方法和装置 |
-
2018
- 2018-12-26 CN CN201811604685.5A patent/CN109802684B/zh active Active
-
2019
- 2019-12-24 EP EP19902311.0A patent/EP3883133A4/en not_active Withdrawn
- 2019-12-24 WO PCT/CN2019/127736 patent/WO2020135384A1/zh unknown
-
2021
- 2021-06-25 US US17/358,240 patent/US20210318836A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP3883133A4 (en) | 2022-01-19 |
CN109802684A (zh) | 2019-05-24 |
EP3883133A1 (en) | 2021-09-22 |
US20210318836A1 (en) | 2021-10-14 |
WO2020135384A1 (zh) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109802684B (zh) | 进行数据压缩的方法和装置 | |
US20200150890A1 (en) | Data Deduplication Method and Apparatus | |
US20050246362A1 (en) | System and method for dynamci log compression in a file system | |
US20180329921A1 (en) | Method and apparatus for storing time series data | |
CN110799959A (zh) | 一种数据压缩方法与解压方法以及相关设备 | |
CN106170757B (zh) | 一种数据存储方法及装置 | |
US20180300250A1 (en) | Method and apparatus for storing data | |
CN103491152A (zh) | 分布式文件系统中元数据获取方法、装置及系统 | |
CN107329904A (zh) | 数据读取方法及装置 | |
US20220164316A1 (en) | Deduplication method and apparatus | |
CN105512120A (zh) | 一种地震数据压缩方法、压缩存储结构及随机访问方法 | |
US20200183604A1 (en) | Partitioning graph data for large scale graph processing | |
CN108632624B (zh) | 图像数据处理方法、装置、终端设备及可读存储介质 | |
CN111857574A (zh) | 一种写请求数据压缩方法、系统、终端及存储介质 | |
CN115483935A (zh) | 一种数据处理方法及装置 | |
CN111104178A (zh) | 一种动态库加载方法、终端装置及存储介质 | |
CN110288666B (zh) | 一种数据压缩方法及装置 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和系统 | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
CN115203148A (zh) | 修改文件的方法和装置 | |
US20030097523A1 (en) | External storage device within a computer network | |
CN111104053B (zh) | 存储数据的方法、装置和计算机程序产品 | |
CN116470919A (zh) | 数据压缩方法、装置、电子设备及存储介质 | |
CN113051105A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN105049055B (zh) | 一种数据压缩方法和数据解压方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |