ClickHouse-你没见过的列存储 (4)| 青训营笔记

82 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天,本文主要以概括总结,全局记录为主,而不是作为细致的知识点讲解,细节之处多有疏忽还望多多包容。

一、本堂课重点内容:

  • Click House 应用场景

二、详细知识点介绍:

一、大宽表存储和查询

1、大宽表查询

  • 可以建非常多的列
  • 可以增加,删除,清空每一列的数据
  • 查询的时候引擎可以快速选擇需要的列
  • 可以将列涉及到的过滤条件下推到存储层从而加速查询

2、动态表结构

  • map中的每个 key 都是一列
  • map中的每一列都可以单独的查询
  • 使用方式同普通列,可以做任何计算

离线数据分析

1、数据导入

  • 数据可以通过 spark 生成 clickhouse 格式的文件
  • 导入到hdfe上由hive2ch导入工具完成数据导入
  • 数据直接导入到各个物理节点

数据按列导入

  • 保证查询可以及时访问已有数据
  • 可以按需加载需要的列

注意 : 使用 memory table 减少 parts 数量

  1. 数据先缓存在内存中
  2. 到达一定阈值再写到磁盘

复杂类型查询

  • bitmap索引
    • 例如 : 我们可以将分布在不同array中的相同数字记录下来,建立相同数据的column 数(这步转化我们称之为 " 构建 " )
    • 构建好后我们就可以查询

select count() from t where has(array, (1, 2))

  • bitmap 64类型
  • lowcardinality
    • 对于低基数列使用字典编码
    • 减少数据存储和读写的 io 使用
    • 可以做运行的压缩数据过滤

三、课后个人总结:

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

四、引用参考: