CN103326732A - 压缩数据的方法、解压数据的方法、编码器和解码器 - Google Patents
压缩数据的方法、解压数据的方法、编码器和解码器 Download PDFInfo
- Publication number
- CN103326732A CN103326732A CN201310172509XA CN201310172509A CN103326732A CN 103326732 A CN103326732 A CN 103326732A CN 201310172509X A CN201310172509X A CN 201310172509XA CN 201310172509 A CN201310172509 A CN 201310172509A CN 103326732 A CN103326732 A CN 103326732A
- Authority
- CN
- China
- Prior art keywords
- dictionary table
- data
- dictionary
- target quiescent
- row
- 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
Images
Abstract
本发明公开了一种压缩数据的方法、解压数据的方法、编码器和解码器。该压缩数据的方法包括:确定待压缩的列级数据;获取与该列级数据对应的目标静态字典表;将该列级数据作为数据流,将该目标静态字典表作为编码字典,对该列级数据进行压缩;压缩完成后,独立存储该目标静态字典表,以便于该目标静态字典表用于其它列级数据的压缩。本发明实施例的压缩数据的方法、解压数据的方法、编码器和解码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
Description
技术领域
本发明涉及数据压缩领域,尤其涉及数据压缩领域中压缩数据的方法、解压数据的方法、编码器和解码器。
背景技术
LZ编码(Lempel-Ziv Encoding)是一种基于字典方法的数据压缩技术,该技术是1970年代末由两位以色列科学家Jacoh Ziv和Abraham Lempel提出的。现在由LZ编码衍生出来的算法很多,比较著名的有LZ77、LZ78、LZS、LZW(Lempel-Ziv-Welch)等。LZ编码与基于统计的数据压缩技术不同,LZ编码既不使用变长码,也不使用统计模型,而是使用字符串,利用字典将需要的字符串进行编码形成一个标识,字典保存这些字符串及其标识。字典保存的字符串既可以是静态的,也可以是动态的或自适应的。静态字典是固定的,添加字符串是允许的,但删除是不允许的;而动态字典中的字符串是先前输入流中出现过的,当读取新的字符串时,允许字符串的添加或删除。字典编码由于压缩效果好,并且实现方法简单,因而得到人们的一致认可。
LZW压缩算法(Lempel-Ziv-Welch Encoding)通过建立一个字符串表,用较短的代码表示较长的字符串,从而实现数据的压缩。字符串和编码的对应关系是在压缩过程中动态生成的,并且隐含在压缩数据中,解压的时候则根据该对应关系进行恢复,因而,LZW编码是一种无损压缩。
LZW压缩算法的基本原理是:提取原始文本文件数据中的不同字符,基于这些字符创建一个字典表,然后用字典表中的字符的索引来替代原始文本文件数据中的相应字符,以减少原始数据大小。这里的字典表不是事先创建好的,而是根据原始文本文件数据动态创建的,解码时还要从已编码的数据中还原出原来编码时采用的字典表。LZW压缩算法基于字典(转换串表),将输入字符串映射成定长的码字,该码字通常为12位。在12位码字形成的4096种可能的代码中,256个代码代表单字符,剩下的3840个代码用于代表出现的字符串。
IBM公司提出的一种数据库管理系统DB2包括了一项新的基于字典的行压缩技术。当采用该行压缩技术压缩数据时,通过使用更少的数据库页表示相同的数据,可以节省磁盘存储空间。行压缩可以用较短的符号字符串替换数据行中公共的字节模式,但实现行压缩需要一定的附加成本,并且每当需要压缩或解压缩一个行时,都需要付出相应的处理成本。DB2中的数据行压缩基于LZ算法,该LZ算法使用一个静态字典存储所需的信息。
该行压缩技术采用行级压缩,并且不加区分地压缩不同类型的数据。而LZ压缩算法只对重复模式多的数据有效,不能只对压缩效果好的列单独压缩,从而使得访问或更新一个元组的某一列的值时,必须将整个行(页、文件)进行解压处理;并且字典表动态生成,不能被多个数据源共享。
发明内容
本发明实施例提供了一种压缩数据的方法、解压数据的方法、编码器和解码器,能够进行列压缩,并能够共享静态字典表。
第一方面,提供了一种压缩数据的方法,该方法包括:确定待压缩的列级数据;获取与该列级数据对应的目标静态字典表;将该列级数据作为数据流,将该目标静态字典表作为编码字典,对该列级数据进行压缩;压缩完成后,独立存储该目标静态字典表,以便于该目标静态字典表用于其它列级数据的压缩。
结合第一方面,在第一方面的第一种可能的实现方式中,该确定待压缩的列级数据,包括:根据结构化查询语言SQL语句指示的待压缩的列,确定该列级数据。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该SQL语句还用于指示同一个表或不同表的至少一个列采用同一该目标静态字典表进行压缩。
结合第一方面,在第一方面的第三种可能的实现方式中,该获取与该列级数据对应的目标静态字典表,包括:在本地独立存储的全局字典中,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
结合第一方面,在第一方面的第四种可能的实现方式中,该获取与该列级数据对应的目标静态字典表,包括:在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与该列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将该第一静态字典表作为该目标静态字典表。
结合第一方面或第一方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,该获取与该列级数据对应的目标静态字典表,包括:根据数据页头部存储的字典表标识向量,确定与该数据页中指定的待压缩的该列级数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待压缩列对应的一个静态字典表标识。
第二方面,提供了一种解压数据的方法,该方法包括:确定待解压的编码数据;获取与该编码数据对应的独立存储的目标静态字典表;将该编码数据作为编码流,将该目标静态字典表作为解码字典,对该编码数据进行解压。
结合第二方面,在第二方面的第一种可能的实现方式中,该获取与该编码数据对应的独立存储的目标静态字典表,包括:在本地独立存储的全局字典中,根据压缩该编码数据采用的字典表标识,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该获取与该编码数据对应的独立存储的目标静态字典表,包括:根据数据页头部存储的字典表标识向量,确定与该数据页包括的该编码数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待解压列对应的一个静态字典表标识。
第三方面,提供了一种编码器,该编码器包括:确定模块,用于确定待压缩的列级数据;获取模块,用于获取与该确定模块确定的该列级数据对应的目标静态字典表;压缩模块,用于将该确定模块确定的该列级数据作为数据流,将该获取模块获取的该目标静态字典表作为编码字典,对该列级数据进行压缩;存储模块,用于在该压缩模块压缩完成后,独立存储该获取模块获取的该目标静态字典表,以便于该目标静态字典表用于其它列级数据的压缩。
结合第三方面,在第三方面的第一种可能的实现方式中,该确定模块具体用于:根据结构化查询语言SQL语句指示的待压缩的列,确定该列级数据。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该SQL语句还用于指示同一个表或不同表的至少一个列采用同一该目标静态字典表进行压缩。
结合第三方面,在第三方面的第三种可能的实现方式中,该获取模块包括:第一获取单元,用于在本地独立存储的全局字典中,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
结合第三方面,在第三方面的第四种可能的实现方式中,该获取模块包括:第二获取单元,用于在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与该列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将该第一静态字典表作为该目标静态字典表。
结合第三方面或第三方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第三方面的第五种可能的实现方式中,该获取模块包括:第三获取单元,用于根据数据页头部存储的字典表标识向量,确定与该数据页中指定的待压缩的该列级数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待压缩列对应的一个静态字典表标识。
第四方面,提供了一种解码器,该解码器包括:确定模块,用于确定待解压的编码数据;获取模块,用于获取与该确定模块确定的该编码数据对应的独立存储的目标静态字典表;解压模块,用于将该确定模块确定的该编码数据作为编码流,将该获取模块获取的该目标静态字典表作为解码字典,对该编码数据进行解压。
结合第四方面,在第四方面的第一种可能的实现方式中,该获取模块包括:第一获取单元,用于在本地独立存储的全局字典中,根据压缩该编码数据采用的字典表标识,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,该获取模块包括:第二获取单元,用于根据数据页头部存储的字典表标识向量,确定与该数据页包括的该编码数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待解压列对应的一个静态字典表标识。
基于上述技术方案,本发明实施例的压缩数据的方法、解压数据的方法、编码器和解码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的压缩数据的方法的示意性流程图。
图2是根据本发明实施例的压缩数据的方法的另一示意性流程图。
图3是根据本发明实施例的静态字典表的存储结构的示意性框图。
图4是根据本发明实施例的压缩数据的方法的再一示意性流程图。
图5是根据本发明实施例的解压数据的方法的示意性流程图。
图6是根据本发明实施例的解压数据的方法的另一示意性流程图。
图7是根据本发明实施例的编码器的示意性框图。
图8是根据本发明实施例的获取模块的示意性框图。
图9是根据本发明实施例的解码器的示意性框图。
图10是根据本发明实施例的获取模块的示意性框图。
图11是根据本发明实施例的编码器的另一示意性框图。
图12是根据本发明实施例的解码器的另一示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1示出了根据本发明实施例的压缩数据的方法100的示意性流程图,该方法100例如由编码器执行。如图1所示,该方法100包括:
S110,确定待压缩的列级数据;
S120,获取与该列级数据对应的目标静态字典表;
S130,将该列级数据作为数据流,将该目标静态字典表作为编码字典,对该列级数据进行压缩;
S140,压缩完成后,独立存储该目标静态字典表,以便于该目标静态字典表用于其它列级数据的压缩。
因此,本发明实施例的压缩数据的方法,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
具体而言,在本发明实施例中,对于确定的待压缩的数据,例如在本地独立存储的各静态字典表中,例如根据结构化查询语言(Structured QueryLanguage,简称为“SQL”)语句,获取与该待压缩的数据对应的目标静态字典表。假设p为要读取字符的前缀,s为读取的字符。在压缩过程中,p和s这两者会组成一个条目(entry),若该条目已经存在于获取的目标静态字典表中,则使该条目(entry)变成前缀,继续读取下一个字符;若在目标静态字典表中找不到该条目,则在输出流的尾部输出该前缀p,并将该条目记录在目标静态字典表中,之后使得s作为前缀继续进行压缩,直到最后一个字符,最后将更新的目标静态字典表与压缩数据分离存储。
下面将结合图2,对根据本发明实施例的数据压缩流程进行详细说明。
如图2所示,在S201中,编码器可以根据SQL语句确定待压缩的数据流,并可以根据SQL语句,在本地存储的静态字典表中查找与该数据流对应的目标静态字典表。
在S202中,编码器读取数据流的下一个字符。
在S203中,编码器将要读取字符的前缀p和要读取的字符s组成一个条目(Entry)。
在S204中,编码器判断目标静态字典表中是否存在该条目,如果目标静态字典表中不存在该条目,则流程进行到S205;否则,流程进行到S210。
在S205中,当目标静态字典表中不存在该条目时,编码器输出前缀(Prefix),并且将后缀(Suffix)变为前缀。
在S206中,编码器将该条目(Entry)记录到目标静态字典中。
在S207中,编码器确认当前读取的字符是否为最后一个字符,如果为最后一个字符,则流程进行到S208;否则,流程进行到S202。
在S208中,编码器输出各条目对应的标号,即输出编码数据。
在S209中,编码器独立存储更新后的目标静态字典表,即将目标静态字典表与压缩数据分离存储,以便于该目标静态字典表用于其它列级数据的压缩。
在S210中,当目标静态字典表中存在当前形成的条目时,编码器判断当前读取的字符是否为最后一个字符,如果为最后一个字符,则流程进行到S208;否则,流程进行到S211。
在S211中,编码器将当前的前缀变成与条目对应的标号,并继续读取数据流的下一个字符,即流程进行到S202。
应理解,传统的LZW压缩算法中的字典表不是事先创建好的,而是根据原始数据流动态创建的,解码时还要从已压缩的数据中还原出压缩时采用的字典表;当然,传统的LZW压缩算法也可以记录生成的动态字典表,以加快解码的速度,但该动态字典表会与压缩数据存储在一起。
而在根据本发明实施例的方案中,改变了传统LZW压缩算法中的字典表的生成和存储方式,其中字典表采用静态独立存储的方式。同时,字典表的生成方式也不再采用为每个原始数据流动态创建一个的方式,而是多个数据流共享静态字典表,共同维护静态字典表,以达到共享静态字典表的目的。
因此,本发明实施例的压缩数据的方法,不改变LZW压缩算法的基本流程,而只是将静态字典表分离存储,并在不同的压缩对象之间共享静态字典表,该压缩对象可以是同一张表同一列的数据,也可以是不同表相关列的数据,由此避免了每个压缩对象从头构建不同的字典表,从而能够大大提高压缩比率。
此外,共享静态字典表使得其源数据可以是多个数据流,从而可以对不是很长的列进行压缩,并同样能够获得好的压缩效果,因而避免了必须对较长数据流进行压缩;并且,共享静态字典表还避免了数据只能整体压缩和解压数据,使得数据项能够单独压缩或解压,由此能够提升操作性能。
应理解,本发明实施例通过对LZW压缩算法进行改进,使得字典表与数据分开存储,达到字典表共享的目的,从而通过共享静态字典,在数据库中实现列级压缩的目的,但本发明实施例并不限于应用LZW压缩算法,还可以应用于其它应用场景。
还应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
还应理解,LZW压缩算法包括三个重要的对象,分别为数据流(CharStream)、编码流(CodeStream)和字典表(String Table)。在编码时,数据流是输入对象(文本文件的序列),编码流是输出对象(经过压缩运算的编码数据);在解码时,编码流则是输入对象,数据流是输出对象;而字典表则是在编码和解码时都须要借助的对象。在LZW压缩算法中,字符(Character)是最基础的数据元素,在文本文件中就是一个字节,在光栅数据中就是一个像素的颜色在指定的颜色列表中的索引值;字符串(String)由几个连续的字符组成;前缀(Prefix)也是一个字符串,不过通常用在另一个字符的前面,而且它的长度可以为0;根(Root)是一个长度的字符串;编码(Code)是一个数字,按照固定长度(编码长度)从编码流中取出,也是编译表的映射值;图案是一个字符串,按不定长度从数据流中读出,并且映射到编译表条目。
在本发明实施例中,可选地,该确定待压缩的列级数据,包括:根据结构化查询语言SQL语句指示的待压缩的列,确定该列级数据。
可选地,该SQL语句还用于指示同一个表或不同表的至少一个列采用同一该目标静态字典表进行压缩。
具体而言,在本发明实施例中,可以为数据库提供新的语法规则,使得用户可以通过SQL语句来指定对某列进行LZW压缩,并可以指定与待压缩数据流对应的字典名,该字典名用于标识静态字典表,并且可以是全局唯一的。如果在SQL语句中,若同一个表的多个列或不同表的多个列指定同一个字典名,或指定同一个静态字典表,则该静态字典表在多列中共享。
在本发明实施例中,列级共享的基本SQL语句的形式例如如下所示:
CREATE TABLE t1(c1 int,c2varchar(100)COMPRESS BY LZWDICTIONAR dict1,c3char(10)COMPRESS BYLZW DICTIONAR dict1);
CREATE TABLE t2(c1 int,c2varchar(100)COMPRESS BY LZWDICTIONAR dict1,c3char(10)COMPRESS BYLZW DICTIONAR dict2)。
在上面所示的语法例子中,包括两个共享的静态字典表,分别是静态字典表dict1和静态字典表dict2,其中指定的待压缩的列级数据t1.c2、t1.c3和t2.c2采用静态字典表dict1作为目标静态字典表,而指定的待压缩的列级数据t2.c3采用静态字典表dict2作为目标静态字典表。
因此,在本发明实施例中,通过指定列进行压缩,并给出字典名的SQL语句方式,能够为用户提供简单便捷的列级压缩设置,同时可以为同一个表的多个列、甚至不同表的多个列设置可以使用同一个字典;并且通过SQL语句对指定列级数据采用指定共享字典表进行压缩,能够获得查询性能提升和存储空间减少的双重收益。
传统的LZW压缩算法的字典表生成方式,是将输入字符串映射成定长的码字,该码字通常为12位。在12位码字形成的4096种可能的代码中,256个代码代表单字符,剩下的3840个代码用于表示出现的字符串。字典表项采用前缀(Prefix)和后缀(Suffix)的表示方式,其中Prefix是指字典表项的条目Entry(p,s)中的p,Suffix为条目Entry(p,s)中的s。p可以为256个单字符或者其形成字典项的编号。在这里方法中,Prefix为12位,Suffix为8位,因此,一个Entry占20位空间,其中前256代表单字符,这部分内容为占有默认编号(0~255),不会在字典表中占有实际编号。因此,字典表中实际内容编号从256开始。如下面例子所示,对于待压缩的数据流this_is_his_thing,其形成的字典表如下表一所示,其中前缀只会存储单字符或编号,小括号中的内容为注释内容以便于理解:
表一
字典项的编号 | 前缀 | 后缀 |
256(th) | t | h |
257(hi) | h | i |
258(is) | i | s |
259(s_) | s | _ |
260(_i) | _ | i |
261(is_) | 258(is) | _ |
262(_h) | _ | h |
263(his) | 257(hi) | s |
264(s_t) | 259(s_) | t |
265(thi) | 256(th) | i |
266(in) | i | n |
267(ng) | n | g |
而在本发明实施例中,采用上述这种存储方式时,需要考虑以下两方面的问题:第一方面,字典表只能存储3840个字符串,若字符串超过3840个,那么该如何处理;第二方面,共享静态字典表虽然能够重用,但其可能会随着数据的变化已经不适合当前待压缩数据,不能获得很好的的压缩效果,此时又该如何处理。
对于上述第一方面的问题,由于共享静态字典表在数据库中可能会被多个列共享,其字典表可能会出现字符串超过3840个的限制,为了能够处理这种情况,并结合存储的实际需要,可以将后缀suffix的长度变为16位,从而能够使得编码范围为0~65535(64K)。
在此情况下如果字典表仍出现超出,则可以为该数据源重建一个静态字典表,其中,一个共享的字典表可以包括多个静态字典。如果重建静态字典表后仍无法解决该问题,则可以对该数据源采用LZW动态字典表方式,并在解压时通过压缩流重建该动态字典表。
对于上述第二方面的问题,当发现静态字典压缩效果变差以后,可以变更静态字典表进行压缩处理,或为数据源重建一个静态字典表以进行压缩处理。
对于本地存储多个静态字典表的情况,可以为每个新生成的静态字典表进行编号,因此对于共享字典表来说,共享字典表可以包括多个静态字典表,每个静态字典表都有唯一的编号。每个数据源只能用一个静态字典表进行压缩处理,并且压缩时会记录其静态字典表的编号。
因此,在本发明实施例中,可选地,该获取与该列级数据对应的目标静态字典表,包括:
在本地独立存储的全局字典中,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
作为一个实施例,可选地,该获取与该列级数据对应的目标静态字典表,包括:
在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与该列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将该第一静态字典表作为该目标静态字典表。
因此,本发明实施例的压缩数据的方法,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
下面将结合图3和图4,描述根据本发明实施例的压缩数据的方法在数据库中的应用。应理解,本发明实施例仅以数据库为例进行说明,但本发明并不限于此。
在本发明实施例中,可选地,该获取与该列级数据对应的目标静态字典表,包括:
根据数据页头部存储的字典表标识向量,确定与该数据页中指定的待压缩的该列级数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待压缩列对应的一个静态字典表标识。
具体而言,在数据库中,数据一般采用固定页的存储方式,例如4K、8K、16K等。因此,在数据库使用共享的静态字典表实现LZW列级压缩时,也可以以数据页为单位来选择合适的静态字典表。
上文中描述了一个共享字典表可以包括多个静态字典表。每个数据源只能使用一个静态字典表进行压缩处理,在数据库中这里的数据源就是页面中所有记录中相同列的值。即每个数据页(Page)用同一个静态字典压缩,在数据页头部标明静态字典的标识(ID)。如果有多个列用多个字典压缩,则需要多个静态字典标识分别标明。
下面给出的语法示例定义了数据页中指定字段采用LZW压缩算法,以及采用的共享字典表:
CREATE TABLE t1(c1 int,c2 varchar(100) COMPRESS BY LZWDICTIONAR dict1,c3char(10)COMPRESS BY LZW DICTIONAR dict1);
CREATE TABLE t2(c1 int,c2 varchar(100) COMPRESS BY LZWDICTIONAR dict1,c3 char(10)COMPRESS BYLZW DICTIONAR dict2)。
在上述语法示例中,包括两个静态共享字典表,分别是静态字典表dict1和静态字典表dict2,其中指定的待压缩数据流t1.c2、t1.c3和t2.c2采用dict1作为静态字典表,而指定的待压缩数据流t2.c3采用dict2作为静态字典表。其中,静态字典表在页面中的存储结构例如如图3所示。
如图3所示,数据页的头部存储一个字典表标识向量,该字典表标识向量按照顺序存储每个指定压缩列所对应的共享字典表中的一个静态字典表标识,该静态字典表标识表明该指定压缩列使用该标识所代表的静态字典表进行压缩。而每个列所对应的共享静态字典表则全局唯一。例如,指定压缩列t1.c2都采用共享的静态字典表dict1进行压缩。
上文中描述了静态字典表的基本存储方式,其中每个共享静态数据字典最大空间可以为48KB((2+1)×16K)。为了加快解压缩速度,在本发明实施例中可以对数据字典采用缓存处理。字典表在实际存储时,会划分成块,例如每块为12K。这样字典表的块可以为其基本缓存单元。用户可以为字典表缓存配置大小,数据库例如按照12K进行分块来缓存读取数据。当缓存空间不足时,例如可以采用最少使用算法(Least Recently Used,简称为“LRU”)进行页面淘汰。同时,对于同一个静态字典表的多个块,由于压缩访问字典表时,都从第一个块开始匹配,因而可以先淘汰后面的块。
在本发明实施例中,基于共享静态字典的列级压缩方式使得压缩和解压是对单个元组的单个列值进行的。下面将结合图4,描述对于一个新插入的元组进行压缩处理的过程。
如图4所示,在S301中,编码器定位到新元祖存储的页面。
在S302中,编码器确定要压缩的列。
在S303中,根据数据页头部记录中的字典表标识向量,获得该数据页每个压缩字段所对应的静态字典表标识。
在S304中,确定该静态字典表标识是否无效,如果该标识无效,则流程进行到S305;否则,流程进行到S306。
在S305中,当数据列为该数据页的第一次压缩时,可能并没有静态字典表标识,那么可以会先获得一个字典表标识,并记录到字典表标识向量的相应位置中。
在S306中,结合该列的共享字典表和字典表标识获得对应的目标静态字典表。
在S307中,采用该目标静态字典表对该数据列进行压缩处理。
在S308中,确定当前数据列是否是最后一个压缩列,如果是最后一个压缩列,则流程结束;否则流程进行到S302。
还应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
因此,本发明实施例的压缩数据的方法,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
上文中结合图1至图4,详细描述了根据本发明实施例的压缩数据的方法,下面将结合图5和图6,描述根据本发明实施例的解压数据的方法。
图5示出了根据本发明实施例的解压数据的方法400的示意性流程图,该方法400例如可以由解码器执行。如图5所示,该方法400包括:
S410,确定待解压的编码数据;
S420,获取与该编码数据对应的独立存储的目标静态字典表;
S430,将该编码数据作为编码流,将该目标静态字典表作为解码字典,对该编码数据进行解压。
因此,本发明实施例的解压数据的方法,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
在本发明实施例中,可选地,该获取与该编码数据对应的独立存储的目标静态字典表,包括:
在本地独立存储的全局字典中,根据压缩该编码数据采用的字典表标识,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
可选地,该获取与该编码数据对应的独立存储的目标静态字典表,包括:
根据数据页头部存储的字典表标识向量,确定与该数据页包括的该编码数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待解压列对应的一个静态字典表标识。
根据本发明实施例的解压数据的方法,使得压缩的列值可以在需要时才解压,即将解压过程推迟到不得不解压的时候,这对于提升查询性能尤为明显。如果采用行级压缩和解压处理,那么进行条件判别时,就需要对每个字段进行解压处理,而对于根据本发明实施例的采用列级压缩和解压处理方法,只有涉及到该列值的需求时,才需要解压,由此能够大大降低解压的比重。下面将结合图6对条件判别过程中的解压处理流程进行说明。
如图6所示,在S501中,获得一个元组,该元组例如是需要判断是否符合条件的记录等。
在S502中,确定待查询的数据库或数据表中是否存在未压缩的判定列,如果存在未压缩的判定列,则流程进行到S503;否则,不存在未压缩的判定列时流程进行到S505。
在S503中,对未压缩列进行条件判定。
在S504中,判断该元组是否满足条件,如果满足条件,则流程进行到S505;如果不满足条件,则流程进行到S512。
在S505中,确定待查询的数据库或数据表中是否存在压缩的判定列,如果存在压缩判定列,则流程进行到S506;否则,流程进行到S511。
在S506中,获得一个压缩列。
在S507中,根据字典表ID向量获得该压缩列对应的静态字典表。
在S508中,对该压缩列进行解压。
在S509中,确定是否符合判断条件,如果符合判断条件,则流程进行到S510;否则,流程进行到S512。
在S510中,确定是否是最后一个压缩列,如果是最后一个压缩列,则流程进行到S511;否则,流程进行到S506。
在S511中,确定该元组符合条件。
在S512中,确定该元组不符合条件。
在图6所示的解压处理流程中,可以首先处理未压缩的列的判定,并且获知未压缩列都满足后,才需对压缩列依次进行解压判定。因此,基于共享字典表的LZW列级压缩使得列值只有在需要时才解压,从而能够提升查询性能。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
还应理解,根据本发明实施例的解压数据方法的相关特性、功能等与根据本发明实施例的压缩数据方法相应,为了简洁,在此不再赘述。
因此,本发明实施例的解压数据的方法,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
上文中结合图1至图6,详细描述了根据本发明实施例的压缩数据的方法和解压数据的方法,下面将结合图7至图12,详细描述根据本发明实施例的编码器和解码器。
图7示出了根据本发明实施例的编码器600的示意性框图。如图7所示,该编码器600包括:
确定模块610,用于确定待压缩的列级数据;
获取模块620,用于获取与该确定模块610确定的该列级数据对应的目标静态字典表;
压缩模块630,用于将该确定模块610确定的该列级数据作为数据流,将该获取模块620获取的该目标静态字典表作为编码字典,对该列级数据进行压缩;
存储模块640,用于在该压缩模块压缩630完成后,独立存储该获取模块620获取的该目标静态字典表,以便于该目标静态字典表用于其它列级数据的压缩。
因此,本发明实施例的编码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
在本发明实施例中,可选地,该确定模块610具体用于:根据结构化查询语言SQL语句指示的待压缩的列,确定该列级数据。可选地,该SQL语句还用于指示同一个表或不同表的至少一个列采用同一该目标静态字典表进行压缩。
如图8所示,在本发明实施例中,可选地,该获取模块620包括:
第一获取单元621,用于在本地独立存储的全局字典中,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
可选地,如图8所示,该获取模块620包括:
第二获取单元622,用于在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与该列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将该第一静态字典表作为该目标静态字典表。
可选地,如图8所示,该获取模块620包括:
第三获取单元623,用于根据数据页头部存储的字典表标识向量,确定与该数据页中指定的待压缩的该列级数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待压缩列对应的一个静态字典表标识。
应理解,根据本发明实施例的编码器600,可对应于本发明实施例中的执行压缩数据的方法的执行主体,并且编码器600中的各个模块的上述和其它操作和/或功能分别为了实现图1至图4中的各个方法的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的编码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
图9示出了根据本发明实施例的解码器700的示意性框图。如图7所示,该解码器700包括:
确定模块710,用于确定待解压的编码数据;
获取模块720,用于获取与该确定模块710确定的该编码数据对应的独立存储的目标静态字典表;
解压模块730,用于将该确定模块710确定的该编码数据作为编码流,将该获取模块720获取的该目标静态字典表作为解码字典,对该编码数据进行解压。
因此,本发明实施例的解码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
可选地,如图10所示,该获取模块720包括:
第一获取单元721,用于在本地独立存储的全局字典中,根据压缩该编码数据采用的字典表标识,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
可选地,如图10所示,该获取模块720包括:
第二获取单元722,用于根据数据页头部存储的字典表标识向量,确定与该数据页包括的该编码数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待解压列对应的一个静态字典表标识。
应理解,根据本发明实施例的解码器700,可对应于本发明实施例中的执行解压数据的方法的执行主体,并且解码器700中的各个模块的上述和其它操作和/或功能分别为了实现图5和图6中的各个方法的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的解码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
如图11所示,本发明实施例还提供了一种编码器800,该编码器800包括处理器810、存储器820和总线系统830。其中,处理器810和存储器820通过总线系统830相连,该存储器820用于存储指令,该处理器810用于执行该存储器820存储的指令。其中,该处理器810用于:确定待压缩的列级数据;获取与该列级数据对应的目标静态字典表;将该列级数据作为数据流,将该目标静态字典表作为编码字典,对该列级数据进行压缩;压缩完成后,独立存储该目标静态字典表,以便于该目标静态字典表用于其它列级数据的压缩。
因此,本发明实施例的编码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
应理解,在本发明实施例中,该处理器810可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器810还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器820可以包括只读存储器和随机存取存储器,并向处理器810提供指令和数据。存储器820的一部分还可以包括非易失性随机存取存储器。例如,存储器820还可以存储设备类型的信息。
该总线系统830除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统830。
在实现过程中,上述方法的各步骤可以通过处理器810中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器820,处理器810读取存储器820中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
可选地,作为一个实施例,该处理器810确定待压缩的列级数据包括:根据结构化查询语言SQL语句指示的待压缩的列,确定该列级数据。
可选地,作为一个实施例,该SQL语句还用于指示同一个表或不同表的至少一个列采用同一该目标静态字典表进行压缩。
可选地,作为一个实施例,该处理器810获取与该列级数据对应的目标静态字典表,包括:在本地独立存储的全局字典中,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
可选地,作为一个实施例,该处理器810获取与该列级数据对应的目标静态字典表,包括:在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与该列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将该第一静态字典表作为该目标静态字典表。
可选地,作为一个实施例,该处理器810获取与该列级数据对应的目标静态字典表,包括:根据数据页头部存储的字典表标识向量,确定与该数据页中指定的待压缩的该列级数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待压缩列对应的一个静态字典表标识。
应理解,根据本发明实施例的编码器800,可对应于本发明实施例中的执行压缩数据的方法的执行主体以及编码器600,并且编码器800中的各个模块的上述和其它操作和/或功能分别为了实现图1至图4中的各个方法的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的编码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
如图12所示,本发明实施例还提供了一种解码器900,该解码器900包括处理器910、存储器920和总线系统930。其中,处理器910和存储器920通过总线系统930相连,该存储器920用于存储指令,该处理器910用于执行该存储器920存储的指令。其中,该处理器910用于:确定待解压的编码数据;获取与该编码数据对应的独立存储的目标静态字典表;将该编码数据作为编码流,将该目标静态字典表作为解码字典,对该编码数据进行解压。
因此,本发明实施例的解码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
应理解,在本发明实施例中,该处理器910可以是中央处理单元(CentralProcessing Unit,简称为“CPU”),该处理器910还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。存储器920的一部分还可以包括非易失性随机存取存储器。例如,存储器920还可以存储设备类型的信息。
该总线系统930除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统930。
在实现过程中,上述方法的各步骤可以通过处理器910中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器920,处理器910读取存储器920中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
可选地,作为一个实施例,该处理器910获取与该编码数据对应的独立存储的目标静态字典表,包括:在本地独立存储的全局字典中,根据压缩该编码数据采用的字典表标识,获取该目标静态字典表,其中,该全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
可选地,作为一个实施例,该处理器910获取与该编码数据对应的独立存储的目标静态字典表,包括:根据数据页头部存储的字典表标识向量,确定与该数据页包括的该编码数据对应的该目标静态字典表,其中,该字典表标识向量依次存储与该数据页中每个指定的待解压列对应的一个静态字典表标识。
应理解,根据本发明实施例的解码器900,可对应于本发明实施例中的执行解压数据的方法的执行主体以及解码器700,并且解码器900中的各个模块的上述和其它操作和/或功能分别为了实现图5和图6中的各个方法的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的解码器,由于静态字典表与数据分离存储,避免了每次压缩都需要重建字典表,并使得不同的压缩对象之间能够共享字典表,从而能够进行列压缩,并能够提高压缩比率,以及提升操作性能。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (18)
1.一种压缩数据的方法,其特征在于,包括:
确定待压缩的列级数据;
获取与所述列级数据对应的目标静态字典表;
将所述列级数据作为数据流,将所述目标静态字典表作为编码字典,对所述列级数据进行压缩;
压缩完成后,独立存储所述目标静态字典表,以便于所述目标静态字典表用于其它列级数据的压缩。
2.根据权利要求1所述的方法,其特征在于,所述确定待压缩的列级数据,包括:
根据结构化查询语言SQL语句指示的待压缩的列,确定所述列级数据。
3.根据权利要求2所述的方法,其特征在于,所述SQL语句还用于指示同一个表或不同表的至少一个列采用同一所述目标静态字典表进行压缩。
4.根据权利要求1所述的方法,其特征在于,所述获取与所述列级数据对应的目标静态字典表,包括:
在本地独立存储的全局字典中,获取所述目标静态字典表,其中,所述全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
5.根据权利要求1所述的方法,其特征在于,所述获取与所述列级数据对应的目标静态字典表,包括:
在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与所述列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将所述第一静态字典表作为所述目标静态字典表。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取与所述列级数据对应的目标静态字典表,包括:
根据数据页头部存储的字典表标识向量,确定与所述数据页中指定的待压缩的所述列级数据对应的所述目标静态字典表,其中,所述字典表标识向量依次存储与所述数据页中每个指定的待压缩列对应的一个静态字典表标识。
7.一种解压数据的方法,其特征在于,包括:
确定待解压的编码数据;
获取与所述编码数据对应的独立存储的目标静态字典表;
将所述编码数据作为编码流,将所述目标静态字典表作为解码字典,对所述编码数据进行解压。
8.根据权利要求7所述的方法,其特征在于,所述获取与所述编码数据对应的独立存储的目标静态字典表,包括:
在本地独立存储的全局字典中,根据压缩所述编码数据采用的字典表标识,获取所述目标静态字典表,其中,所述全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
9.根据权利要求7或8所述的方法,其特征在于,所述获取与所述编码数据对应的独立存储的目标静态字典表,包括:
根据数据页头部存储的字典表标识向量,确定与所述数据页包括的所述编码数据对应的所述目标静态字典表,其中,所述字典表标识向量依次存储与所述数据页中每个指定的待解压列对应的一个静态字典表标识。
10.一种编码器,其特征在于,包括:
确定模块,用于确定待压缩的列级数据;
获取模块,用于获取与所述确定模块确定的所述列级数据对应的目标静态字典表;
压缩模块,用于将所述确定模块确定的所述列级数据作为数据流,将所述获取模块获取的所述目标静态字典表作为编码字典,对所述列级数据进行压缩;
存储模块,用于在所述压缩模块压缩完成后,独立存储所述获取模块获取的所述目标静态字典表,以便于所述目标静态字典表用于其它列级数据的压缩。
11.根据权利要求10所述的编码器,其特征在于,所述确定模块具体用于:根据结构化查询语言SQL语句指示的待压缩的列,确定所述列级数据。
12.根据权利要求11所述的编码器,其特征在于,所述SQL语句还用于指示同一个表或不同表的至少一个列采用同一所述目标静态字典表进行压缩。
13.根据权利要求10所述的编码器,其特征在于,所述获取模块包括:
第一获取单元,用于在本地独立存储的全局字典中,获取所述目标静态字典表,其中,所述全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
14.根据权利要求10所述的编码器,其特征在于,所述获取模块包括:
第二获取单元,用于在本地没有独立存储的全局字典,或本地独立存储的全局字典中没有与所述列级数据对应的静态字典表时,新建一个空的第一静态字典表,并将所述第一静态字典表作为所述目标静态字典表。
15.根据权利要求10至14中任一项所述的编码器,其特征在于,所述获取模块包括:
第三获取单元,用于根据数据页头部存储的字典表标识向量,确定与所述数据页中指定的待压缩的所述列级数据对应的所述目标静态字典表,其中,所述字典表标识向量依次存储与所述数据页中每个指定的待压缩列对应的一个静态字典表标识。
16.一种解码器,其特征在于,包括:
确定模块,用于确定待解压的编码数据;
获取模块,用于获取与所述确定模块确定的所述编码数据对应的独立存储的目标静态字典表;
解压模块,用于将所述确定模块确定的所述编码数据作为编码流,将所述获取模块获取的所述目标静态字典表作为解码字典,对所述编码数据进行解压。
17.根据权利要求16所述的解码器,其特征在于,所述获取模块包括:
第一获取单元,用于在本地独立存储的全局字典中,根据压缩所述编码数据采用的字典表标识,获取所述目标静态字典表,其中,所述全局字典包括至少一个静态字典表,每个静态字典表具有全局唯一的标识。
18.根据权利要求16或17所述的解码器,其特征在于,所述获取模块包括:
第二获取单元,用于根据数据页头部存储的字典表标识向量,确定与所述数据页包括的所述编码数据对应的所述目标静态字典表,其中,所述字典表标识向量依次存储与所述数据页中每个指定的待解压列对应的一个静态字典表标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310172509.XA CN103326732B (zh) | 2013-05-10 | 2013-05-10 | 压缩数据的方法、解压数据的方法、编码器和解码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310172509.XA CN103326732B (zh) | 2013-05-10 | 2013-05-10 | 压缩数据的方法、解压数据的方法、编码器和解码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103326732A true CN103326732A (zh) | 2013-09-25 |
CN103326732B CN103326732B (zh) | 2016-12-28 |
Family
ID=49195297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310172509.XA Active CN103326732B (zh) | 2013-05-10 | 2013-05-10 | 压缩数据的方法、解压数据的方法、编码器和解码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103326732B (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631927A (zh) * | 2013-12-03 | 2014-03-12 | 南京邮电大学 | 一种基于话单数据的压缩和存储方法 |
CN105099460A (zh) * | 2014-05-07 | 2015-11-25 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
CN105846825A (zh) * | 2015-01-30 | 2016-08-10 | 富士通株式会社 | 压缩方法、解压缩方法、压缩装置以及解压缩装置 |
CN103701470B (zh) * | 2013-12-27 | 2017-02-01 | 上海新浩艺软件有限公司 | 一种流智能预测差异压缩算法及相应的控制装置 |
CN106506456A (zh) * | 2016-10-13 | 2017-03-15 | 重庆金美通信有限责任公司 | 一种基于lzw压缩算法对ospf协议报文进行压缩和加密的方法 |
CN106713394A (zh) * | 2015-11-16 | 2017-05-24 | 华为技术有限公司 | 一种数据传输方法和装置 |
CN107483055A (zh) * | 2017-08-04 | 2017-12-15 | 北京世纪铭辰科技有限公司 | 一种无损压缩方法及系统 |
WO2018014761A1 (zh) * | 2016-07-22 | 2018-01-25 | 华为技术有限公司 | 数据处理方法及装置 |
CN108400840A (zh) * | 2018-02-05 | 2018-08-14 | 杭州点壹下通讯科技有限公司 | 一种智能家居管理方法 |
WO2018157765A1 (zh) * | 2017-03-02 | 2018-09-07 | 华为技术有限公司 | 数据库系统中对象的编码及运算方法与数据库服务器 |
CN108563796A (zh) * | 2018-05-04 | 2018-09-21 | 蔷薇信息技术有限公司 | 区块链的数据压缩处理方法、装置及电子设备 |
CN108768403A (zh) * | 2018-05-30 | 2018-11-06 | 中国人民解放军战略支援部队信息工程大学 | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 |
CN109412604A (zh) * | 2018-12-05 | 2019-03-01 | 云孚科技(北京)有限公司 | 一种基于语言模型的数据压缩方法 |
CN109660577A (zh) * | 2017-10-10 | 2019-04-19 | 中国移动通信有限公司研究院 | 信息传输方法、通信设备及存储介质 |
WO2019100937A1 (zh) * | 2017-11-27 | 2019-05-31 | 电信科学技术研究院有限公司 | 一种进行数据传输的方法和设备 |
CN105322969B (zh) * | 2015-12-09 | 2019-06-18 | 北京奇虎科技有限公司 | 数据压缩及解压的方法及装置 |
CN110732136A (zh) * | 2019-10-17 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 局外环境下局内行为的预览方法、装置、终端及存储介质 |
WO2020156261A1 (zh) * | 2019-01-31 | 2020-08-06 | 华为技术有限公司 | 一种数据压缩的方法及基站 |
CN111767280A (zh) * | 2020-04-17 | 2020-10-13 | 北京沃东天骏信息技术有限公司 | 数据处理方法、装置及存储介质 |
CN111817722A (zh) * | 2020-07-09 | 2020-10-23 | 北京奥星贝斯科技有限公司 | 数据压缩方法、装置及计算机设备 |
CN113297155A (zh) * | 2021-05-21 | 2021-08-24 | 曙光信息产业(北京)有限公司 | 数据存储方法、装置及可读存储介质 |
WO2021238061A1 (zh) * | 2020-05-29 | 2021-12-02 | 南京依维柯汽车有限公司 | 一种提高汽车下线诊断系统的诊断效率的方法 |
CN115276665A (zh) * | 2022-09-28 | 2022-11-01 | 江苏森信达生物科技有限公司 | 一种原料药的智能管理方法和系统 |
CN115774699A (zh) * | 2023-01-30 | 2023-03-10 | 本原数据(北京)信息技术有限公司 | 数据库共享字典压缩方法、装置、电子设备及存储介质 |
CN115801902A (zh) * | 2023-02-09 | 2023-03-14 | 北京特立信电子技术股份有限公司 | 一种网络访问请求数据的压缩方法 |
CN115934730A (zh) * | 2023-01-09 | 2023-04-07 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5534861A (en) * | 1993-04-16 | 1996-07-09 | International Business Machines Corporation | Method and system for adaptively building a static Ziv-Lempel dictionary for database compression |
CN1228887A (zh) * | 1996-07-24 | 1999-09-15 | 尤尼西斯公司 | 与串搜索交错进行即时字典更新的数据压缩和解压缩系统 |
US6426711B1 (en) * | 2001-05-14 | 2002-07-30 | Unisys Corporation | Character table implemented data compression method and apparatus |
US7764201B2 (en) * | 2008-11-26 | 2010-07-27 | Red Hat, Inc. | Table management for LZW with fixed-size tables |
-
2013
- 2013-05-10 CN CN201310172509.XA patent/CN103326732B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5534861A (en) * | 1993-04-16 | 1996-07-09 | International Business Machines Corporation | Method and system for adaptively building a static Ziv-Lempel dictionary for database compression |
CN1228887A (zh) * | 1996-07-24 | 1999-09-15 | 尤尼西斯公司 | 与串搜索交错进行即时字典更新的数据压缩和解压缩系统 |
US6426711B1 (en) * | 2001-05-14 | 2002-07-30 | Unisys Corporation | Character table implemented data compression method and apparatus |
US7764201B2 (en) * | 2008-11-26 | 2010-07-27 | Red Hat, Inc. | Table management for LZW with fixed-size tables |
Non-Patent Citations (3)
Title |
---|
张辉: "基于支持列存储的数据压缩算法研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 15 August 2010 (2010-08-15) * |
林闽等: "基于网络字典的无损数据压缩方法", 《九江职业技术学院学报》, 31 January 2012 (2012-01-31), pages 17 - 18 * |
王振玺等: "列存储数据区级压缩模式与压缩策略选择方法", 《计算机学报》, vol. 33, no. 8, 31 August 2010 (2010-08-31), pages 1523 - 1530 * |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631927A (zh) * | 2013-12-03 | 2014-03-12 | 南京邮电大学 | 一种基于话单数据的压缩和存储方法 |
CN103701470B (zh) * | 2013-12-27 | 2017-02-01 | 上海新浩艺软件有限公司 | 一种流智能预测差异压缩算法及相应的控制装置 |
CN105099460B (zh) * | 2014-05-07 | 2018-05-04 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
CN105099460A (zh) * | 2014-05-07 | 2015-11-25 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
CN105846825A (zh) * | 2015-01-30 | 2016-08-10 | 富士通株式会社 | 压缩方法、解压缩方法、压缩装置以及解压缩装置 |
CN105846825B (zh) * | 2015-01-30 | 2019-06-18 | 富士通株式会社 | 压缩方法、解压缩方法、压缩装置以及解压缩装置 |
CN106713394A (zh) * | 2015-11-16 | 2017-05-24 | 华为技术有限公司 | 一种数据传输方法和装置 |
US10979520B2 (en) | 2015-11-16 | 2021-04-13 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
CN105322969B (zh) * | 2015-12-09 | 2019-06-18 | 北京奇虎科技有限公司 | 数据压缩及解压的方法及装置 |
CN107643906A (zh) * | 2016-07-22 | 2018-01-30 | 华为技术有限公司 | 数据处理方法及装置 |
CN107643906B (zh) * | 2016-07-22 | 2021-01-05 | 华为技术有限公司 | 数据处理方法及装置 |
WO2018014761A1 (zh) * | 2016-07-22 | 2018-01-25 | 华为技术有限公司 | 数据处理方法及装置 |
CN106506456B (zh) * | 2016-10-13 | 2019-08-16 | 重庆金美通信有限责任公司 | 一种基于lzw压缩算法对ospf协议报文进行压缩和加密的方法 |
CN106506456A (zh) * | 2016-10-13 | 2017-03-15 | 重庆金美通信有限责任公司 | 一种基于lzw压缩算法对ospf协议报文进行压缩和加密的方法 |
WO2018157765A1 (zh) * | 2017-03-02 | 2018-09-07 | 华为技术有限公司 | 数据库系统中对象的编码及运算方法与数据库服务器 |
US11194806B2 (en) | 2017-03-02 | 2021-12-07 | Huawei Technologies Co., Ltd. | Object encoding and computation method in database system and database server |
CN107483055A (zh) * | 2017-08-04 | 2017-12-15 | 北京世纪铭辰科技有限公司 | 一种无损压缩方法及系统 |
CN107483055B (zh) * | 2017-08-04 | 2020-06-16 | 北京世纪铭辰科技有限公司 | 一种无损压缩方法及系统 |
CN109660577A (zh) * | 2017-10-10 | 2019-04-19 | 中国移动通信有限公司研究院 | 信息传输方法、通信设备及存储介质 |
WO2019100937A1 (zh) * | 2017-11-27 | 2019-05-31 | 电信科学技术研究院有限公司 | 一种进行数据传输的方法和设备 |
CN109842653A (zh) * | 2017-11-27 | 2019-06-04 | 电信科学技术研究院 | 一种进行数据传输的方法和设备 |
CN109842653B (zh) * | 2017-11-27 | 2022-04-01 | 大唐移动通信设备有限公司 | 一种进行数据传输的方法和设备 |
TWI701955B (zh) * | 2017-11-27 | 2020-08-11 | 大陸商電信科學技術研究院有限公司 | 一種進行資料傳輸的方法和設備 |
CN108400840A (zh) * | 2018-02-05 | 2018-08-14 | 杭州点壹下通讯科技有限公司 | 一种智能家居管理方法 |
CN108563796A (zh) * | 2018-05-04 | 2018-09-21 | 蔷薇信息技术有限公司 | 区块链的数据压缩处理方法、装置及电子设备 |
CN108768403B (zh) * | 2018-05-30 | 2021-08-20 | 中国人民解放军战略支援部队信息工程大学 | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 |
CN108768403A (zh) * | 2018-05-30 | 2018-11-06 | 中国人民解放军战略支援部队信息工程大学 | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 |
CN109412604A (zh) * | 2018-12-05 | 2019-03-01 | 云孚科技(北京)有限公司 | 一种基于语言模型的数据压缩方法 |
US11902401B2 (en) | 2019-01-31 | 2024-02-13 | Huawei Technologies Co., Ltd. | Data compression method and base station |
WO2020156261A1 (zh) * | 2019-01-31 | 2020-08-06 | 华为技术有限公司 | 一种数据压缩的方法及基站 |
CN110732136A (zh) * | 2019-10-17 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 局外环境下局内行为的预览方法、装置、终端及存储介质 |
CN111767280A (zh) * | 2020-04-17 | 2020-10-13 | 北京沃东天骏信息技术有限公司 | 数据处理方法、装置及存储介质 |
WO2021238061A1 (zh) * | 2020-05-29 | 2021-12-02 | 南京依维柯汽车有限公司 | 一种提高汽车下线诊断系统的诊断效率的方法 |
CN111817722A (zh) * | 2020-07-09 | 2020-10-23 | 北京奥星贝斯科技有限公司 | 数据压缩方法、装置及计算机设备 |
CN113297155A (zh) * | 2021-05-21 | 2021-08-24 | 曙光信息产业(北京)有限公司 | 数据存储方法、装置及可读存储介质 |
CN115276665A (zh) * | 2022-09-28 | 2022-11-01 | 江苏森信达生物科技有限公司 | 一种原料药的智能管理方法和系统 |
CN115276665B (zh) * | 2022-09-28 | 2022-12-20 | 江苏森信达生物科技有限公司 | 一种原料药的智能管理方法和系统 |
CN115934730A (zh) * | 2023-01-09 | 2023-04-07 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
CN115774699A (zh) * | 2023-01-30 | 2023-03-10 | 本原数据(北京)信息技术有限公司 | 数据库共享字典压缩方法、装置、电子设备及存储介质 |
CN115774699B (zh) * | 2023-01-30 | 2023-05-23 | 本原数据(北京)信息技术有限公司 | 数据库共享字典压缩方法、装置、电子设备及存储介质 |
CN115801902A (zh) * | 2023-02-09 | 2023-03-14 | 北京特立信电子技术股份有限公司 | 一种网络访问请求数据的压缩方法 |
CN115801902B (zh) * | 2023-02-09 | 2023-04-11 | 北京特立信电子技术股份有限公司 | 一种网络访问请求数据的压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103326732B (zh) | 2016-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103326732A (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
US8325069B2 (en) | System, method, and apparatus for a scalable processor architecture for a variety of string processing applications | |
US10644721B2 (en) | Processing core data compression and storage system | |
RU2629440C2 (ru) | Устройство и способ для ускорения операций сжатия и распаковки | |
US8407378B2 (en) | High-speed inline data compression inline with an eight byte data path | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
KR20130062889A (ko) | 데이터 압축 방법 및 시스템 | |
JP7426907B2 (ja) | 高度なデータベース圧縮解除 | |
GB2493103A (en) | Compressing copy pointers to a history buffer using variable length code tables | |
JP6641857B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
US11139828B2 (en) | Memory compression method and apparatus | |
CN103563255A (zh) | 用于可执行代码的压缩与实时解压缩的方法 | |
US11424761B2 (en) | Multiple symbol decoder | |
CN114222973A (zh) | 用于解压缩包括多个数据流的压缩输入数据的解压缩引擎 | |
US8463759B2 (en) | Method and system for compressing data | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
JP6931442B2 (ja) | 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法 | |
JP7210130B2 (ja) | 符号化プログラム、符号化方法および符号化装置 | |
CN103138766A (zh) | 数据压缩与解压缩的方法及装置 | |
Deng et al. | Evaluating memory compression and deduplication | |
Culpepper et al. | Revisiting bounded context block‐sorting transformations | |
US7612692B2 (en) | Bidirectional context model for adaptive compression | |
WO2024066753A1 (zh) | 压缩数据的方法和相关装置 | |
Kesavan et al. | Comparative Study on Data Compression Techniques in Cache to Promote Performance | |
JP2023132713A (ja) | データ伸張装置、メモリシステム、およびデータ伸張方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |