这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
什么是列式存储
-
数据库中的怎么存在物理硬件上的呢?
例如,数据库表如下:
id name age phone 1 e1 18 12345678901 2 e2 19 12345678902 3 e3 20 12345678903 - 行式存储:按照表中每行的顺序,将数据存储在物理介质中。例如:1,e1,18,12345678901.....
- 列式存储:按照表中每行的顺序,将数据存储在物理介质中。例如:1,2,3,4,5,6...n,e1,e2,e3....en,18,19,20....
列式存储优点
-
数据压缩
- 同类型的数据压缩效率更高
- 排序后的数据压缩效率更高
- 可以针对不同类型的数据采用不同的压缩算法
-
数据选择
- 可以选择特定的列做计算而不是读取所有列的数据
- 对聚合计算友好,可以直接对单独的列进行计算
-
延迟物化
- 物化指:将存储数据解压成业务逻辑所需的数据的过程
- 延迟物化就是想使得这个过程尽量的后移,从而使得传输的过程中使用的是压缩的数据
- 缓存、CPU,内存带宽友好
- 可以利用执行计划和算子的优化
- 保留直接在压缩列做计算的机会
-
支持向量化,适配SIMD技术
-
列式存储VS行式存储
行式存储 列式存储 优点 同一条数据存储在连续存储地址上;插入、更新数据方便 列查询方便;投影高效;任何列都可以作为索引;延迟物化;方便向量计算;压缩效率高 缺点 列查询时需要读取整行数据 多列查询需要整合数据;更新和插入数据麻烦;不适合点查询 适用场景 点查询场景(查询数据少,基于索引简单查询);增、删、改操作较多的场景 统计分析类查询,即时查询
什么是ClickHouse
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)
- ClickHouse是标准的列式存储结构
- 存储设计是LSM-Tree架构
- 使用稀疏索引加速查询
- 每个列都有丰富的压缩算法和索引结构
- 基于列存储设计的高效的数据处理逻辑
ClickHouse在哪里用
- 大宽表存储和查询
- 离线数据分析
- 数据需按列导入
- 实时数据分析