列数据库的混合储存与压缩

日期: 2012-07-02 作者:Alex 来源:TechTarget中国

由于列数据库在IO 读取和磁盘利用率上有优势,所以各个行数据库也纷纷提出了自己的向列数据库过度的中间储存模型,即混合储存(Hybrid Column).

在商用的混合储存出现之前,就已经有论文说明了三种不同的储存方式, 行储存,列储存,混合PAX储存.

本文将介绍三种混合存储的方式: Oracle 的混合储存,Greenplum,AsterData,Teradata的混合储存, Vertica 的混合储存.

  Oracle 11g Hybrid

Oracle 在09年7月左右推出Exadata 的时候推出的新压缩模式, 也是唯一一个最接近PAX 的压缩模式. 它将数据分为Compression Unit (简写CU), 一个CU 一般是一个Oracle 里面的extend 区块. 由16个Block 组成(可以配置大小), 然后在每个CU 的第一个Block 的头部放入压缩数值, 将所有的列中出现频率最高的数值放入Block 头部, 默认好像是只有在Oracle 自己的Exadata 里面才能用(为了赚钱嘛), 有两种压缩级别,压缩级别高的收益更小,压缩时间更长, 解压缩无影响. 如下图:

 

oracle 的混合压缩并不算是真正意义上的混合储存,它在读取数据的时候IO 并没有大幅减少, 它只是将更多的块放在一起提高了一点压缩率,它并不像其他的混合储存或者列储存得到的好处那么多.

  Greenplum 的Polomorphic

greenplum将数据按读取频率分为3种:

Read/Write Optimized : 最近期的数据, 存在一定写的频率

Row-Oriented / Read-Mostly Optimized : 较为近期的数据,大部分是读,非常少的写

Column-Oriented / Read-Mostly Optimized : 基本为不会写,但是经常会读.

Greenplu,AsterData,Teradata 的混合储存大致设计类似,但是都有很多小的区别. 他们的混合储存都是可以把不同的表或者同一个表的不同分区按任意方式储存(行,列,混合),在最细节的分区上还是制定到底使用行储存还是列储存 . 使用SQL 的都是透明的.

细节设计方面每个都各有个的不同,比如Asterdata 不支持列压缩,greenplum 的列压缩和列储存必须DBA手工指定,Teredata 可以自动进行选择. Teredata 也有类似上面按照读写频率区分的功能,不过它叫multi-temperature , 作为他虚拟储存的一个很有用的功能之一(翻译成多温度或者混合温度?) . 当它发现数据是冷的时候(很少读) 它自动将数据转换列储存使用最高压缩. 另外每个数据库对分区,第二列索引,join列索引支持也不一定相同.

 

(From Teradata Columnar )

  Vertica 的FlexStore

Vertica 的flexstore 是在2009年10月发布的Vertica 3.5 版本一个重要功能(另外一个重要功能是它跟Cloudera合作发布了业界第一个Hadoop 集成的连接器) .flexstore 的一个特性就是将比较小的列或者经常一起读取的列放在一起,形成一个迷你组的列(mini-group) , 所以在读取的时候既不会增加太多IO 又不会每次需要更多的随机读. 这个跟前面几种混合储存在设计上是完全不一样的. 比如Greenplum的混合储存行就是行,列就是列,只不过不同分区使用一种储存方式.Vertica 是没有分区这种概念的. 它只是将多个列组合成一个列来储存.

参考资料:

AsterData 混合储存

http://www.dbms2.com/2010/09/15/aster-data-ncluster-version-4-6/

Greenplum 混合储存

http://www.dbms2.com/2009/10/14/greenplum-hybrid-columnar/

Teradata 混合储存

http://www.dbms2.com/2011/09/22/teradata-columnar-compression/

Vertica 的FlexStore

http://www.dbms2.com/2009/08/04/flexstore-and-the-rest-of-vertica-35/

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者

Alex
Alex

相关推荐