关于行列融合 创新的数据存储方式

作者:王竹峰  来源:IT165收集  发布日期:2011-09-27 16:49:16

  传统的关系型数据库管理系统通常只支持行存储表,即数据按记录存储,每条记录的所有属性存储在一起。随着OLAP、数据仓库等查询密集型应用越来越广泛,行存储在应对这类型应用时的局限性逐渐突出,许多厂商适时推出了自己的列存储数据库系统。列存储按表的数据列来组织和存储数据,表的每一个列的数据被存储在一起。DM7实现了列式存储,并支持对用户透明的行、列存储表的混合操作。

  (一) DM7列存储表的物理存储

  DM7列存储表中的每个列对应两个段。其中一个段用于存储真正的列数据,这些数据被分为若干个区,每个区对应一个区描述项,区描述项存储在另一个段中,用于管理区中的数据,如图1所示。区描述项包含了这个区中所有数据的最大值及最小值,用于在查询时判断这个区是否需要进行扫描,不需就可跳过,从而节省扫描时间;描述项中还包括区数据的存储位置,用于定位数据。

  图1 列存储表存储架构

  (二) DM7列存储表的优势

  DM7列存储表主要有以下三方面的优势:

  1) 吞吐量:访问传统的行存储数据库时,无论感兴趣的是表中的哪些列,都需要先读出完整的每一条记录,这可能意味着读300个字节的数据仅仅检索其中20个字符。而对于DM7的列存储表,可以只读出需要检索的列的数据。由于大部分的OLAP和数据仓库应用中的单个查询往往只涉及表的小部分列,当面对海量数据时,吞吐量的提升是非常巨大的。

  2) 高效压缩:列存储在压缩方面比传统的行存储数据库更加有效。由于同一列中的所有数据具有相同的数据类型,连续存储的数据具有很大的相似性,数据压缩效率比不同数据类型字段连续存储的行存储表更高。而DM7为不同的数据类型提供了自适应的压缩算法,进一步提高了列存储数据的压缩比。

  3) 范围索引:由于DM7列存储表的每个区描述项中都存储了区数据的最大值和最小值,且每个列的数据是在段中连续存储的,相当于对每个列都有分段的范围索引,能大大提高数据检索的效率。

Tag标签: 数据存储   行列融合  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规