ClickHouse基本概念和使用注意事项。
首先解释下ClickHouse是什么?ClickHouse是俄国人搞出来的一个列式数据仓库,以应对实时的数据查询分析,经常被拿来和ElasticSearch作比较。
基本概念
- 集群
- 分片
- 数据库
- 表
集群就不用说了,分片就是一个个的节点。
相对于MySQL,主要说下本地表和分布表的概念。
简单来说,本地表数据只存在于本地,分布表则是本地表的集合。
无论是直接往本地表写数据,还是往分布表写数据,数据都会分散到各个节点的本地表中,所以当有多个节点时,直接对本地表查询,每次得到的结果可能都不一样(每次路由的节点不同,所以只得到该节点上的数据),而查询分布表则可以得到全部数据。
SQL语句
- DDL
建数据库和表时要加 on cluster_name cluster
指定集群
-
单副本集群和双副本集群所使用的DDL不一样
-
SQL查询跟MySQL不完全兼容
比如 delete from table where 1
通不过。
再比如,不能对定长字段使用like
查询,比如uuid
FixedString
ipv4
ipv6
等字段,不然会报类似 Illegal type IPv4 of argument of function like
的异常。
还有一点需要注意,如果对多个字段使用相同的like
查询,那么只会查询其中一个字段!这时就得用子查询,坑啊!
数据同步
MySQL数据同步到ClickHouse需要使用MaterializeMySQL
引擎。
本人刚开始接触ClickHouse,对其认知较少,以上说法可能存在疏漏和错误,敬请指正!