ClickHouse系列--数据读写方案
2023-04-18 12:42:19 时间
1.概念
1.分布式表
分布式表,是一个逻辑上的表,是一些本地表的逻辑视图。
Distributed表引擎是分布式表的实现,它自身不存储任何数据,数据都分散存储在分片上,能够自动路由请求至集群中的各个节点,然后进行汇总后返回给用户,Distributed表引擎需要和其他数据表引擎一起协同工作。
一张分布式表底层会对应多个本地分片数据表,由具体的分片表存储数据,分布式表与分片表是一对多的关系。
2.本地表
实际存储数据的表。
2.读数据方案
读数据一般都是直接读分布式表。
1.分布式引擎会自动从集群中的多个服务器上进行分布式查询,读数据是自动并行的。
2.不支持使用分布式表查询别的分布式表(除非该表只有一个分片)。
3.使用Distribute表引擎作为集群的统一访问入口,当客户端查询分布式表时,ClickHouse会将查询分发到集群中各个节点上执行,并将各个节点的返回结果在分布式表所在节点上进行汇聚,将汇聚结果作为最终结果返回给客户端。
3.写数据方案
写数据方案有两种。
1.写本地表
优点:
1.同步操作,数据直接写入本地表中,速度快,parts大小合适;
2.分片方案可以自行决定,可以灵活处理数据分片逻辑,在复杂业务下,这个灵活性很重要;
缺点:
1.需要客户端额外实现sharding和路由逻辑,比如轮训或者随机;
2.写分布式表
优点:
1.不需要自行实现分片逻辑,指定分片键/分片表达式和配置分片权重后,数据自行分发;
缺点:
- 分布式表接收到数据后会将数据拆分成多个parts, 并转发数据到其它服务器, 会引起服务器间网络流量增加、服务器merge的工作量增加, 导致写入速度变慢, 并且增加了Too many parts的可能性;
- 数据的一致性问题, 先在分布式表所在的机器进行落盘, 然后异步的发送到其他服务器进行存储,如果在 INSERT 到分布式表时服务器节点丢失或重启(如,设备故障),则插入的数据可能会丢失;
- 数据写入默认是异步的,短时间内可能造成不一致;
数据同步流程
- 写入到一个节点
- 通过interserver HTTP port端口同步到其他实例上
- 更新zookeeper集群记录的信息
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击