[ 列存储之ClickHouse | 青训营笔记]

90 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

什么是列式存储

  1. 数据库中的怎么存在物理硬件上的呢?

    例如,数据库表如下:

    idnameagephone
    1e11812345678901
    2e21912345678902
    3e32012345678903
    • 行式存储:按照表中每行的顺序,将数据存储在物理介质中。例如:1,e1,18,12345678901.....
    • 列式存储:按照表中每行的顺序,将数据存储在物理介质中。例如:1,2,3,4,5,6...n,e1,e2,e3....en,18,19,20....

列式存储优点

  1. 数据压缩

    • 同类型的数据压缩效率更高
    • 排序后的数据压缩效率更高
    • 可以针对不同类型的数据采用不同的压缩算法
  2. 数据选择

    • 可以选择特定的列做计算而不是读取所有列的数据
    • 对聚合计算友好,可以直接对单独的列进行计算
  3. 延迟物化

    • 物化指:将存储数据解压成业务逻辑所需的数据的过程
    • 延迟物化就是想使得这个过程尽量的后移,从而使得传输的过程中使用的是压缩的数据
    • 缓存、CPU,内存带宽友好
    • 可以利用执行计划和算子的优化
    • 保留直接在压缩列做计算的机会
  4. 支持向量化,适配SIMD技术

  5. 列式存储VS行式存储

    行式存储列式存储
    优点同一条数据存储在连续存储地址上;插入、更新数据方便列查询方便;投影高效;任何列都可以作为索引;延迟物化;方便向量计算;压缩效率高
    缺点列查询时需要读取整行数据多列查询需要整合数据;更新和插入数据麻烦;不适合点查询
    适用场景点查询场景(查询数据少,基于索引简单查询);增、删、改操作较多的场景统计分析类查询,即时查询

什么是ClickHouse

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)

  1. ClickHouse是标准的列式存储结构
  2. 存储设计是LSM-Tree架构
  3. 使用稀疏索引加速查询
  4. 每个列都有丰富的压缩算法和索引结构
  5. 基于列存储设计的高效的数据处理逻辑

ClickHouse在哪里用

  1. 大宽表存储和查询
  2. 离线数据分析
  3. 数据需按列导入
  4. 实时数据分析

参考资料

  1. 【后端专场 学习资料七】第五届字节跳动青训营 - 掘金 (juejin.cn)
  2. 什么是ClickHouse? | ClickHouse Docs