CN106484852B - 数据压缩方法、设备与计算设备 - Google Patents
数据压缩方法、设备与计算设备 Download PDFInfo
- Publication number
- CN106484852B CN106484852B CN201610878348.XA CN201610878348A CN106484852B CN 106484852 B CN106484852 B CN 106484852B CN 201610878348 A CN201610878348 A CN 201610878348A CN 106484852 B CN106484852 B CN 106484852B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- hash table
- byte
- data block
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种数据压缩方法,常用于存储阵列中。该方法通过将参考数据块所在的存储空间的起始逻辑地址的末尾n bit地址设置为0,使得建立该参考数据块对应的哈希表的过程更加简单,提升了数据压缩的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据压缩方法,以及该方法对应的数据压缩设备,以及用于执行该方法的计算设备。
背景技术
压缩技术被广泛使用在数据存储、数据传输等领域,传统压缩技术包括了字典压缩,又称为Abraham Lempel and Jacob Ziv(简称:LZ)压缩,以及Delta压缩,又称为相似压缩。
LZ压缩以字节/字符串的粒度进行数据压缩。以待压缩的数据block为4M Byte且窗口大小为4Byte为例,每次压缩均使用当前窗口内的4Byte与该待压缩数据block的历史数据进行匹配,如果该待压缩数据block的历史数据中存在与该4Byte数据相同的数据,那么该4Byte数据对应的编码只需要记录该历史数据的位置信息和长度,这样在解压缩的过程中,根据该4Byte数据对应的编码以及该历史数据,就可以恢复出该4Byte数据。
Delta压缩与LZ压缩不同之处在于,与待压缩数据block的当前窗口内的数据相匹配的是参考数据块内的数据。当前的Delta压缩的压缩速度仍有待提高。
发明内容
本申请提供了一种数据压缩方法,以提升数据压缩的速度。
本申请的第一方面,提供了一种数据压缩方法,该数据压缩方法可以由存储控制器或数据压缩设备执行,以存储控制器执行为例。该方法包括:首先,存储控制器分配存储空间,该存储空间的起始逻辑地址的末尾N bit为0,N为大于1的整数。随后,存储控制器将参考数据块存入该存储空间,该参考数据块的大小为2n Byte,n不大于N。由于该参考数据块的起始逻辑地址的末尾N bit为0,则该参考数据块的起始逻辑地址的有效部分均为0,该参考数据块的起始逻辑地址的高于n bit的部分均为无效部分,因为参考数据块的每个Byte数据的逻辑地址中高于n bit的部分均相同。随后,存储控制器执行步骤1.1至步骤1.5以建立该参考数据块对应的哈希表,该哈希表的key为该参考数据块中(m+1)Byte数据进行哈希运算生成的哈希值,该哈希表的value包括该参考数据块中(m+1)Byte数据的起始逻辑地址的末尾n bit,m为大于0的整数。执行步骤1.1至步骤1.5以建立该参考数据块对应的哈希表,该哈希表的key为该参考数据块中(m+1)Byte数据进行哈希运算生成的哈希值,该哈希表的value包括该参考数据块中(m+1)Byte数据的起始逻辑地址的末尾n bit,m为大于0的整数。步骤1.1,对该参考数据块中第a Byte数据到第a+m Byte数据进行哈希运算生成第一哈希值,a为大于0的整数且首次执行步骤1.1时a的取值为1;步骤1.2,判断哈希表中是否存在与该第一哈希值相同的key;步骤1.3,若该哈希表中存在与该第一哈希值相同的key,根据该第a Byte数据的逻辑地址的末尾n bit更新该哈希表中该第一哈希值对应的value;步骤1.4,若该哈希表中不存在与该第一哈希值相同的key,将该第一哈希值和该第a Byte数据的逻辑地址的末尾n bit加入该哈希表;步骤1.5,判断a是否等于(2n-m),若a等于(2n-m),该哈希表建立完毕,若a小于(n-m),a增加j且再次执行步骤1.1至步骤1.5,j为大于0的正整数。通过循环执行以上步骤,将该参考数据块的窗口从第1Byte右移至最后1Byte,使得参考数据块中每(m+1)Byte数据对应的第一哈希值和该(m+1)Byte数据的相对地址都会记录在该哈希表中,以便后续使用该哈希表。在该哈希表建立完毕后,获取待压缩数据,根据该哈希表确定该参考数据块中与该待压缩数据的窗口内的(m+1)Byte数据相同的数据。根据该哈希表,可以确定待压缩数据的窗口内的数据与参考数据块中的数据是否有重叠的部分,如果有重叠的部分,则可以根据该重叠的部分进行编码。
以上提供的数据压缩方法中,通过将存储参考数据块的存储空间的起始逻辑地址的末尾N bit设置为0,简化了该参考数据块对应的哈希表的生成过程的复杂程度,提升了生成哈希表的效率,也即提升了压缩效率。
结合第一方面,在第一方面的第一种实现方式中,该根据该哈希表确定该参考数据块中与该待压缩数据的窗口内的(m+1)Byte数据相同的数据包括多轮匹配处理,每轮匹配处理包括步骤2.1至2.4:步骤2.1,对该待压缩数据中第b Byte数据到第b+m Byte数据进行哈希运算生成第二哈希值,b为大于0的整数且首轮匹配处理中b的取值为1;步骤2.2,判断该哈希表中是否存在与该第二哈希值相同的key;步骤2.3,若该哈希表中存在与该第二哈希值相同的key,根据该哈希表中该第二哈希值对应的value,获取该参考数据块在本轮匹配处理中的匹配数据,该本轮匹配处理中的匹配数据为该参考数据块中与该待压缩数据中第b Byte后的数据相同的数据;步骤2.4,若该哈希表中不存在与该第二哈希值相同的key,b增加stride,stride为大于0整数。步骤2.3和步骤2.4后,如果第b+m Byte数据为该待压缩数据的最后1Byte数据,则结束压缩。通过上述步骤,获取了待压缩数据和参考数据块相同的匹配数据,以便生成压缩编码。
结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,该每轮匹配处理中stride的取值为:lit_len等于(本轮匹配处理中b的取值减去B的取值),其中,上一轮匹配处理中的最后1Byte匹配数据为该待压缩数据的第B Byte数据,P为大于0的整数。
随着匹配不上的数据的长度的增加,增加stride的取值能够加快压缩速度。而由于数据压缩过程中,lit_len这一参数为生成压缩编码本来就必须维护的参数,因此将stride取值为也没有引进新的参数,减轻了存储控制器的工作负担。
本申请的第二方面,提供了一种数据压缩设备,该数据压缩设备用于执行第一方面提供的数据压缩方法。该设备包括:通信接口和处理芯片,该通信接口与该处理芯片相连;该处理芯片,用于分配存储空间,该存储空间的起始逻辑地址的末尾N bit为0,N为大于1的整数;该通信接口,用于接收参考数据块,并将该参考数据块存入该存储空间,该参考数据块的大小为2n Byte,n不大于N;该处理芯片,还用于执行步骤1.1至步骤1.5以建立该参考数据块对应的哈希表,该哈希表的key为该参考数据块中(m+1)Byte数据进行哈希运算生成的哈希值,该哈希表的value包括该参考数据块中(m+1)Byte数据的起始逻辑地址的末尾n bit,m为大于0的整数;步骤1.1,对该参考数据块中第aByte数据到第a+m Byte数据进行哈希运算生成第一哈希值,a为大于0的整数且首次执行步骤1.1时a的取值为1;步骤1.2,判断哈希表中是否存在与该第一哈希值相同的key;步骤1.3,若该哈希表中存在与该第一哈希值相同的key,根据该第a Byte数据的逻辑地址的末尾n bit更新该哈希表中该第一哈希值对应的value;步骤1.4,若该哈希表中不存在与该第一哈希值相同的key,将该第一哈希值和该第a Byte数据的逻辑地址的末尾n bit加入该哈希表;步骤1.5,判断a是否等于(2n-m),若a等于(2n-m),该哈希表建立完毕,若a小于(n-m),a增加j且再次执行步骤1.1至步骤1.5,j为大于0的正整数;该处理芯片,还用于在该哈希表建立完毕后,获取待压缩数据,根据该哈希表确定该参考数据块中与该待压缩数据的窗口内的(m+1)Byte数据相同的数据。
以上提供的数据压缩设备,通过将存储参考数据块的存储空间的起始逻辑地址的末尾N bit设置为0,简化了该参考数据块对应的哈希表的生成过程的复杂程度,提升了生成哈希表的效率,也即提升了压缩效率。
结合第二方面,在第二方面的第一种实现方式中,该根据该哈希表确定该参考数据块中与该待压缩数据的窗口内的(m+1)Byte数据相同的数据包括多轮匹配处理,每轮匹配处理包括步骤2.1至2.4:步骤2.1,对该待压缩数据中第b Byte数据到第b+m Byte数据进行哈希运算生成第二哈希值,b为大于0的整数且首轮匹配处理中b的取值为1;步骤2.2,判断该哈希表中是否存在与该第二哈希值相同的key;步骤2.3,若该哈希表中存在与该第二哈希值相同的key,根据该哈希表中该第二哈希值对应的value,获取该参考数据块在本轮匹配处理中的匹配数据,该本轮匹配处理中的匹配数据为该参考数据块中与该待压缩数据中第b Byte后的数据相同的数据;步骤2.4,若该哈希表中不存在与该第二哈希值相同的key,b增加stride,stride为大于0整数。
结合第二方面的第一种实现方式,在第二种实现方式中,每轮匹配处理中stride的取值为:lit_len等于(本轮匹配处理中b的取值减去B的取值),其中,上一轮匹配处理中的最后1Byte匹配数据为该待压缩数据的第B Byte数据,P为大于0的整数。
随着匹配不上的数据的长度的增加,增加stride的取值能够加快压缩速度。而由于数据压缩过程中,lit_len这一参数为生成压缩编码本来就必须维护的参数,因此本数据处理设备将stride取值为没有引进新的参数,减轻了工作负担。
本申请的第三方面提供了一种数据压缩方法,该数据压缩方法可以由存储控制器或数据压缩设备执行。该方法包括:获取待压缩数据以及参考数据块对应的哈希表;根据该哈希表确定该参考数据块中与该待压缩数据的窗口内的(m+1)Byte数据相同的数据,该确定过程包括多轮匹配处理,每轮匹配处理包括步骤3.1至3.4:步骤3.1,对该待压缩数据中第b Byte数据到第b+mByte数据进行哈希运算生成第二哈希值,b为大于0的整数且首轮匹配处理中b的取值为1;步骤3.2,判断该哈希表中是否存在与该第二哈希值相同的key;步骤3.3,若该哈希表中存在与该第二哈希值相同的key,根据该哈希表中该第二哈希值对应的value,获取该参考数据块在本轮匹配处理中的匹配数据,该本轮匹配处理中的匹配数据为该参考数据块中与该待压缩数据中第b Byte后的数据相同的数据;步骤3.4,若该哈希表中不存在与该第二哈希值相同的key,b增加stride,stride的取值为:lit_len等于(本轮匹配处理中b的取值减去B的取值),其中,上一轮匹配处理中的最后1Byte匹配数据为该待压缩数据的第B Byte数据,P为大于0的整数。
随着匹配不上的数据的长度的增加,增加stride的取值能够加快压缩速度。而由于数据压缩过程中,lit_len这一参数为生成压缩编码本来就必须维护的参数,因此本方法中将stride取值为没有引进新的参数,减轻了工作负担。
本申请第四方面提供了一种计算设备,该计算设备包括处理器、存储器。该处理器和该存储器通过总线建立通信连接,该处理器运行时读取该存储器中的程序,以执行前述第一方面及第一方面任一实现方式提供的数据压缩方法。
本申请的第五方面,提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被计算设备运行时,执行第一方面及第一方面任一实现方式提供的数据压缩方法。该存储介质包括但不限于快闪存储器、硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid state drive,缩写:SSD)。
本申请的第六方面,提供了一种计算机程序产品,该计算机程序产品可以为一个软件安装包,该软件安装包被计算设备运行时,执行第一方面及第一方面任一实现方式提供的数据压缩方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作以简单地介绍,显而易见的,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的系统示意图;
图2为本申请实施例提供的另一系统示意图;
图3-1为本申请实施例提供的数据压缩方法的流程示意图;
图3-2为本申请实施例提供的另一数据压缩方法的流程示意图;
图4为本申请实施例提供的数据压缩设备的组织结构示意图;
图5为本申请实施例提供的另一数据压缩设备的组织结构示意图;
图6为本申请实施例提供的计算设备的组织结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请中采用术语第一、第二等来区分各个对象,但各个“第一”、“第二”之间不具有逻辑或时序上的依赖关系。本申请中第一哈希值指代对参考数据块中(m+1)Byte数据进行哈希运算生成的哈希值,第二哈希值指代对待压缩数据中(m+1)Byte数据进行哈希运算生成的哈希值。
贯穿本说明书,在块存储的场景下,数据block指代固定大小的数据,数据block的大小可以为4K Byte、8K Byte等;在文件存储的场景下,数据block指代一个文件,其大小不固定。参考数据块和待压缩数据均由至少一个数据block构成。
贯穿本说明书,当前数据的历史数据指代:当前数据所在的参考数据块或待压缩数据中,逻辑地址位于该当前数据之前的数据,或逻辑地址位于小于该当前数据的数据。例如对于某一参考数据块中第a Byte的数据而言,该参考数据块中第1byte至第a-1Byte的数据均为其历史数据。
贯穿本说明书,清理(英文:clean)哈希表指代初始化哈希表,也即将哈希表内存储的数据归0,以避免使用哈希表的过程发生误匹配。
贯穿本说明书,窗口包括了用于进行哈希运算的(m+1)Byte数据。窗口的起点为该(m+1)Byte数据的第1Byte,窗口的终点为该(m+1)Byte数据的最后1Byte,窗口的宽度为(m+1)。
窗口包括的(m+1)Byte数据可以为参考数据块中的数据,也可以为待压缩数据。在建立参考数据块对应的哈希表的过程中,窗口的起点从该参考数据块的第1Byte数据开始右移,对每个窗口内包括的(m+1)Byte数据进行哈希运算以生成对应的哈希值,并填入到该参考数据块对应的哈希表的key中。在窗口内的数据为待压缩数据的情况下,以待压缩数据包括字符串“abcdefghijklmn”且m=3为例,窗口首先包括“abcd”,如果没有与“abcd”匹配的参考数据,则窗口右移。右移的步幅(英文:stride)可以自行设定,以步幅为1为例,则接下来使用“bcde”来生成哈希值。
贯穿本说明书,逻辑地址指代操作系统分配的虚拟地址。任意(m+1)Byte数据的起始逻辑地址,也即该(m+1)Byte数据的首Byte数据的逻辑地址。
贯穿本说明书,哈希表的value的长度的单位为Byte。
贯穿本说明书,参考数据块中任意1Byte数据的相对地址,指代该Byte数据相对于该Byte数据所在的参考数据块的起始逻辑地址的偏移量。任意(m+1)Byte数据的相对地址,也即该(m+1)Byte数据的首Byte数据的相对地址。如果该(m+1)Byte数据所在的存储空间的起始逻辑地址的末尾N bit均为0且该(m+1)Byte数据所属的参考数据块的大小为2n,n不大于N,则该(m+1)Byte数据的首Byte数据的相对地址,也即该(m+1)Byte数据的首Byte数据的逻辑地址的末尾n bit。
贯穿本说明书,或操作指代OR操作,也即只要A或B中之任一不为0,则A OR B=1;如果A和B均为0,则A OR B=0。
贯穿本说明书,第a Byte到第a+m Byte数据,指代包括第a Byte、第a+mByte、第aByte数据和第a+m Byte数据之间的数据。
贯穿本说明书,指代对Z下取整,例如如果Z=4,则如果Z=3.5,则
本申请实施例所应用的系统
图1为本申请实施例所应用的一个系统的示意图,该系统包括了一个存储阵列,该存储阵列包括了至少一个存储控制器和多个存储设备,该存储设备一般为非易失性存储设备,具体可以为该快闪存储器(英文:flash memory)或硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid state drive,缩写:SSD)。每个存储控制器与多个存储设备相连接。为了节省存储阵列中存储设备的空间,该存储控制器用于将待存储的数据进行压缩,将获取的压缩编码存入存储设备。
图2为本申请实施例所应用的另一系统的示意图,该系统包括第一数据处理设备与第二数据处理设备。该第一数据处理设备中设置有数据压缩设备,第二数据处理设备中设置有数据解压缩设备。该数据压缩设备对需要传输给该第二数据处理设备的数据进行压缩,然后通过通信网络将压缩编码传输至第二数据处理设备。数据解压缩设备对该压缩编码进行解压缩。因此,在通信网络中仅需要传输压缩编码,减少了通信流量,加快了数据传输速度。
该存储控制器或该数据压缩设备运行时执行图3-1和图3-2提供的数据压缩方法。
本申请还提供了一种数据压缩方法,以存储控制器执行本方法为例,其流程示意图包括两部分,分别如图3-1和图3-2所示。其中,图3-1介绍了为参考数据块建立哈希表的过程,图3-2介绍了利用已建立的哈希表对待压缩数据进行压缩的过程。
步骤202,分配第一存储空间,该第一存储空间用于存储参考数据块,该第一存储空间的起始逻辑地址的末尾N bit为0,N为大于1的整数。
以N为32且该存储控制器采用64位的操作系统为例,该第一存储空间的起始逻辑地址为0x FFFF FFFF 0000 0000。
步骤204,分配第二存储空间,该第二存储空间用于存储该参考数据块对应的哈希表。该哈希表可以采用key-value结构,每个key为对窗口内(m+1)Byte参考数据块中的数据进行哈希运算后获取的哈希值,每个key对应的value包括生成该key的(m+1)Byte数据的起始逻辑地址的末尾n bit,其结构如表1所示。
Key | Value |
Hash value 1 | 逻辑地址1的末尾n bit |
Hash value 2 | 逻辑地址2的末尾n bit |
… | … |
Hash value N | 逻辑地址N的末尾n bit |
表1
假设hash value 1为参考数据块中对第a Byte至第a+m Byte数据进行哈希运算得到的哈希值,则逻辑地址1为第a Byte数据的逻辑地址,表1中的其余行依此类推。
步骤206,获取参考数据块,并将该参考数据块存入该第一存储空间,该待压缩数据的大小为2n Byte,n不大于N。因此,该参考数据块的起始逻辑地址的末尾N bit为0。
步骤208,清理该哈希表。
步骤208可以在步骤204之后,步骤210之前任意时刻执行。
步骤210,根据该参考数据块的第a Byte到第a+m Byte生成第一哈希值,a为大于0的整数。第一次执行步骤210时,a取值为1。常见的m的取值包括:2、3、4、5、6或7等。
步骤212,判断该哈希表中是否存在与该第一哈希值相同的key,如果存在,执行步骤2141至步骤2142,如果不存在,执行步骤2143至步骤2144。
步骤2141,根据该参考数据块的第a Byte数据的逻辑地址的末尾n bit更新该第一哈希值所在行的value。
步骤2142,判断第a+m Byte是否为参考数据块的最后1Byte,也即判断a是否等于(2n-m),如果a等于(2n-m),结束该哈希表的生成,如果a小于(2n-m),则将生成第一哈希值的窗口右移,即a=a+j,j为大于0的整数,并返回步骤210。应当说明的是,可能a小于(2n-m),但a+j大于(2n-m),此种情况下,步骤2142中也应该结束该哈希表的生成。
步骤2143,将该第一哈希值和该参考数据块的第a Byte数据的逻辑地址的末尾nbit加入至该哈希表。
步骤2144,判断第a+m Byte是否为参考数据块的最后1Byte,也即判断a是否等于(2n-m),如果a等于(2n-m),结束该哈希表的生成,如果a小于(2n-m),则将生成第一哈希值的窗口右移,即a=a+j,并返回步骤210。应当说明的是,可能a小于(2n-m),但a+j大于(2n-m),此种情况下,步骤2142中也应该结束该哈希表的生成。
下面以N为32、n为16且该存储控制器采用64位的操作系统为例,详细分析本申请提供的压缩方法相对于现有压缩方法的提升。其中采用本申请提供的方法分配的第一存储空间的起始逻辑地址为0x FFFF FFFF 0000 0000。
表2
如表2,当前逻辑地址为当前进行哈希运算的(m+1)Byte数据的起始逻辑地址。
如果第a Byte数据到第a+m Byte的数据对应的第一哈希值已经存在于该哈希表中的某一行的key,则需要读取该哈希表中该第一哈希值所在行的value,并用该第a Byte数据的相对地址更新该第一哈希值所在行的value,也即需要进行一次读哈希表和一次写哈希表。
现有技术中,以该第一哈希值所在行的value记录400为例,为了获取被匹配上的参考数据块中的数据的完整起始逻辑地址,因此需要将400与0x FFFF FFFF 0000 0001进行加操作,获取0x FFFF FFFF 0000 0191。0x FFFF FFFF 0000 0191为与当前进行哈希运算的(m+1)Byte数据相同的参考数据块中的数据的起始逻辑地址。
同时,现有技术中为了对该第一哈希值所在行的value进行更新,需要将当前进行哈希运算的(m+1)Byte数据的相对地址存入该被匹配上的行的value,因此需要将0x FFFFFFFF 0000 07D1与0x FFFF FFFF 0000 0001进行减操作,获取2000,并用2000更新该第一哈希值所在行的value。
由此可见,现有技术中,如果当前进行哈希运算的(m+1)Byte数据对应的第一哈希值已经存在于该哈希表,则需要进行一次加操作和一次减操作。
与之对应的,本申请提供的压缩方法中,以该第一哈希值所在行的value记录0x0190为例,为了获取被匹配上的参考数据块中的数据的完整起始逻辑地址,因此需要将0x0190与0x FFFF FFFF 0000 0000进行或操作,获取0x FFFF FFFF 0000 0190。0x FFFFFFFF 0000 0190为与当前进行哈希运算的(m+1)Byte数据相同的参考数据块中的数据的起始逻辑地址。
同时,本申请提供的压缩方法中为了对该第一哈希值所在行的value进行更新,需要用当前进行哈希运算的(m+1)Byte数据的起始逻辑地址的末尾nbit更新该第一哈希值所在行的value,由于该参考数据块的起始逻辑地址的末尾N bit为0,因此直接用07D0更新该被匹配上的行的value即可。
由此可见,本申请提供的压缩方法中,如果当前进行哈希运算的(m+1)Byte数据对应的第一哈希值已经存在于该哈希表,仅需要进行一次或操作。相对于现有技术中需要使用一次加操作和一次减操作,降低了操作所需的时间,提升了生成参考块对应的哈希表的效率,也即提升了压缩效率。
如果第a Byte数据到第a+m Byte的数据对应的第一哈希值不存在于该哈希表中的任一行的key,也即该第a Byte数据到第a+m Byte的数据对应的第一哈希值不能够匹配该哈希表中的任一行的key,将该第a Byte数据到第a+m Byte对应的第一哈希值,以及该参考数据块的第a Byte数据的相对地址加入至该哈希表,也即需要进行一次写哈希表。
写哈希表的场景中,现有技术中需要将0x FFFF FFFF 0000 07D1与0x FFFF FFFF0000 0001进行减操作,获取2000。随后,将第a Byte数据到第a+m Byte的数据对应的第一哈希值和2000存入该哈希表。
与之对应的,本申请提供的压缩方法中,以第a Byte数据到第a+m Byte的数据的起始逻辑地址为0x FFFF FFFF 0000 07D0为例,将第a Byte数据到第a+m Byte的数据对应的第一哈希值和0x 07D0存入该哈希表。
由此可见,本申请提供的压缩方法中,如果当前进行哈希运算的(m+1)Byte数据对应的第一哈希值不存在于该哈希表中的任一行的key,直接将该第a Byte数据到第a+mByte的数据的起始逻辑地址的末尾n bit写入该哈希表。相对于现有技术中需要使用一次减操作和一次写操作,降低了操作所需的时间,提升了生成参考数据块对应的哈希表的效率,也即提升了压缩效率。
由于存储控制器中一般会存储有多个参考数据块,针对每个参考数据块均可以执行以上图3-1对应的步骤以生成该参考数据块对应的哈希表。为此,存储每个参考数据块的存储空间的末尾N bit均需要为0。因此,可以为每个参考数据块均开辟一个末尾N bit为0的第一存储空间。或仅在步骤202中开辟一个末尾N bit为0的第一存储空间,随后在步骤2142或步骤2144中生成一个参考数据块对应的哈希表后,清理该第一存储空间以存储下一个参考数据块。
步骤402,分配第三存储空间,该第三存储空间用于存储待压缩数据。
步骤404,分配第四存储空间,该第四存储空间用于存储待压缩的数据在压缩过程中生成的压缩编码。通过对该压缩编码进行解压操作可以复原待压缩数据。
步骤402、步骤404可以以任意顺序执行顺序。步骤402、步骤404的执行也可以与步骤202或步骤204一同执行,以一次性分配数据压缩所需的全部存储空间。该第一存储空间、该第二存储空间、该第三存储空间和该第四存储空间可以指代内存空间。由于该第二存储空间、该第三存储空间和该第四存储空间的起始逻辑地址的末尾N bit无须设置为0,因此该第二存储空间、该第三存储空间和该第四存储空间也可以合并为一个存储空间或其中任意两个合并为一个存储空间。
步骤406,接收待压缩数据,并将该待压缩数据存入该第三存储空间。
该待压缩数据可以包括多个数据block。相比于待压缩数据仅包括一个数据block的方案,一次性将多个数据block存入该第一存储空间,可以避免多次清理哈希表带来的性能损耗,因此可以提升压缩率。
存储控制器从客户端或其他设备获取待压缩数据,该待压缩数据为准备写入存储设备中的数据。
步骤408,从多个参考数据块中选择一个参考数据块,获取该参考数据块对应的哈希表。
采用Delta压缩的存储控制器中一般会存有多个参考数据块及每个参考数据块对应的哈希表。因此,在接收到待压缩数据后,需要通过相似度计算,指纹计算等方式从这多个参考数据块中选择一个与待压缩数据块最相似的参考数据块用于后续的步骤。
如果存储控制器中仅存有一个参考数据块,则无须步骤408。
步骤408后,执行多轮匹配处理,每轮匹配处理均包括步骤410及步骤410后的分支之一,直至窗口向右滑动至该待压缩数据的最后1Byte数据。
步骤410,根据待压缩数据的第b Byte到第b+m Byte生成第二哈希值,b为大于0的整数。第一次执行步骤410时,b取值为1。
步骤412,判断该哈希表中是否存在与该第二哈希值相同的key,如果存在,则执行包括步骤4141的分支,如果不存在,则执行包括步骤416的分支。
步骤412中使用的哈希表为步骤408中选择出的参考数据块对应的哈希表。
步骤4141,获取该哈希值所在行的value,并根据该哈希值所在行的value获取参考数据块中的数据。
步骤4142,将获取到的参考数据块中的数据与当前进行哈希运算的(m+1)Byte数据向右逐字节进行匹配,获取该参考数据块在本轮匹配处理中的匹配数据,本轮匹配处理中的匹配数据为该参考数据块中与该待压缩数据中第bByte后的数据相同的数据。
步骤4143,根据该本轮匹配处理中的匹配数据生成本轮匹配处理对应的压缩编码,并将该压缩编码存入该第四存储空间内。
步骤4144,判断第b+m Byte是否为该待压缩数据的最后1Byte数据。
如果第b+m Byte不是该待压缩数据的最后1Byte数据,则b增加k,也即b+=k,并返回执行步骤410以进行下一轮的匹配处理其中,k为预设的整数且用于在每完成一次匹配后,将待压缩数据块的窗口右移以对后续数据进行哈希运算。
如果第b+m Byte是该待压缩数据的最后1Byte数据,则结束压缩,将该第四存储空间内的压缩编码存入存储设备。
该压缩编码包括了:匹配长度,本轮匹配处理中的匹配数据的相对地址,以及上一轮匹配处理中的最后1Byte匹配数据至本轮匹配处理的窗口中第1
Byte数据之间的数据。如果存在多个参考数据块的场景下,该压缩编码中可能还需要携带指示步骤408中选择出的参考数据块对应的标识。
例如参考数据块包括abcdefghHUT,假设第一个a为的相对地址为100。而待压缩数据包括abcdef,且当前窗口包括abcd,如表3。
Key | Value |
abcd对应的hash值 | 100 |
bcde对应的hash值 | 101 |
cdef对应的hash值 | 102 |
defg对应的hash值 | 103 |
efgh对应的hash值 | 104 |
fghH对应的hash值 | 105 |
ghHU对应的hash值 | 106 |
hHUT对应的hash值 | 107 |
表3
当获取abcd对应的hash值后,由于在该哈希表中能够匹配上第一行的key,因此根据哈希表中第一行的value读取参考数据块中的a,然后待压缩数据中的第1个字符与参考数据块中的a相比较,待压缩数据中第2个字符与参考数据块中的b相比较,依次类推,直至向右匹配至无法匹配为止。在本例中,待压缩数据中第1个字符至第6个字符与参考数据块中第1至第6个字符相同。因此生成的压缩编码包括:上次压缩编码记录的最后1Byte数据至本轮匹配处理中匹配上的第1Byte之间的数据,100,6。其中100为当前窗口内的待压缩数据匹配上的参考数据的相对地址,6为匹配数据的长度。
lit_len等于(本轮匹配处理中b的取值-B),上一轮匹配处理中的最后1Byte匹配数据为该待压缩数据的第B Byte数据。例如,上一轮匹配处理中,待压缩数据的第100Byte至第120Byte数据与参考数据块中的数据匹配成功,本轮匹配处理中b等于132,则本轮匹配处理中lit_len等于12,即(132-120)。
步骤416,判断第b+m Byte是否为该待压缩数据的最后1Byte数据。
如果第b+m Byte不是该待压缩数据的最后1Byte数据,则b增加stride,也即b+=stride,并返回执行步骤410以进行下一轮的匹配处理,其中stride等于P为大于0的预设的整数。
如果第b+m Byte是该待压缩数据的最后1Byte数据,则结束压缩,将该第四存储空间内的压缩编码存入存储设备。
在步骤416中,由于本轮匹配处理中生成的第二哈希值无法匹配该哈希表中任一key,因此如果本轮匹配处理的窗口没有右移到该待压缩数据的末尾,则步骤416后需要将窗口右移stride Byte以继续执行步骤410。
如果在匹配处理的过程中连续多个窗口生成的第二哈希值无法匹配该哈希表中的任一key,则需要适当增加stride的取值,以加快窗口右移的速度,提升压缩效率。而随着连续无法匹配的窗口的增加,lit_len的取值也会随之而增加。将stride取值为既保证了stride的取值不小于1,窗口可以顺利右移,又使得随着lit_len的取值的增加,stride的取值也会随着增加,加快了窗口右移的速度。而P的取值越小,stride的增加速度越快,示例性的,P可以取值为64。
同时,由于数据压缩过程中,lit_len这一参数为生成压缩编码本来就必须维护的参数,因此将stride取值为也没有引进新的参数,减轻了存储控制器的工作负担。
需要说明的是,图3-1介绍的为参考数据块建立哈希表的过程与图3-2介绍的利用已建立的哈希表对待压缩数据进行压缩的过程除了可以联合使用于一个数据压缩方法中,两者还可以独立使用。也即,可以仅使用图3-1介绍的为参考数据块建立哈希表的过程,而不采用图3-2对应的如何使用已建立的哈希表的过程。或,仅使用图3-2介绍的利用已建立的哈希表对待压缩数据进行压缩的过程,而不采用图3-1对应的为参考数据块建立哈希表的过程。
如图4所示,本申请还提供了一种数据压缩设备400,该数据压缩设备可以为图1中的存储控制器或图2中的数据压缩设备。该数据压缩设备400包括通信接口402和处理芯片404,通信接口402和处理芯片404建立通信连接。该数据压缩设备400运行时,执行图3-1和图3-2对应的数据压缩方法。
通信接口402用于与外部设备通信,例如写入待压缩数据和参考数据块的客户端、存储阵列中的存储设备、通信网络中的网络设备等。通信接口402可以为数据压缩设备400的输入/输出接口。
通信接口402具体用于执行步骤206中获取参考数据块的步骤,以及步骤406中接收待压缩数据的部分,以及步骤4144和步骤416之后将第四存储空间内的压缩编码存入存储设备的步骤。如果该数据压缩设备400为图2中的数据压缩设备,则步骤4144和步骤416之后,通信接口402用于将该第四存储空间内的压缩编码发往通信网络。
处理芯片404,用于执行图3-1和图3-2中的其余步骤。
处理芯片404可以通过专用集成电路(英文:application-specific integratedcircuit,缩写:ASIC)实现,或可编程逻辑器件(英文:programmable logic device,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logicdevice,缩写:CPLD),现场可编程门阵列(英文:field programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic array logic,缩写:GAL)或其任意组合。
如图5所示,处理芯片404还可以通过处理器、存储设备以及逻辑芯片实现,该逻辑芯片可以由PLD或ASIC实现。该处理芯片404运行时,该处理器和该逻辑芯片各执行一部分功能,两者功能的分配可以有多种。示例性的,由该处理器读取该存储器中的代码执行分配各个存储空间以及将参考数据块和待压缩数据存入对应的存储空间。在各个存储空间均已在该存储器中分配完毕,并且参考数据块和待存储数据已经存储如对应的存储空间后,由该逻辑芯片完成后续步骤。
以上提供的数据压缩设备,通过将存储参考数据块存储空间的末尾N bit地址设置为0,使得后续建立该参考数据块对应的哈希表的过程更加简单,提升了压缩速度。
图6为本申请提供的一种计算设备,该计算设备600可以为图1中的存储控制器或图2中的数据压缩设备。计算设备600包括处理器602、存储器604,还可以包括总线606以及通信接口608。
通信接口608用于与外部设备通信,例如写入待压缩数据的客户端、存储阵列中的存储设备、通信网络中的网络设备等。通信接口608可以为计算设备600的输入/输出接口。
处理器602、存储器604和通信接口608可以通过总线606实现彼此之间的通信连接,也可以通过无线传输等其他手段实现通信。
处理器602可以为中央处理器(英文:central processing unit,缩写:CPU)。
存储器604可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM)。
可选的,存储器604还可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器,HDD或SSD;存储器604还可以包括上述种类的存储器的组合。
当计算设备600为图1中的存储控制器时,由于存储控制器与存储阵列中的多个存储设备相连,因此存储器604也可以不包括非易失性存储器,计算设备600的非易失性存储器由存储阵列的存储设备提供。
当计算设备600为图2中的数据压缩设备时,由于其可以直接将压缩编码发往通信网络,不需要将压缩编码存入非易失性存储器,因此存储器604也可以不包括非易失性存储器。
在通过软件来实现本申请提供的技术方案时,用于实现本申请图3-1和图3-2提供的数据压缩方法的程序代码保存在存储器604中,并由处理器602来执行。
以上提供的计算设备,通过将存储参考数据块存储空间的末尾N bit地址设置为0,使得后续建立该参考数据块对应的哈希表的过程更加简单,提升了压缩速度。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
结合本申请公开内容所描述的方法可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM、快闪存储器、ROM、可擦除可编程只读存储器(英文:erasable programmable read only memory,缩写:EPROM)、电可擦可编程只读存储器(英文:electrically erasable programmable read only memory,缩写:EEPROM)、硬盘、SSD、光盘或者本领域熟知的任何其它形式的存储介质中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件或软件来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上该的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上该仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、改进等,均应包括在本申请的保护范围之内。
Claims (7)
1.一种数据压缩方法,其特征在于,包括:
分配存储空间,所述存储空间的起始逻辑地址的末尾N bit为0,N为大于1的整数;
将参考数据块存入所述存储空间,所述参考数据块的大小为2nByte,n不大于N;
执行步骤1.1至步骤1.5以建立所述参考数据块对应的哈希表,所述哈希表的key为所述参考数据块中(m+1)Byte数据进行哈希运算生成的哈希值,所述哈希表的value包括所述参考数据块中(m+1)Byte数据的起始逻辑地址的末尾n bit,m为大于0的整数;
步骤1.1,对所述参考数据块中第a Byte数据到第a+m Byte数据进行哈希运算生成第一哈希值,a为大于0的整数且首次执行步骤1.1时a的取值为1;
步骤1.2,判断哈希表中是否存在与所述第一哈希值相同的key;
步骤1.3,若所述哈希表中存在与所述第一哈希值相同的key,根据所述第a Byte数据的逻辑地址的末尾n bit更新所述哈希表中所述第一哈希值对应的value;
步骤1.4,若所述哈希表中不存在与所述第一哈希值相同的key,将所述第一哈希值和所述第a Byte数据的逻辑地址的末尾n bit加入所述哈希表;
步骤1.5,判断a是否等于(2n-m),若a等于(2n-m),所述哈希表建立完毕,若a小于(n-m),a增加j且再次执行步骤1.1至步骤1.5,j为大于0的正整数;
所述哈希表建立完毕后,获取待压缩数据,根据所述哈希表确定所述参考数据块中与所述待压缩数据的窗口内的(m+1)Byte数据相同的数据。
2.如权利要求1所述的数据压缩方法,其特征在于,所述根据所述哈希表确定所述参考数据块中与所述待压缩数据的窗口内的(m+1)Byte数据相同的数据包括多轮匹配处理,每轮匹配处理包括步骤2.1至2.4:
步骤2.1,对所述待压缩数据中第b Byte数据到第b+m Byte数据进行哈希运算生成第二哈希值,b为大于0的整数且首轮匹配处理中b的取值为1;
步骤2.2,判断所述哈希表中是否存在与所述第二哈希值相同的key;
步骤2.3,若所述哈希表中存在与所述第二哈希值相同的key,根据所述哈希表中所述第二哈希值对应的value,获取所述参考数据块在本轮匹配处理中的匹配数据,所述本轮匹配处理中的匹配数据为所述参考数据块中与所述待压缩数据中第b Byte后的数据相同的数据;
步骤2.4,若所述哈希表中不存在与所述第二哈希值相同的key,b增加stride,stride为大于0整数。
3.如权利要求2所述的数据压缩方法,其特征在于,每轮匹配处理中stride的取值为:1和之和,lit_len等于本轮匹配处理中b的取值减去B的取值,其中,上一轮匹配处理中的最后1Byte匹配数据为所述待压缩数据的第B Byte数据,P为大于0的整数。
4.一种数据压缩设备,其特征在于,包括:通信接口和处理芯片,所述通信接口与所述处理芯片相连;
所述处理芯片,用于分配存储空间,所述存储空间的起始逻辑地址的末尾N bit为0,N为大于1的整数;
所述通信接口,用于接收参考数据块,并将所述参考数据块存入所述存储空间,所述参考数据块的大小为2nByte,n不大于N;
所述处理芯片,还用于执行步骤1.1至步骤1.5以建立所述参考数据块对应的哈希表,所述哈希表的key为所述参考数据块中(m+1)Byte数据进行哈希运算生成的哈希值,所述哈希表的value包括所述参考数据块中(m+1)Byte数据的起始逻辑地址的末尾n bit,m为大于0的整数;
步骤1.1,对所述参考数据块中第a Byte数据到第a+m Byte数据进行哈希运算生成第一哈希值,a为大于0的整数且首次执行步骤1.1时a的取值为1;
步骤1.2,判断哈希表中是否存在与所述第一哈希值相同的key;
步骤1.3,若所述哈希表中存在与所述第一哈希值相同的key,根据所述第a Byte数据的逻辑地址的末尾n bit更新所述哈希表中所述第一哈希值对应的value;
步骤1.4,若所述哈希表中不存在与所述第一哈希值相同的key,将所述第一哈希值和所述第a Byte数据的逻辑地址的末尾n bit加入所述哈希表;
步骤1.5,判断a是否等于(2n-m),若a等于(2n-m),所述哈希表建立完毕,若a小于(n-m),a增加j且再次执行步骤1.1至步骤1.5,j为大于0的正整数;
所述处理芯片,还用于在所述哈希表建立完毕后,获取待压缩数据,根据所述哈希表确定所述参考数据块中与所述待压缩数据的窗口内的(m+1)Byte数据相同的数据。
5.如权利要求4所述的数据压缩设备,其特征在于,所述根据所述哈希表确定所述参考数据块中与所述待压缩数据的窗口内的(m+1)Byte数据相同的数据包括多轮匹配处理,每轮匹配处理包括步骤2.1至2.4:
步骤2.1,对所述待压缩数据中第b Byte数据到第b+m Byte数据进行哈希运算生成第二哈希值,b为大于0的整数且首轮匹配处理中b的取值为1;
步骤2.2,判断所述哈希表中是否存在与所述第二哈希值相同的key;
步骤2.3,若所述哈希表中存在与所述第二哈希值相同的key,根据所述哈希表中所述第二哈希值对应的value,获取所述参考数据块在本轮匹配处理中的匹配数据,所述本轮匹配处理中的匹配数据为所述参考数据块中与所述待压缩数据中第b Byte后的数据相同的数据;
步骤2.4,若所述哈希表中不存在与所述第二哈希值相同的key,b增加stride,stride为大于0整数。
6.如权利要求5所述的数据压缩设备,其特征在于,每轮匹配处理中stride的取值为:1和之和,lit_len等于本轮匹配处理中b的取值减去B的取值,其中,上一轮匹配处理中的最后1Byte匹配数据为所述待压缩数据的第B Byte数据,P为大于0的整数。
7.一种计算设备,其特征在于,所述计算设备包括处理器、存储器,所述处理器和所述存储器建立通信连接;所述处理器运行时,读取所述存储器中的程序,执行权利要求1至3任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610878348.XA CN106484852B (zh) | 2016-09-30 | 2016-09-30 | 数据压缩方法、设备与计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610878348.XA CN106484852B (zh) | 2016-09-30 | 2016-09-30 | 数据压缩方法、设备与计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106484852A CN106484852A (zh) | 2017-03-08 |
CN106484852B true CN106484852B (zh) | 2019-10-18 |
Family
ID=58268585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610878348.XA Active CN106484852B (zh) | 2016-09-30 | 2016-09-30 | 数据压缩方法、设备与计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106484852B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11249987B2 (en) | 2019-08-14 | 2022-02-15 | Advanced New Technologies Co., Ltd. | Data storage in blockchain-type ledger |
CN110597461B (zh) * | 2019-08-14 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 块链式账本中的数据存储方法、装置及设备 |
CN111259203B (zh) * | 2020-01-08 | 2023-08-25 | 上海兆芯集成电路股份有限公司 | 数据压缩器以及数据压缩方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826107A (zh) * | 2010-04-02 | 2010-09-08 | 华为技术有限公司 | 哈希数据处理方法和装置 |
CN104657362A (zh) * | 2013-11-18 | 2015-05-27 | 深圳市腾讯计算机系统有限公司 | 数据存储、查询方法和装置 |
CN104753626A (zh) * | 2013-12-25 | 2015-07-01 | 华为技术有限公司 | 一种数据压缩方法、设备及系统 |
CN105204781A (zh) * | 2015-09-28 | 2015-12-30 | 华为技术有限公司 | 压缩方法、装置和设备 |
CN105426413A (zh) * | 2015-10-31 | 2016-03-23 | 华为技术有限公司 | 一种编码方法及装置 |
-
2016
- 2016-09-30 CN CN201610878348.XA patent/CN106484852B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826107A (zh) * | 2010-04-02 | 2010-09-08 | 华为技术有限公司 | 哈希数据处理方法和装置 |
CN104657362A (zh) * | 2013-11-18 | 2015-05-27 | 深圳市腾讯计算机系统有限公司 | 数据存储、查询方法和装置 |
CN104753626A (zh) * | 2013-12-25 | 2015-07-01 | 华为技术有限公司 | 一种数据压缩方法、设备及系统 |
CN105204781A (zh) * | 2015-09-28 | 2015-12-30 | 华为技术有限公司 | 压缩方法、装置和设备 |
CN105426413A (zh) * | 2015-10-31 | 2016-03-23 | 华为技术有限公司 | 一种编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106484852A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101992274B1 (ko) | 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 | |
US9454552B2 (en) | Entropy coding and decoding using polar codes | |
CN106484852B (zh) | 数据压缩方法、设备与计算设备 | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
CN110419036B (zh) | 数据压缩方法、设备与计算设备 | |
WO2017071431A1 (zh) | 一种编码方法及装置 | |
US11973519B2 (en) | Normalized probability determination for character encoding | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
CN106506007A (zh) | 一种无损数据压缩和解压缩装置及其方法 | |
CN111625181B (zh) | 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 | |
US11955995B2 (en) | Apparatus and method for two-stage lossless data compression, and two-stage lossless data decompression | |
US20140006536A1 (en) | Techniques to accelerate lossless compression | |
CN112559462B (zh) | 一种数据压缩方法、装置、计算机设备和存储介质 | |
CN113497627A (zh) | 一种数据压缩和解压缩方法、装置及系统 | |
CN103810297B (zh) | 基于重删技术的写方法、读方法、写装置和读装置 | |
CN114035822A (zh) | 一种文件更新方法及设备 | |
WO2022072802A1 (en) | Systems and methods for lossless compression of tabular numeric data | |
WO2021036189A1 (zh) | Rdma数据发送及接收方法、电子设备及可读存储介质 | |
US7447263B2 (en) | Processing digital data prior to compression | |
US8228216B2 (en) | Systems and methods for data compression | |
KR102017808B1 (ko) | 데이터 처리 장치 및 데이터 처리 방법 | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
WO2020043203A1 (zh) | 一种基于纠删码的数据存储方法、装置及电子设备 | |
CN117097346B (zh) | 一种解压器及数据解压方法、系统、设备、计算机介质 | |
CN116662063B (zh) | 一种闪存的纠错配置方法、纠错方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |