#几张图看懂列式存储
最近看到一篇很好资料,里面三言两语配上几个图就把列式存储(Column-based Storage)讲明白了,牛啊!最喜欢的就是这种浅显易懂就把背景知识讲得明明白白,而不是长篇大论的讲概念。
#1 为什么要按列存储
列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原文了):
Ø Row-based storage stores atable in a sequence of rows.
Ø Column-based storage storesa table in a sequence of columns.

从上图可以很清楚地看到,行式存储下一张表的数据都是放在一起的,但列式存储下都被分开保存了。所以它们就有了如下这些优缺点:
| | 行式存储 | 列式存储 | | | ----------- | ----------------------------------- | ------------------------------------------------ | | 优点 | Ø 数据被保存在一起 Ø INSERT/UPDATE容易 | Ø 查询时只有涉及到的列会被读取 Ø 投影(projection)很高效 Ø 任何列都能作为索引 | | 缺点 | Ø 选择(Selection)时即使只涉及某几列,所有数据也都会被读取 | Ø 选择完成时,被选择的列要重新组装 Ø INSERT/UPDATE比较麻烦 |