这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
ClickHouse 是Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。全称是Click Stream,Data WareHouse。
OLAP 场景特点: 读多于写;大宽表,读大量行但是少量列,结果集较小;数据批量写入,且数据不更新或少更新;无需事务,数据一致性要求低;灵活多变,不适合预先建模等
ClickHouse 使用了列式存储,有利于数据压缩:
- 数据压缩可以使读的数据量更少,在 IO 密集型计算中获得更大的性能优势
- 相同类型压缩效率更高
- 排序之后压缩效率更高
- 可以针对不同类型使用不同的压缩算法
因为同一列的数据类型相同,相似的概率比较高,所以可以使用很多压缩算法,甚至可以在压缩的数据上直接计算
包括 LZ4(压缩重复值),Run-length encoding(可以直接计算压缩数据),Delta Encoding(记录数据的变化进行压缩)
因为按列存储所以方便聚合,可以高效组合成特定格式;可以延迟物化,延迟解压数据的操作,可以在压缩状态进行更高效的计算,计算和存取的效率更高;可以向量化,即利用现代 CPU 单条指令可以处理多条数据的特性提高并行计算效率
由于使用了不同的存储结构,所以在索引上和分布式架构上也使用的是与一般的关系型数据库不同的架构,支持主键索引、稀疏索引、数据 sharding、数据 Partitioning、数据 TTL、主备同步和高吞吐写入等功能。
总结下来是一种专攻另一种使用场景的数据库。