为什么要按列存储?
列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-based storage)来说的。简单来说两者的区别就是如何组织表:
Row-based storage stores a table in a sequence of rows.Column-based storage stores a table in a sequence of columns.与行存储将每一行的数据连续存储不同,列存储将每一列的数据连续存储。示例图如下:
相比于行式存储,列式存储在分析场景下有着许多优良的特性。
1)分析场景中往往需要读大量行但是少数几个列。在行存模式下,数据按行连续存储,所有列的数据都存储在一个block中,不参与计算的列在IO时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计算的列即可,极大的减低了IO cost,加速了查询。
2)同一列中的数据属于同一类型,压缩效果显著。列存储往往有着高达十倍甚至更高的压缩比,节省了大量的存储空间,降低了存储成本。
3)更高的压缩比意味着更小的data size,从磁盘中读取相应数据耗时更短。
4)自由的压缩我爱线报网每日持续更新海量各大内部创业教程算法选择。不同列的数据具有不同的数据类型,适用的压缩算法也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。
5)高压缩比,意味着同等大小的内存能够存放更多数据,系统cache效果更好。
官方数据显示,通过使用列存,在某些分析场景下,能够获得100倍甚至更高的加速效应。
推荐阅读
友情提醒: 请尽量登录购买,防止付款了不发货!
QQ交流群:226333560 站长微信:qgzmt2