1 ClickHouse的核心特性
1.1 完备的DBMS功能
DDL
DML
权限控制
数据备份与恢复
分布式管理
1.2 列存储及数据压缩
按列存储:可以减少查询扫描数据量
数据压缩的友好性:压缩的本质是按照一定步长对数据进行匹配扫描,当发现重复部分的时候就进行编码转换;同一列的字段具有相同的数据类型和现实语义,重复项的可能性更高,压缩率要更高
1.3 向量化引擎
利用CPU的SIMD指令,本质是通过数据并行来提高性能
1.4 关系模型及SQL查询
支持sql就使得ClickHouse平易近人
1.5 表引擎多样化
通过特定的表引擎支撑特定的场景,比较灵活,大约有20多种表引擎
1.6 多线程分布式
性能要提升除了向量化引擎可以做到,多线程也是一种提升性能的方式;
ClickHouse在数据存取方面,既支持分区(纵向扩展,利用多线程原理),也支持分片(横向扩展,利用分布式原理)。
1.7 多主架构
ClickHouse则采用Multi-Master多主架构,集群中的每个节点角色对等,客户端访问任意一个节点都能得到相同的效果
1.8 数据分片与分布式查询
ClickHouse不具有自动化的分片 能力,它有本地表(Local Table)与分布式表(Distributed Table),本地表等同于数据的分片,分布式表是本地表的访问代理,本身不存储数据
2 ClickHouse的架构设计
2.1 Column与Field
2.2 DataType
2.3 Block与Block流
2.4 Table
2.5 Parser与Interpreter
2.6 Functions与Aggregate Functions
2.7 Cluster与Replication
(1) ClickHouse的1个节点只能拥有1个分片,也就是说如果要实现1分片、1副本,则至少需要部署2个服务节点
(2) 分片只是一个逻辑概念,其物理承载还是由副本承担的。
3 参考
朱凯《ClickHouse原理解析与应用实践》