所有分类
  • 所有分类
  • 网站源码

为什么要按列存储?

列式存储(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.

专栏
Elasticsearch 7.x从入门到精通
作者:软件架构
29.8币
88人已购
查看

与行存储将每一行的数据连续存储不同,列存储将每一列的数据连续存储。示例图如下:

专栏
Spring Cloud微服务架构项目实战
作者:软件架构
29.8币
27人已购
查看

相比于行式存储,列式存储在分析场景下有着许多优良的特性。

1)分析场景中往往需要读大量行但是少数几个列。在行存模式下,数据按行连续存储,所有列的数据都存储在一个block中,不参与计算的列在IO时也要全部读出,读取操作被严重放大。而列存模式下,只需要读取参与计算的列即可,极大的减低了IO cost,加速了查询。

2)同一列中的数据属于同一类型,压缩效果显著。列存储往往有着高达十倍甚至更高的压缩比,节省了大量的存储空间,降低了存储成本。

3)更高的压缩比意味着更小的data size,从磁盘中读取相应数据耗时更短。

4)**的压缩算法选择。不同列的数据具有不同的数据类型,适用的压缩算法也就不尽相同。可以针对不同列类型,选择最合适的压缩算法。

5)高压缩比,意味着同等大小的内存能够存放更多数据,系统cache效果更好。

官方数据显示,通过使用列存,在某些分析场景下,能够获得100倍甚至更高的加速效应。

常见问题
原文链接:https://www.yuanmawu.net/57659.html,转载请注明出处。
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?