CN100343851C - 数据库压缩及解压缩方法 - Google Patents
数据库压缩及解压缩方法 Download PDFInfo
- Publication number
- CN100343851C CN100343851C CNB200410088783XA CN200410088783A CN100343851C CN 100343851 C CN100343851 C CN 100343851C CN B200410088783X A CNB200410088783X A CN B200410088783XA CN 200410088783 A CN200410088783 A CN 200410088783A CN 100343851 C CN100343851 C CN 100343851C
- Authority
- CN
- China
- Prior art keywords
- compression
- compression method
- database
- tuple
- numbering
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种数据库压缩方法,包括建立数据库元组的每一种属性类型的压缩方法集,对压缩方法编号;根据数据库元组的属性类型及值从该属性类型的压缩方法集中选择压缩方法,将压缩方法的编号存放在压缩后元组头部;利用压缩后元组头部存放的压缩方法编号所对应的压缩方法对数据库元组的属性值进行压缩,并将压缩后的属性值存放在压缩后元组中。相应地,本发明还公开了一种数据库解压缩方法,包括选取数据库元组头部中的压缩方法编号;根据所述压缩方法编号对应的压缩方法的解压函数对数据库元组的属性值解压缩;将解压缩后的属性值存放到解压后元组中。由于能够以元组为单位对数据库中数据压缩和解压缩,能够使压缩及解压缩效率高且处理开销小。
Description
技术领域
本发明涉及数据库系统及信息压缩领域,尤指一种元组级数据库压缩及解压缩方法。
背景技术
在大型数据库应用系统中,经常需要处理数百Gb、甚至上Tb级的数据,这些数据通常被保存在大规模磁盘阵列中。一方面,大规模磁盘阵列的使用对系统硬件成本的贡献不可小视;另一方面,大量的磁盘读写操作也使得输入/输出成为系统的主要性能瓶颈。若采用数据库压缩方法,对存储的数据进行压缩,可显著减少数据的磁盘占用,从而大大降低系统的硬件成本,同时还能提高系统的整体性能。
现有的数据库压缩产品主要有Winzip,Winrar等,这些产品都是基于通用的压缩方法,例如LZ(其全称为Lempel-Ziv,是用两位作者Abraham Lempel和Jacob Ziv的名字命名的)算法和LZW(其全称为Lempel-Ziv-Welch,是用三位作者Abraham Lempel、Jacob Ziv和TerryA.Welch的名字命名的)算法,这些压缩算法的基本假设是数据中存在有大量重复出现的子串,如数据“ABCDABC”中的子串“ABC”,通过将这些重复出现的子串用更短的编码表示来达到压缩的目的;同时,压缩算法必须在压缩后的数据中存放编码表以便于解压,例如在上面这个例子中,编码表中必须记录子串“ABC”和压缩所用编码之间的对应关系。
将上述压缩方法用于数据库压缩,主要有两方面的问题:一是上述压缩方法适用于压缩子串重复率较高的大型文本数据,而数据库中主要存放的结构数据不具有这一特征,因此无法获得很好的压缩效果;二是编码表需要占据大量的空间,以Winzip为例,即使压缩一个仅包含一个字节的数据,压缩后的数据长度也将达到200多个字节,而数据库中绝大多数元组的长度都不会超过这一长度,因此为了达到合理的压缩效率,其压缩解压过程必须以更大的单位进行,通常是单个页面或整个文件,而这意味着用户为了存取某个元组,必须将该元组所在的整个页面或整个文件进行压缩或解压,这大大增加了处理开销。
发明内容
本发明要解决的问题是提供一种压缩效率高且处理开销小的数据库中的数据压缩的数据库压缩方法。
为了解决上述问题,本发明采用以下技术方案:
一种数据库压缩方法,包括步骤:
a.建立数据库元组的每一种属性类型的压缩方法集,并对每一种压缩方法进行编号;
b.根据数据库元组的属性类型及值从该属性类型的压缩方法集中选择压缩方法,并将该压缩方法的编号存放在压缩后元组的头部;
c.利用压缩后元组头部存放的压缩方法的编号所对应的压缩方法对数据库元组的属性值进行压缩,并将压缩后的属性值存放在压缩后元组中。
进一步地,在步骤a中,所述属性类型为整数型,建立的压缩方法集为:
若所述属性值小于256,则将其压缩为一个字节,解压时将其扩展为四个字节,并将高位前三个字节设为0,并将其编号设为2;
若所述属性值大于等于256且小于65536,则将其压缩为两个字节,解压时将其扩展为四个字节,并将高位前两个字节设为0,并将其编号设为3;
若所述属性值大于等于65536且小于224,则将其压缩为三个字节,解压时将其扩展为四个字节,并将高位前一个字节设为0,并将其编号设为4。
进一步地,在步骤a中,所述属性类型为字符串,建立的压缩方法集为:
若所述字符串由中文字符构成,则其所有字符的高位均为1,将每个字符压缩为七个位,解压时将每七个位扩展为1个字节,并将其高位设为1,并将其编号设为2;
若所述字符串由ASCII字符构成,则其所有字符的高位均为0,将每个字符压缩为七个位,解压时将每七个位扩展为1个字节,并将其高位设为0,并将其编号设为3;
若所述字符串由英文字母、空格或者标点符号“,.‘:;?!”构成,则将每个字符压缩为六个位,并将其编号设为4,解压时对于每六个位:
若位于0~25之间,则将其扩展为“A”~“Z”,
若位于26~51之间,则将其扩展为“a”~“z”,
若等于52,则将其扩展为空格,
若位于53~59之间,则分别将其扩展为“,”、“.”、“‘”、“:”、“;”、“?”和“!”;
若所述字符串由数字“0”~“9”、字符“-/._,:”构成,则将每个字符压缩为四个位,并将其编号为5,解压时对于每四个位:
若位于0~9之间,则将其扩展为“0”~“9”,
若位于10~15之间,则分别将其扩展为“-”、“/”、“.”、“_”、“,”和“:”。
进一步地,在步骤a中,
编号0表示对应的属性值为空值;
编号1表示对应的属性值为不可压缩。
相应地,本发明要解决的另一个问题是提供一种解压缩效率高且处理开销小的用于解压缩数据库中的数据的数据库解压缩方法。
一种数据库解压缩方法,包括步骤:
从数据库表的头部取出元组的各属性类型,选取数据库元组头部中的压缩方法编号;
根据元组的属性类型和该属性的压缩方法编号所对应的压缩方法的解压函数对数据库元组的属性值进行解压缩;
将解压缩后的属性值存放到解压后元组中。
与现有技术相比,本发明数据库压缩及解压缩方法的有益效果:
由于是根据数据库元组的属性的类型,为每一个属性确定其最适宜的压缩方法,并将该压缩方法的编号存放在压缩后元组的头部,而不是对整个数据库都采用一种压缩方法,这样可使得压缩效率提高,同样在解压缩的时候,根据待解压缩元组头部的编号就可知其对应的压缩方法,以对其进行解压缩,因而,解压缩的效率也很高。
另外,由于压缩解压过程是以元组为单位,因此用户为了存取某个元组,只需要压缩或解压当前这个元组,而不必象通用压缩方法那样需要压缩或解压该元组所在的页面或文件,这样便大大降低了处理开销。
附图说明
图1是本发明数据库压缩方法的流程图;
图2是本发明数据库解压缩方法的流程图。
具体实施方式
如图1所示,本发明数据库压缩方法包括:
步骤10)建立数据库元组的每一种属性类型的压缩方法集,并对每一种压缩方法进行编号;
步骤11)根据数据库元组的属性类型及值从该属性类型的压缩方法集中选择压缩方法,并将该压缩方法的编号存放在压缩后元组的头部;
步骤12)利用压缩后元组头部存放的压缩方法的编号所对应的压缩方法对数据库元组的属性值进行压缩,并将压缩后的属性值存放在压缩后元组中。
下面以某省计划生育委员会育龄妇女信息数据库为例来详述本发明数据库压缩方法的技术方案。
由于数据库是由多张表构成的,每张表中又存放有多条元组(或称记录),每条元组包含多个属性(或称字段)。属性具有不同的类型,例如整数型、字符型、日期型等。对于同一表中所有元组所包含的属性数目是相同的,且所有元组所对应的同一个属性(或称为表中的一列)的类型也是相同的。
该数据库中存放了该省所有育龄妇女的有关信息,数据量大约为200Gb。在该数据库中存放的属性类型有两类,分别是整数型和字符串。
首先为每一种属性类型建立与其对应的压缩方法集,并对每种压缩方法进行编号。
每种压缩方法中包含压缩函数(用于压缩)和对应的解压函数(用于解压缩)。将压缩方法编号,其中编号0和1是保留的,不管属性是何种类型,编号0表示对应的属性值为空值,编号1表示对应的属性值为不可压缩。
本例中,当所述属性类型为整数型时,建立的压缩方法集为:
压缩方法1:若所述属性值小于256,则将其压缩为一个字节,并将其编号设为2,解压时将其扩展为四个字节,并将高位三个字节设为0;
压缩方法2:若所述属性值大于等于256且小于65536,则将其压缩为两个字节,并将其编号设为3,解压时将其扩展为四个字节,并将高位两个字节设为0;
压缩方法3:若所述属性值大于等于65536且小于224,则将其压缩为三个字节,并将其编号设为4,解压时将其扩展为四个字节,并将高位一个字节设为0。
当所述属性的类型为字符串时,建立的压缩方法集为:
压缩方法1:若所述字符串由中文字符构成,常见于中文信息,则其所有字符的高位均为1,将每个字符压缩为七个位,解压时将每七个位扩展为1个字节,并将其高位设为1,并将其编号设为2;
压缩方法2:若所述字符串由ASCII字符构成,常见于一般文本信息,则其所有字符的高位均为0,将每个字符压缩为七个位,解压时将每七个位扩展为1个字节,并将其高位设为0,并将其编号设为3;
压缩方法3:若所述字符串由英文字母、空格或者七个常见的标点符号“,.‘:;?!”构成,常见于英文信息,则将每个字符压缩为六个位,并将其编号设为4,解压时对于每六个位:1)如果位于0~25之间,则将其扩展为“A”~“Z”,2)如果位于26~51之间,则将其扩展为“a”~“z”,3)如果等于52,则将其扩展为空格,4)如果位于53~59之间,则分别将其扩展为“,”、“.”、“‘”、“:”、“;”、“?”和“!”;
压缩方法4:若所述字符串由数字“0”~“9”、字符“-/._,:”构成,常见于电话号码、邮政编码、身份证号码等,则将每个字符压缩为四个位,解压时对于每四个位:1)如果位于0~9之间,则将其扩展为“0”~“9”,2)如果位于10~15之间,则分别将其扩展为“-”、“/”、“.”、“_”、“,”和“:”,并将其编号为5。
下面以该数据库中的个人信息表为例,个人信息表的元组包含属性为姓名、身份证号、联系电话。例如:一个元组(张三、110102740101046、66160000),由于字符串“张三”全部由中文字符构成,因此选择的压缩方法为1,编号为2;由于字符串“110102740101046”和“66160000”均由数字构成,因此选择的压缩方法为4,编号为5。并将所选择的压缩方法的编号存放在压缩后元组的头部为<2550>(压缩后的数据统一以十六进制串表示,串中的每个字符表示一个十六进制数字,占半个字节)。
下一步是利用压缩后元组头部存放的压缩方法的编号所对应的压缩方法对数据库元组的属性值进行压缩,并将压缩后的属性值存放在压缩后元组中。对于本例的元组压缩后元组为<25507FE411010274010104666160000>,共18个字节(压缩前为27个字节)。
下面对三种数据库压缩方法的方案的压缩效果和处理开销进行比较:
方案A:不压缩;
方案B:采用通用压缩工具WinZip进行页面级压缩,页面大小为8Kb;
方案C:采用本发明数据库压缩方法。
在压缩效果方面,以整个该省计划生育委员会育龄妇女信息数据库为考察对象,并比较其压缩率(越小越好)。其中方案A由于不压缩,因此压缩率为100%,方案B的压缩率为79.4%,而方案C的压缩率为52.3%。
在处理开销方面,以该省计划生育委员会育龄妇女信息数据库中最大的一张表(包含有四千多万条元组)中的所有元组为考察对象,并比较其访问时间(越小越好),其中方案A耗时125秒,方案B耗时748秒,方案C耗时215秒。
综上所述本发明数据库压缩方法的压缩效率高而且处理开销小。
相应地,如图2所示,本发明数据库解压缩方法包括:
步骤20)提取数据库元组头部中的压缩方法编号;
步骤21)根据所述压缩方法编号所对应的压缩方法的解压函数对数据库元组的属性值进行解压缩;
步骤22)将解压缩后的属性值存放到解压后元组中。
还以上述该省计划生育委员会育龄妇女信息数据库为例,将上述采用本发明数据库压缩方法压缩后的元组解压缩,一个解压缩前元组为<25507FE411010274010104666160000>。
首先,将该数据库元组头部中的压缩方法编号提取出来,为<2550>,又因为对于同一个表中的所有元组相对应的属性的类型是相同的,故所有的属性类型都存放在表的头部而不必再存放在各个元组中,因而,在本例中还需从该表的头部提取出属性的类型,根据属性类型和该属性的压缩方法编号来确定其压缩方法为:
压缩方法编号2,其属性类型为字符串型,故其对应的压缩方法为1;
压缩方法编号5,属性类型为字符串,故其对应的压缩方法为4;
压缩方法编号5,属性类型为字符串,故对应的压缩方法为4;
对数据库元组的属性解压缩后存放在解压后元组中为:张三、110102740101046、66160000。
对于上述元组,使用本发明数据库压缩方法,压缩率为66.7%,由于元组长度过小,因此无法使用通用压缩方法进行压缩;同时解压时只需要解压该元组的所有属性,因此处理开销也远比通用压缩方法小。
以上所述仅是本发明数据库压缩及解压缩方法的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明数据库压缩及解压缩方法原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明数据库压缩及解压缩方法的保护范围。
Claims (5)
1、一种数据库压缩方法,其特征在于,包括以下步骤:
a.建立数据库元组的每一种属性类型的压缩方法集,并对每一种压缩方法进行编号;
b.根据数据库元组的属性类型及值从该属性类型的压缩方法集中选择压缩方法,并将该压缩方法的编号存放在压缩后元组的头部;
c.利用压缩后元组头部存放的压缩方法的编号所对应的压缩方法对数据库元组的属性值进行压缩,并将压缩后的属性值存放在压缩后元组中。
2、如权利要求1所述的数据库压缩方法,其特征在于,在所述步骤a中,所述属性类型为整数型,建立的压缩方法集为:
若所述属性值小于256,则将其压缩为一个字节,解压时将其扩展为四个字节,并将高位前三个字节设为0,并将其编号设为2;
若所述属性值大于等于256且小于65536,则将其压缩为两个字节,解压时将其扩展为四个字节,并将高位前两个字节设为0,并将其编号设为3;
若所述属性值大于等于65536且小于224,则将其压缩为三个字节,解压时将其扩展为四个字节,并将高位前一个字节设为0,并将其编号设为4。
3、如权利要求1所述的数据库压缩方法,其特征在于,在所述步骤a中,所述属性类型为字符串,建立的压缩方法集为:
若所述字符串由中文字符构成,则其所有字符的高位均为1,将每个字符压缩为七个位,解压时将每七个位扩展为1个字节,并将其高位设为1,并将其编号设为2;
若所述字符串由ASCII字符构成,则其所有字符的高位均为0,将每个字符压缩为七个位,解压时将每七个位扩展为1个字节,并将其高位设为0,并将其编号设为3;
若所述字符串由英文字母、空格或者标点符号“,.‘:;?!”构成,则将每个字符压缩为六个位,并将其编号设为4,解压时对于每六个位:
若位于0~25之间,则将其扩展为“A”~“Z”,
若位于26~51之间,则将其扩展为“a”~“z”,
若等于52,则将其扩展为空格,
若位于53~59之间,则分别将其扩展为“,”、“.”、“‘”、“:”、“;”、“?”和“!”;
若所述字符串由数字“0”~“9”、字符“-/._,:”构成,则将每个字符压缩为四个位,并将其编号设为5,解压时对于每四个位:
若位于0~9之间,则将其扩展为“0”~“9”,
若位于10~15之间,则分别将其扩展为“-”、“/”、“.”、“_”、“,”和“:”。
4、如权利要求2或者3所述的数据库压缩方法,其特征在于,在所述步骤a中,
编号0表示对应的属性值为空值;
编号1表示对应的属性值为不可压缩。
5、一种数据库解压缩方法,其特征在于,包括以下步骤:
从数据库表的头部取出元组的各属性类型,选取数据库元组头部中的压缩方法编号;
根据元组的属性类型和该属性的压缩方法编号所对应的压缩方法的解压函数对数据库元组的属性值进行解压缩;
将解压缩后的属性值存放到解压后元组中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410088783XA CN100343851C (zh) | 2004-11-03 | 2004-11-03 | 数据库压缩及解压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410088783XA CN100343851C (zh) | 2004-11-03 | 2004-11-03 | 数据库压缩及解压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1770150A CN1770150A (zh) | 2006-05-10 |
CN100343851C true CN100343851C (zh) | 2007-10-17 |
Family
ID=36751455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200410088783XA Active CN100343851C (zh) | 2004-11-03 | 2004-11-03 | 数据库压缩及解压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100343851C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103688259B (zh) * | 2011-05-19 | 2017-11-17 | 甲骨文国际公司 | 用于通过压缩和纵列存储进行自动数据放置的方法 |
CN103379136B (zh) * | 2012-04-17 | 2017-02-22 | 中国移动通信集团公司 | 一种日志采集数据压缩方法、解压缩方法及装置 |
CN102737132A (zh) * | 2012-06-25 | 2012-10-17 | 天津神舟通用数据技术有限公司 | 基于数据库行列混合存储的多规则复合压缩方法 |
CN103198127B (zh) * | 2013-04-10 | 2016-03-30 | 中国银行股份有限公司 | 大文件排序方法及系统 |
US9753983B2 (en) | 2013-09-19 | 2017-09-05 | International Business Machines Corporation | Data access using decompression maps |
CN105574021A (zh) * | 2014-10-14 | 2016-05-11 | 北京神州泰岳软件股份有限公司 | 一种数据库的数据压缩方法和装置 |
US10432217B2 (en) | 2016-06-28 | 2019-10-01 | International Business Machines Corporation | Page filtering via compression dictionary filtering |
CN106878054B (zh) * | 2016-12-26 | 2020-05-12 | 新华三技术有限公司 | 一种业务处理方法和装置 |
CN110288666B (zh) * | 2019-06-28 | 2023-10-03 | 深圳前海微众银行股份有限公司 | 一种数据压缩方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333313A (en) * | 1990-10-22 | 1994-07-26 | Franklin Electronic Publishers, Incorporated | Method and apparatus for compressing a dictionary database by partitioning a master dictionary database into a plurality of functional parts and applying an optimum compression technique to each part |
CN1251449A (zh) * | 1998-10-18 | 2000-04-26 | 华强 | 两类字典压缩算法在数据压缩中的组合带参运用 |
JP2000305822A (ja) * | 1999-04-26 | 2000-11-02 | Denso Corp | データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法 |
CN1405705A (zh) * | 2001-08-20 | 2003-03-26 | 北京九州计算机网络有限公司 | 计算机文件的智能压缩方法 |
-
2004
- 2004-11-03 CN CNB200410088783XA patent/CN100343851C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333313A (en) * | 1990-10-22 | 1994-07-26 | Franklin Electronic Publishers, Incorporated | Method and apparatus for compressing a dictionary database by partitioning a master dictionary database into a plurality of functional parts and applying an optimum compression technique to each part |
CN1251449A (zh) * | 1998-10-18 | 2000-04-26 | 华强 | 两类字典压缩算法在数据压缩中的组合带参运用 |
JP2000305822A (ja) * | 1999-04-26 | 2000-11-02 | Denso Corp | データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法 |
CN1405705A (zh) * | 2001-08-20 | 2003-03-26 | 北京九州计算机网络有限公司 | 计算机文件的智能压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1770150A (zh) | 2006-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ferragina et al. | Opportunistic data structures with applications | |
US8340914B2 (en) | Methods and systems for compressing and comparing genomic data | |
CN107210753B (zh) | 通过从驻留在内容关联滤筛中的基本数据单元导出数据的数据的无损简化 | |
Kuruppu et al. | Relative Lempel-Ziv compression of genomes for large-scale storage and retrieval | |
Wandelt et al. | Trends in genome compression | |
CN1183683C (zh) | 使用前缀预测的位自适应编码方法 | |
CN1536068A (zh) | 编码脱氧核糖核酸序列的方法和装置及计算机可读介质 | |
CN106202172B (zh) | 文本压缩方法及装置 | |
CN102804168A (zh) | 在数据库系统中减少存储需求的数据压缩 | |
CN1228887A (zh) | 与串搜索交错进行即时字典更新的数据压缩和解压缩系统 | |
CN100343851C (zh) | 数据库压缩及解压缩方法 | |
JPH06208453A (ja) | テキスト圧縮駆動部構築方法及び入力テキスト列圧縮方法 | |
CN1949670A (zh) | 一种数据压缩及解压缩方法 | |
CN101036298A (zh) | 静态赫夫曼解码的系统和方法 | |
CN1731364A (zh) | 数据库备份数据的压缩和检索方法 | |
CN1868127A (zh) | 数据压缩系统和方法 | |
CN1545067A (zh) | 一种利用计算机对数字化档案文件压缩的方法 | |
WO2011015199A1 (en) | Compression of bitmaps and values | |
CN105005464B (zh) | 一种Burrows Wheeler变换硬件处理装置 | |
CN110310709B (zh) | 一种基于参考序列的基因压缩方法 | |
CN1115782C (zh) | 一种适用于宽字符集文档的压缩方法 | |
CN102932001B (zh) | 运动捕获数据压缩、解压缩方法 | |
US20130173564A1 (en) | System and method for data compression using multiple encoding tables | |
CN110111852A (zh) | 一种海量dna测序数据无损快速压缩平台 | |
Cannane et al. | A compression scheme for large databases |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Yu Hui building 73 No. 100036 Beijing Haidian District Fucheng Road 17 layer Patentee after: Beijing Shenzhou Aerospace Software Technology Co.,Ltd. Address before: Yu Hui building 73 No. 100036 Beijing Haidian District Fucheng Road 17 layer Patentee before: BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co.,Ltd. |