前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ClickHouse系列--数据读写方案

ClickHouse系列--数据读写方案

作者头像
IT云清
发布2021-12-06 14:18:44
8640
发布2021-12-06 14:18:44
举报
文章被收录于专栏:IT云清IT云清

1.概念

1.分布式表

分布式表,是一个逻辑上的表,是一些本地表的逻辑视图。

Distributed表引擎是分布式表的实现,它自身不存储任何数据,数据都分散存储在分片上,能够自动路由请求至集群中的各个节点,然后进行汇总后返回给用户,Distributed表引擎需要和其他数据表引擎一起协同工作。

一张分布式表底层会对应多个本地分片数据表,由具体的分片表存储数据,分布式表与分片表是一对多的关系

2.本地表

实际存储数据的表。

2.读数据方案

读数据一般都是直接读分布式表。

1.分布式引擎会自动从集群中的多个服务器上进行分布式查询,读数据是自动并行的。

2.不支持使用分布式表查询别的分布式表(除非该表只有一个分片)。

3.使用Distribute表引擎作为集群的统一访问入口,当客户端查询分布式表时,ClickHouse会将查询分发到集群中各个节点上执行,并将各个节点的返回结果在分布式表所在节点上进行汇聚,将汇聚结果作为最终结果返回给客户端。

在这里插入图片描述
在这里插入图片描述

3.写数据方案

写数据方案有两种。

1.写本地表
优点:

1.同步操作,数据直接写入本地表中,速度快,parts大小合适;

2.分片方案可以自行决定,可以灵活处理数据分片逻辑,在复杂业务下,这个灵活性很重要;

缺点:

1.需要客户端额外实现sharding和路由逻辑,比如轮训或者随机;

2.写分布式表
优点:

1.不需要自行实现分片逻辑,指定分片键/分片表达式和配置分片权重后,数据自行分发;

缺点:
  1. 分布式表接收到数据后会将数据拆分成多个parts, 并转发数据到其它服务器, 会引起服务器间网络流量增加、服务器merge的工作量增加, 导致写入速度变慢, 并且增加了Too many parts的可能性;
  2. 数据的一致性问题, 先在分布式表所在的机器进行落盘, 然后异步的发送到其他服务器进行存储,如果在 INSERT 到分布式表时服务器节点丢失或重启(如,设备故障),则插入的数据可能会丢失;
  3. 数据写入默认是异步的,短时间内可能造成不一致;
数据同步流程
在这里插入图片描述
在这里插入图片描述
  • 写入到一个节点
  • 通过interserver HTTP port端口同步到其他实例上
  • 更新zookeeper集群记录的信息
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概念
    • 1.分布式表
      • 2.本地表
        • 1.写本地表
        • 2.写分布式表
    • 2.读数据方案
    • 3.写数据方案
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档