分布式表,是一个逻辑上的表,是一些本地表的逻辑视图。
Distributed表引擎是分布式表的实现,它自身不存储任何数据,数据都分散存储在分片上,能够自动路由请求至集群中的各个节点,然后进行汇总后返回给用户,Distributed表引擎需要和其他数据表引擎一起协同工作。
一张分布式表底层会对应多个本地分片数据表,由具体的分片表存储数据,分布式表与分片表是一对多的关系。
实际存储数据的表。
读数据一般都是直接读分布式表。
1.分布式引擎会自动从集群中的多个服务器上进行分布式查询,读数据是自动并行的。
2.不支持使用分布式表查询别的分布式表(除非该表只有一个分片)。
3.使用Distribute表引擎作为集群的统一访问入口,当客户端查询分布式表时,ClickHouse会将查询分发到集群中各个节点上执行,并将各个节点的返回结果在分布式表所在节点上进行汇聚,将汇聚结果作为最终结果返回给客户端。
写数据方案有两种。
1.同步操作,数据直接写入本地表中,速度快,parts大小合适;
2.分片方案可以自行决定,可以灵活处理数据分片逻辑,在复杂业务下,这个灵活性很重要;
1.需要客户端额外实现sharding和路由逻辑,比如轮训或者随机;
1.不需要自行实现分片逻辑,指定分片键/分片表达式和配置分片权重后,数据自行分发;