基于列分解的列存储数据库数值数据压缩方法

文档序号:6441471阅读:436来源:国知局
专利名称:基于列分解的列存储数据库数值数据压缩方法
技术领域
本发明属于计算机中的数据库技术领域,具体涉及一种基于列分解的列存储数据库数值数据压缩方法。
背景技术
随着数据库技术的广泛应用,联机分析处理、数据仓库和数据挖掘等查询密集型应用对数据库管理系统的查询性能提出了更高的挑战。数据压缩技术是提高数据库管理系统的查询性能的方法之一。数据压缩的目的是为了减少1/0,从而提高查询效率。一般利用数据分布规律的特点来达到减少存储空间的目的。但是在查询的过程中,需要对数据进行解压。当解压所花费的时间超过了压缩所带来的数据查找及传输开销节约的时间时,压缩的效果就被抵消了。因此,需要在数据的压缩比和解压开销之间进行折中以保证查询效率。在联机分析处理、决策支持等应用中,列存储数据库性能优于行存储数据库。原因是在行存储数据库中,由于数据按照行的格式进行存储,而元组的各个属性的类型很可能不同,所以相邻数据之间关联性不强,使得压缩比不高。在列存储数据库中,数据是按列进行存储的,每一列的类型是一致的,数据之间存在较高的关联性,可以获得较高的压缩比。 考虑到解压的时间开销,一般采用轻量级的压缩算法。重量级压缩算法虽然压缩比很高,但是解压的时间开销较大,并且无法在压缩后的数据上直接执行查询。另外,在列存储数据库中,有一些专门针对字符型数据进行压缩的方法,以获取压缩比和解压开销之间的平衡。但是,专门针对数值型数据进行压缩的方法比较少。对于数值型的数据,如果其本身具有一定的分布规律,则可以利用轻量级压缩算法进行压缩。但是,当其本身并没有明显的分布规律时,就无法直接利用轻量级压缩算法进行压缩,需要研究更好的数值数据压缩方法。

发明内容
本发明的目的在于提供一种基于列分解的列存储数据库数值数据压缩方法,同时适用于数值型数据有明显分布规律和无明显分布规律的情况。基于列分解的列存储数据库数值数据压缩方法,具体为基于列分解的列存储数据库数值数据压缩方法,具体为提取数据表中的一列数据,将所述列数据中的每个数据分解得到多个子列,每个子列内的不同数据占用空间相等,在每个子列内统计数据分布规律的特征值,依据所述数据分布规律的特征值选取相应的轻量级压缩算法对所述子列进行压缩。所述子列中的每个数据占用空间为字节或字节的倍数。所述不同子列中的数据占用空间相等或不相等。所述轻量级压缩算法为字典编码压缩法、位图编码压缩法、行程编码压缩法、FOR 编码压缩法中的一种。本发明的技术效果体现在
本发明将没有规律的数值数据列分解为若干个子列,然后分别在分解后的子列数据中统计数据分布规律的特征值,选择合适的轻量级压缩算法作为子列的数据压缩算法, 分别对各个子列数据进行压缩,从而实现对没有规律的数值数据列的部分压缩。同样地,本发明也可适用于有规律的数值数据列压缩。


图1为本发明方法工作流程图。图2为本发明实例压缩后的存储示意图。
具体实施例方式下面结合附图和实施例对本发明作进一步的描述,但该实施例不应理解为对本发明的限制。参考图1,基于列分解的列存储数据库数值数据压缩方法,具体为提取数据表中的一列数据,将所述列数据中的每个数据分解从而得到多个子列,每个子列中的各数据占用空间相等,对每个子列统计数据分布规律的特征值,依据所述数据分布规律的特征值选取适当的轻量级压缩算法对所述子列进行压缩。所述子列中的每个数据占用空间为字节或字节的倍数。所述不同子列中的数据占用空间相等或不相等。对于每个待压缩的子列数据,扫描整个子列上的数据,统计数据分布规律的特征值,根据这些特征值计算采用各种轻量级压缩算法压缩后子列数据的占用空间,选择占用空间最小的作为压缩算法,对该子列数据进行压缩后存储。所述轻量级压缩算法为字典编码压缩法、位图编码压缩法、行程编码压缩法、FOR编码压缩法中的一种。在数值数据列上进行的查询,则转换成在这S个子列上的查询,包括等值查询和范围查询两种情况,将查询条件中的值进行分解,转换为对这S个子列上的等值查询和范围查询,使得查询可以直接在压缩的子列数据上进行,将各个子列上的查询结果集求交,得到最终的查询结果。实施例在数据库中定义基本表Tablel(C0Ilint),现在有一批数值数据143,768,4, 20000,453,1081143,1048581需要装载进入数据库。显然这些数据分布特征不明显,难以直接采用轻量级的压缩算法进行压缩。现在将这些数据按照高低两个字节分解为两个子列, 高16位和低16位后,发现前5个数据高16位全部为0,后两个数据高16位均为10H。因此可以利用数据的局部特征对数据进行进一步的压缩。分别统计分解后的数据分布的三个特征值不同值的个数B、数值变化的次数CB 和每个数据与最小值差值的最大值MD。统计结果如表1所示。
权利要求
1.基于列分解的列存储数据库数值数据压缩方法,具体为提取数据表中的一列数据,将所述列数据中的每个数据分解得到多个子列,每个子列内的不同数据占用空间相等, 在每个子列内统计数据分布规律的特征值,依据所述数据分布规律的特征值选取相应的轻量级压缩算法对所述子列进行压缩。
2.根据权利要求1所述的列存储数据库数值数据压缩方法,其特征在于,所述子列中的每个数据占用空间为字节或字节的倍数。
3.根据权利要求1或2所述的列存储数据库数值数据压缩方法,其特征在于,所述不同子列中的数据占用空间相等或不相等。
4.根据权利要求1或2所述的列存储数据库数值数据压缩方法,其特征在于,所述轻量级压缩算法为字典编码压缩法、位图编码压缩法、行程编码压缩法和FOR编码压缩法中的一种。
全文摘要
本发明提供了一种用于列存储数据库的数值数据压缩方法,具体为提取数据表中的一列数据,将所述列数据中的每个数据分解得到多个子列,每个子列内的不同数据占用空间相等,在每个子列内统计数据分布规律的特征值,依据所述数据分布规律的特征值选取相应的轻量级压缩算法进行压缩。本发明操作简单,适用于有规律和无规律分布的数值数据压缩。
文档编号G06F17/30GK102521363SQ20111042183
公开日2012年6月27日 申请日期2011年12月15日 优先权日2011年12月15日
发明者吴恒山, 章涛, 郭琰 申请人:武汉达梦数据库有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1