CN102521363A - 基于列分解的列存储数据库数值数据压缩方法 - Google Patents
基于列分解的列存储数据库数值数据压缩方法 Download PDFInfo
- Publication number
- CN102521363A CN102521363A CN2011104218327A CN201110421832A CN102521363A CN 102521363 A CN102521363 A CN 102521363A CN 2011104218327 A CN2011104218327 A CN 2011104218327A CN 201110421832 A CN201110421832 A CN 201110421832A CN 102521363 A CN102521363 A CN 102521363A
- Authority
- CN
- China
- Prior art keywords
- data
- column
- compression method
- compression
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种用于列存储数据库的数值数据压缩方法,具体为:提取数据表中的一列数据,将所述列数据中的每个数据分解得到多个子列,每个子列内的不同数据占用空间相等,在每个子列内统计数据分布规律的特征值,依据所述数据分布规律的特征值选取相应的轻量级压缩算法进行压缩。本发明操作简单,适用于有规律和无规律分布的数值数据压缩。
Description
技术领域
本发明属于计算机中的数据库技术领域,具体涉及一种基于列分解的列存储数据库数值数据压缩方法。
背景技术
随着数据库技术的广泛应用,联机分析处理、数据仓库和数据挖掘等查询密集型应用对数据库管理系统的查询性能提出了更高的挑战。数据压缩技术是提高数据库管理系统的查询性能的方法之一。数据压缩的目的是为了减少I/O,从而提高查询效率。一般利用数据分布规律的特点来达到减少存储空间的目的。但是在查询的过程中,需要对数据进行解压。当解压所花费的时间超过了压缩所带来的数据查找及传输开销节约的时间时,压缩的效果就被抵消了。因此,需要在数据的压缩比和解压开销之间进行折中以保证查询效率。
在联机分析处理、决策支持等应用中,列存储数据库性能优于行存储数据库。原因是:在行存储数据库中,由于数据按照行的格式进行存储,而元组的各个属性的类型很可能不同,所以相邻数据之间关联性不强,使得压缩比不高。在列存储数据库中,数据是按列进行存储的,每一列的类型是一致的,数据之间存在较高的关联性,可以获得较高的压缩比。考虑到解压的时间开销,一般采用轻量级的压缩算法。重量级压缩算法虽然压缩比很高,但是解压的时间开销较大,并且无法在压缩后的数据上直接执行查询。
另外,在列存储数据库中,有一些专门针对字符型数据进行压缩的方法,以获取压缩比和解压开销之间的平衡。但是,专门针对数值型数据进行压缩的方法比较少。对于数值型的数据,如果其本身具有一定的分布规律,则可以利用轻量级压缩算法进行压缩。但是,当其本身并没有明显的分布规律时,就无法直接利用轻量级压缩算法进行压缩,需要研究更好的数值数据压缩方法。
发明内容
本发明的目的在于提供一种基于列分解的列存储数据库数值数据压缩方法,同时适用于数值型数据有明显分布规律和无明显分布规律的情况。
基于列分解的列存储数据库数值数据压缩方法,具体为:基于列分解的列存储数据库数值数据压缩方法,具体为:提取数据表中的一列数据,将所述列数据中的每个数据分解得到多个子列,每个子列内的不同数据占用空间相等,在每个子列内统计数据分布规律的特征值,依据所述数据分布规律的特征值选取相应的轻量级压缩算法对所述子列进行压缩。
所述子列中的每个数据占用空间为字节或字节的倍数。
所述不同子列中的数据占用空间相等或不相等。
所述轻量级压缩算法为字典编码压缩法、位图编码压缩法、行程编码压缩法、FOR编码压缩法中的一种。
本发明的技术效果体现在:
本发明将没有规律的数值数据列分解为若干个子列,然后分别在分解后的子列数据中统计数据分布规律的特征值,选择合适的轻量级压缩算法作为子列的数据压缩算法,分别对各个子列数据进行压缩,从而实现对没有规律的数值数据列的部分压缩。同样地,本发明也可适用于有规律的数值数据列压缩。
附图说明
图1为本发明方法工作流程图。
图2为本发明实例压缩后的存储示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述,但该实施例不应理解为对本发明的限制。
参考图1,基于列分解的列存储数据库数值数据压缩方法,具体为:提取数据表中的一列数据,将所述列数据中的每个数据分解从而得到多个子列,每个子列中的各数据占用空间相等,对每个子列统计数据分布规律的特征值,依据所述数据分布规律的特征值选取适当的轻量级压缩算法对所述子列进行压缩。
所述子列中的每个数据占用空间为字节或字节的倍数。所述不同子列中的数据占用空间相等或不相等。
对于每个待压缩的子列数据,扫描整个子列上的数据,统计数据分布规律的特征值,根据这些特征值计算采用各种轻量级压缩算法压缩后子列数据的占用空间,选择占用空间最小的作为压缩算法,对该子列数据进行压缩后存储。所述轻量级压缩算法为字典编码压缩法、位图编码压缩法、行程编码压缩法、FOR编码压缩法中的一种。
在数值数据列上进行的查询,则转换成在这S个子列上的查询,包括等值查询和范围查询两种情况,将查询条件中的值进行分解,转换为对这S个子列上的等值查询和范围查询,使得查询可以直接在压缩的子列数据上进行,将各个子列上的查询结果集求交,得到最终的查询结果。
实施例:
在数据库中定义基本表Table1(col1int),现在有一批数值数据143,768,4,20000,453,1081143,1048581需要装载进入数据库。显然这些数据分布特征不明显,难以直接采用轻量级的压缩算法进行压缩。现在将这些数据按照高低两个字节分解为两个子列,高16位和低16位后,发现前5个数据高16位全部为0,后两个数据高16位均为10H。因此可以利用数据的局部特征对数据进行进一步的压缩。
分别统计分解后的数据分布的三个特征值:不同值的个数B、数值变化的次数CB和每个数据与最小值差值的最大值MD。统计结果如表1所示。
统计特征 | 高16位 | 低16位 |
不同值的个数B | 2 | 7 |
数值变化的次数CB | 2 | 7 |
各数据与最小值差值的最大值MD | 10H | 7F33H |
表1特征统计表
不压缩时高16位和低16位局部子列所占用空间均为:2*7=14字节
当采用行程编码对高16位局部列进行压缩时,假设用(value,length)的格式进行压缩,其中value占用2个字节,length占用2个字节,则压缩后的数据所需空间为:2*(2+2)=8字节。对低16位局部列进行压缩,压缩后的数据所需空间为:(2+2)*7=28字节。
当采用FOR编码压缩(Frame of reference)时,对高16位局部列,每个值与最小值的差值所需要的bit位数为所以7个数据压缩后所需空间为:字节(因为还需要保存最小值)。对低16位局部列进行压缩,压缩后的数据所需空间为:字节。
当采用字典编码进行压缩时,对高16位局部列,字典表中每个值对应的字典值所需要的比特位数为因此压缩后的数据所占用的空间为:字典表的空间+压缩数据空间。所以7个数据压缩后所需空间为:字节;对于低16位数据,压缩数据所需空间为:字节。
比较三种编码所占用的空间,将采用字典编码方法对高16位数据进行压缩可得到比较好的压缩比。因此对于高16位的子列可以采用字典编码进行压缩,可以用7位来表示,而低16位数据分布特征仍然不明显,无论采用哪种压缩方式压缩效果都不好,则不压缩,低16位数据分解后不压缩保存在数据库中。
压缩后的数据存放形式如图2所示。
当用户发出查询请求:select*from Table1 where col1>800时,数据库管理系统根据col1列数据的压缩方法,将800分解为两部分:高16位s1’=0H和低16位s2’=320H。执行查询时,先用s1’查询高16位子列的字典表,找到大于等于s1’的最小字典数据的编码y1=0,再在压缩后高16位子列的1个字节数据中分离出每一个数据所占的位,判断该位是否≥y1,若是则保留该数据,否则筛选掉该数据。以第1-5个数据为例,分离出的位为0,表示第一个数据高16位等于s1’,此时还需要根据低16位判断是否将第一个数据筛选掉,又如第6和第7个数据,分离出的位为1,表示这个数据高16位大于s1’,可以确定该数据满足查询条件,不必继续判断了,为这个数据打上“满足条件”的标记,得到高16位子列的筛选结果。然后在低16位的子列数据中继续对未确定的数据(1-5)筛选。工作流程为比较数据(1-5)的低16位s2和s2’,是否满足s2>s2’,若是则是满足条件的数据,否则筛选掉该数据。如以第一个数据为例,比较s2=8F>s2’,发现不成立,则筛选掉该数据不放入结果集;又如以第四个数据为例,s2=4E20H,s2>s2成立,则将该数据放入结果集中。最后得到查询结果:
20000
1081143
1048581
本发明还可将上述实例按不同字节数划分进行分解得到另外两种分解方法:(1)将col1列分解为四个子列,每个子列内的数据均占一个字节,设从高位字节到低位字节的列分别为col11,col12,col13,col14,采用同样的方法分别对四个子列提取数据分布规律的特征值,可确定对子列col11和col12分别采用行程编码进行压缩,对子列col13和col14则不压缩;(2)将col1列分解为两个子列:高8位子列占一个字节,低24位子列占3个字节。分别对两个子列提取数据的分布规律的特征值,可确定对高8位子列采用行程编码进行压缩,对低24位子列则不压缩。
综合上述三种分解方式和数据的分布规律,在压缩和解压开销之间进行折中和平衡,得到采用第一种压缩方案可得到较好的查询性能。
由此可见,在整列上的数据不存在分布规律时,本发明仍然可以将这些数据部分地进行压缩,从而减少I/O提高列存储数据库的查询效率。这一方法仍然适用于整体列上的数值数据存在分布规律的情形。
Claims (4)
1.基于列分解的列存储数据库数值数据压缩方法,具体为:提取数据表中的一列数据,将所述列数据中的每个数据分解得到多个子列,每个子列内的不同数据占用空间相等,在每个子列内统计数据分布规律的特征值,依据所述数据分布规律的特征值选取相应的轻量级压缩算法对所述子列进行压缩。
2.根据权利要求1所述的列存储数据库数值数据压缩方法,其特征在于,所述子列中的每个数据占用空间为字节或字节的倍数。
3.根据权利要求1或2所述的列存储数据库数值数据压缩方法,其特征在于,所述不同子列中的数据占用空间相等或不相等。
4.根据权利要求1或2所述的列存储数据库数值数据压缩方法,其特征在于,所述轻量级压缩算法为字典编码压缩法、位图编码压缩法、行程编码压缩法和FOR编码压缩法中的一种。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104218327A CN102521363A (zh) | 2011-12-15 | 2011-12-15 | 基于列分解的列存储数据库数值数据压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104218327A CN102521363A (zh) | 2011-12-15 | 2011-12-15 | 基于列分解的列存储数据库数值数据压缩方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102521363A true CN102521363A (zh) | 2012-06-27 |
Family
ID=46292277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104218327A Pending CN102521363A (zh) | 2011-12-15 | 2011-12-15 | 基于列分解的列存储数据库数值数据压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521363A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631927A (zh) * | 2013-12-03 | 2014-03-12 | 南京邮电大学 | 一种基于话单数据的压缩和存储方法 |
CN103778258A (zh) * | 2014-02-27 | 2014-05-07 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN104424314A (zh) * | 2013-09-06 | 2015-03-18 | Sap欧洲公司 | 对列状表数据库的数据库操作 |
CN104462334A (zh) * | 2014-12-03 | 2015-03-25 | 天津南大通用数据技术股份有限公司 | 一种列存数据库的数据压缩方法及装置 |
US20150100556A1 (en) * | 2012-05-25 | 2015-04-09 | Clarion Co., Ltd. | Data Compression/Decompression Device |
CN104657388A (zh) * | 2013-11-22 | 2015-05-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
CN104682965A (zh) * | 2015-03-20 | 2015-06-03 | 深圳市微科通讯设备有限公司 | 一种gps数据的压缩方法 |
CN104753539A (zh) * | 2013-12-26 | 2015-07-01 | 中国移动通信集团公司 | 一种数据压缩方法及装置 |
CN104753540A (zh) * | 2015-03-05 | 2015-07-01 | 华为技术有限公司 | 数据压缩方法、数据解压方法和装置 |
CN104868922A (zh) * | 2014-02-24 | 2015-08-26 | 华为技术有限公司 | 数据压缩方法及装置 |
CN104951473A (zh) * | 2014-03-31 | 2015-09-30 | 中国移动通信集团宁夏有限公司 | 对数据进行压缩的方法和装置 |
CN105095278A (zh) * | 2014-05-13 | 2015-11-25 | 华为技术有限公司 | 一种文件压缩方法及装置 |
CN106156169A (zh) * | 2015-04-16 | 2016-11-23 | 深圳市腾讯计算机系统有限公司 | 离散数据的处理方法和装置 |
CN106383844A (zh) * | 2016-08-31 | 2017-02-08 | 天津南大通用数据技术股份有限公司 | 应用于特殊数据的存储方法及装置 |
CN110268397A (zh) * | 2016-12-30 | 2019-09-20 | 日彩电子科技(深圳)有限公司 | 应用于数据仓库系统的高效优化数据布局方法 |
CN112054802A (zh) * | 2020-07-29 | 2020-12-08 | 北京市腾河电子技术有限公司 | 一种电力计量数据压缩、解压缩方法、装置及电子设备 |
US10979520B2 (en) | 2015-11-16 | 2021-04-13 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
WO2023279964A1 (zh) * | 2021-07-08 | 2023-01-12 | 华为技术有限公司 | 数据压缩方法、装置、计算设备及存储系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241508A (zh) * | 2007-08-01 | 2008-08-13 | 金立 | 结构化数据序列的压缩方法 |
US7590641B1 (en) * | 2005-04-04 | 2009-09-15 | Qd Technology, Llc | Selecting various algorithms to compress columns of analytic data in a read-only relational database in a manner that allows decompression of the compressed data using minimal system resources |
CN101923569A (zh) * | 2010-07-09 | 2010-12-22 | 南京朗坤软件有限公司 | 一种实时数据库的结构类型数据的存储方法 |
-
2011
- 2011-12-15 CN CN2011104218327A patent/CN102521363A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590641B1 (en) * | 2005-04-04 | 2009-09-15 | Qd Technology, Llc | Selecting various algorithms to compress columns of analytic data in a read-only relational database in a manner that allows decompression of the compressed data using minimal system resources |
CN101241508A (zh) * | 2007-08-01 | 2008-08-13 | 金立 | 结构化数据序列的压缩方法 |
CN101923569A (zh) * | 2010-07-09 | 2010-12-22 | 南京朗坤软件有限公司 | 一种实时数据库的结构类型数据的存储方法 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150100556A1 (en) * | 2012-05-25 | 2015-04-09 | Clarion Co., Ltd. | Data Compression/Decompression Device |
US10116325B2 (en) * | 2012-05-25 | 2018-10-30 | Clarion Co., Ltd. | Data compression/decompression device |
CN104424314B (zh) * | 2013-09-06 | 2019-06-11 | Sap欧洲公司 | 对列状表数据库的数据库操作 |
CN104424314A (zh) * | 2013-09-06 | 2015-03-18 | Sap欧洲公司 | 对列状表数据库的数据库操作 |
CN104657388A (zh) * | 2013-11-22 | 2015-05-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
CN103631927A (zh) * | 2013-12-03 | 2014-03-12 | 南京邮电大学 | 一种基于话单数据的压缩和存储方法 |
CN104753539A (zh) * | 2013-12-26 | 2015-07-01 | 中国移动通信集团公司 | 一种数据压缩方法及装置 |
CN104868922A (zh) * | 2014-02-24 | 2015-08-26 | 华为技术有限公司 | 数据压缩方法及装置 |
CN104868922B (zh) * | 2014-02-24 | 2018-05-29 | 华为技术有限公司 | 数据压缩方法及装置 |
CN103778258A (zh) * | 2014-02-27 | 2014-05-07 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN103778258B (zh) * | 2014-02-27 | 2017-09-29 | 华为技术有限公司 | 一种数据库数据的发送、接收方法、客户端、服务器 |
CN104951473A (zh) * | 2014-03-31 | 2015-09-30 | 中国移动通信集团宁夏有限公司 | 对数据进行压缩的方法和装置 |
CN105095278A (zh) * | 2014-05-13 | 2015-11-25 | 华为技术有限公司 | 一种文件压缩方法及装置 |
CN105095278B (zh) * | 2014-05-13 | 2018-09-07 | 华为技术有限公司 | 一种文件压缩方法及装置 |
CN104462334A (zh) * | 2014-12-03 | 2015-03-25 | 天津南大通用数据技术股份有限公司 | 一种列存数据库的数据压缩方法及装置 |
CN104753540A (zh) * | 2015-03-05 | 2015-07-01 | 华为技术有限公司 | 数据压缩方法、数据解压方法和装置 |
CN104753540B (zh) * | 2015-03-05 | 2019-02-26 | 华为技术有限公司 | 数据压缩方法、数据解压方法和装置 |
CN104682965A (zh) * | 2015-03-20 | 2015-06-03 | 深圳市微科通讯设备有限公司 | 一种gps数据的压缩方法 |
CN106156169A (zh) * | 2015-04-16 | 2016-11-23 | 深圳市腾讯计算机系统有限公司 | 离散数据的处理方法和装置 |
CN106156169B (zh) * | 2015-04-16 | 2019-12-06 | 深圳市腾讯计算机系统有限公司 | 离散数据的处理方法和装置 |
US10979520B2 (en) | 2015-11-16 | 2021-04-13 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus |
CN106383844A (zh) * | 2016-08-31 | 2017-02-08 | 天津南大通用数据技术股份有限公司 | 应用于特殊数据的存储方法及装置 |
CN110268397A (zh) * | 2016-12-30 | 2019-09-20 | 日彩电子科技(深圳)有限公司 | 应用于数据仓库系统的高效优化数据布局方法 |
CN110268397B (zh) * | 2016-12-30 | 2023-06-13 | 日彩电子科技(深圳)有限公司 | 应用于数据仓库系统的高效优化数据布局方法 |
CN112054802A (zh) * | 2020-07-29 | 2020-12-08 | 北京市腾河电子技术有限公司 | 一种电力计量数据压缩、解压缩方法、装置及电子设备 |
CN112054802B (zh) * | 2020-07-29 | 2023-10-13 | 北京市腾河电子技术有限公司 | 一种电力计量数据压缩、解压缩方法、装置及电子设备 |
WO2023279964A1 (zh) * | 2021-07-08 | 2023-01-12 | 华为技术有限公司 | 数据压缩方法、装置、计算设备及存储系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521363A (zh) | 基于列分解的列存储数据库数值数据压缩方法 | |
US11036685B2 (en) | System and method for compressing data in a database | |
CN101241508B (zh) | 结构化数据序列的压缩方法 | |
EP2724269B1 (en) | System, method and data structure for fast loading, storing and access to huge data sets in real time | |
CN102122960B (zh) | 一种针对二进制数据的多字符组合无损数据压缩方法 | |
US20090254521A1 (en) | Frequency partitioning: entropy compression with fixed size fields | |
US20100049730A1 (en) | Efficient predicate evaluation via in-list | |
CN102609441A (zh) | 基于分布熵的局部敏感哈希高维索引方法 | |
CN105391454B (zh) | 一种dna 测序质量分数无损压缩方法 | |
CN104348490A (zh) | 一种基于效果优选的组合数据压缩算法 | |
CN101282121B (zh) | 一种基于条件概率的哈夫曼解码的方法 | |
KR20130036094A (ko) | 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법 | |
JP7006966B2 (ja) | ベクトル量子化の混合に基づく符号化方法及びこれを用いた最近傍探索(nns)方法 | |
CN112953550A (zh) | 数据压缩的方法、电子设备及存储介质 | |
CN110569263A (zh) | 实时数据去重计数方法及装置 | |
CN108287985A (zh) | 一种gpu加速的dna序列压缩方法及系统 | |
Huo et al. | A practical implementation of compressed suffix arrays with applications to self-indexing | |
CN104133883A (zh) | 电话号码归属地数据压缩算法 | |
CN104102680A (zh) | 时间序列的编码索引 | |
CN102831146A (zh) | 数据库子串过滤索引系统及其构建、查询方法 | |
CN105099460A (zh) | 字典压缩方法、字典解压缩方法与字典建构方法 | |
US20130222159A1 (en) | Entropy method of binary-ternary lossless data coding | |
Hamedanian et al. | An efficient prefix tree for incremental frequent pattern mining | |
CN104298774B (zh) | 一种利用函数查询哈希表的方法及系统 | |
Apaydin et al. | Analysis of basic data reordering techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120627 |