clickhouse 分片

本文讲解ClickHouse数据库的分片功能,通过Distributed引擎实现跨机器数据读取和聚合,支持分布式部署,提升大规模数据处理能力。

我们知道mysql数据库如果想做分片,需要使用第三方组件,这是因为mysql在设计之初就没有太多考虑分布式等问题。而clickhouse作为新生代性能之王,分片也是必须的功能。基本上从2015年之后的各种数据库也罢,框架也罢,都开始支持分布式功能了,其实功能实现不是很难,只不过如果这些数据库自己支持分布式的话,对于开发者就会少很多事情。

今天我们简单讲下clickhouse的分片。其实也就是一个视图聚合的功能。clickhouse可以支持读取每个分片上的内容的集合。写到哪个分片,可以自己实现,都是很简单的逻辑。

其实就是用到一个引擎,叫Distributed。
Distributed引擎的官网介绍

两台机器上,分别建表:response_event

在一台机器上,新建视图(引擎为Distributed的表)
名字一般是表名_all,比如response_event_all

CREATE TABLE response_event_all AS response_event  
ENGINE = Distributed(java_cluster, default, response_event, rand())

java_cluster是所有分片标签的父标签名字,自定义的,在配置文件中配置。
在这里插入图片描述

读:

这样的话,从response_event_all中读到的数据就是两个机器的数据的集合。

写:

1、可以直接写视图表,这个就和mysql分片一样了。
2、可以在代码中实现双写,选中表的一个字段作为分片的片键,然后hash取值确定写到哪个机器上,然后获取那台机器的connection即可。
有时间把代码贴上去。

备份

上面这种配置,就是都是两个机器都是没有备份的。
想要备份,可以配置,每台机器的表的引擎换一下,换一个引擎,一般都是在原引擎上加Replicate。
再配和配置文件配置,一般9000端口是给主用的,9001,9002等是给从用的。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值