这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天 要点
1.数据库基本概念
OLAP数据库
a.大量数据读写,PB级别的存储
b.多维分析,复杂的聚合函数
c.窗口函数,自定义UDF(User Define Function)
d.离线/实时分析
2.列式存储
列式存储优点:
a.数据压缩
b.数据选择【对聚合运算友好】
c.延迟物化【缓存友好;CPU/内存带宽友好;可以利用到执行计划和算子的优化;保留直接在压缩列上做计算的机会】
d.任何列都能作为索引
e.向量化计算
f.查询时只有涉及到的列会被读取
g.投影很高效
缺点:
a.选择完成时,被选择的列可能会被组装为行
b.Insert/Update比较麻烦
c.点查询不合适
试用场景:
a.统计分析查询【OLAP,如数据仓库服务】
b.即时查询
3.ClickHouse存储设计
分布式表:不存储数据,用于将查询路哟到集群的各个节点
本地表:实际存储数据的表
存储结构:
SSTable:顺序写入,只能删除和添加
MemoryTable:内存中的数据保存在其中
小结:
a.主键包含的数据顺序写入
b.主键构造主键索引
c.每个列构建一个稀疏索引
d.通过mark的选择让主键索引可以定位到每一列的索引
e.可以通过多种手段优化非主键列的索引
4.ClickHouse典型应用场景
a.大宽表存储和查询:
1)可以建非常多的列
2)可以增加、删除、清空每一列的数据
3)查询的时候引擎可以快速选择需要的列
4)可以将涉及到的过滤条件下推到存储层从而加快查询
b.动态表存储
1)map中的每个key都是一个列
2)map中的每一列都可以单独进行查询
3)使用方式同普通列,可以做任何计算
c.离线数据分析
d.实时数据分析
总结:
a.ClickHouse是标准的列存储结构
b.存储设计是LSM-Tree架构
c.使用系数索引加速查询
d.每个列都有丰富的压缩算法和索引结构
e.基于列存设计的高效的数据处理逻辑