这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天,本文主要以概括总结,全局记录为主,而不是作为细致的知识点讲解,细节之处多有疏忽还望多多包容。
一、本堂课重点内容:
- Click House 应用场景
二、详细知识点介绍:
一、大宽表存储和查询
1、大宽表查询
- 可以建非常多的列
- 可以增加,删除,清空每一列的数据
- 查询的时候引擎可以快速选擇需要的列
- 可以将列涉及到的过滤条件下推到存储层从而加速查询
2、动态表结构
map中的每个key都是一列map中的每一列都可以单独的查询- 使用方式同普通列,可以做任何计算
离线数据分析
1、数据导入
- 数据可以通过
spark生成clickhouse格式的文件 - 导入到
hdfe上由hive2ch导入工具完成数据导入 - 数据直接导入到各个物理节点
数据按列导入
- 保证查询可以及时访问已有数据
- 可以按需加载需要的列
注意 : 使用 memory table 减少 parts 数量
- 数据先缓存在内存中
- 到达一定阈值再写到磁盘
复杂类型查询
bitmap索引- 例如 : 我们可以将分布在不同
array中的相同数字记录下来,建立相同数据的column数(这步转化我们称之为 " 构建 " ) - 构建好后我们就可以查询
- 例如 : 我们可以将分布在不同
select count() from t where has(array, (1, 2))
bitmap 64类型lowcardinality- 对于低基数列使用字典编码
- 减少数据存储和读写的 io 使用
- 可以做运行的压缩数据过滤
三、课后个人总结:
- ClickHouse是标准的列存结构
- 存储设计是LSM-Tree架构
- 使用稀疏索引加速查询
- 每个列都有丰富的压缩算法和索引结构
- 基于列存设计的高效的数据处理逻辑