ClickHouse数据分布设计
Shard和副本概念介绍
从横向来看ClickHouse数据库集群,所有数据都会平均分布到多个shard分片中进行保存,数据平均分布后,保证了查询的高度并行性,以提升数据的查询性能。
从纵向来看,每个shard内部有多个副本组成,保证分片数据的高可靠性,以及计算的高可靠性。
数据分布设计
- Shard数据分片均匀分布
建议用户的数据均匀分布到集群中的多个shard分片,如图1所示有3个分片。
假如有30 GB数据需要写入到集群中,需要将30 GB数据均匀切分后分别放到shard-1、shard-2和shard-3的3个分片节点中,以充分发挥MPP查询时并行计算能力,避免数据在shard间倾斜计算出现木桶效应,导致SQL查询性能较差。
可通过弹性负载均衡(Elastic Load Balance,简称ELB)访问ClickHouse,来实现数据均匀。
- Shard内数据副本高可靠存储
数据写入单shard中的一个副本后,ClickHouse会自动异步将数据同步到其他副本,如图1中的shard-3。
如果将10GB数据导入ClickHouse Node 5节点副本,ClickHouse会自动异步将数据同步到ClickHouse Node 6节点副本,保证shard-3分片数据的高可靠性存储。