1. 部署结构
在Clickhouse中, 一般的有2种部署方式,3种使用方式:
部署方式:
- 部署方式1: 部署一个单节点的Clickhouse集群, 比如小白使用的集群。
- 部署方式2: 部署一个多节点的集群, 比如Tom和Jim使用的集群
使用方式:
- 使用方式1:单节点集群,单节点执行SQL直接操作。比如上图中的小白(sql中无on cluster语句)
- 使用方式2::多节点集群,和使用方式1一样,比如上图中的Tom(sql中无on cluster语句)
这种方式,用户如果连接到
不同的节点
看到的数据可能是不一样
的。 - 使用方式3: 多节点集群,用户
集群化操作
,比如上图中的Sam和Jim 集群化操作时, SQL语句中需要添加on cluster XXXX
, XXX表示集群名。
下面简单介绍集群化操作和单节点操作的基本SQL。
2. 集群化操作Demo SQL
- 2.1 创建一个数据库
create database db_test on cluster default_cluster
- 2.2.删除一个数据库
drop database db_test on cluster default_cluster
- 2.3.创建一个表
CREATE TABLE db_test.tbl_replac_merge_test on cluster default_cluster
(
id String,
code String,
create_time DateTime
)
ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(create_time)
PRIMARY KEY id
ORDER BY (id, code);
- 2.4.删除一个表
drop table db_test.tbl_replac_merge_test on cluster default_cluster
3. 单节点操作Demo SQL
- 3.1.创建一个数据库
create database db_test;
- 3.2.删除一个数据库
drop database db_test;
- 3.3.创建一个表
CREATE TABLE db_test.tbl_replac_merge_test
(
`id` String,
`code` String,
`create_time` DateTime
)
ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(create_time)
PRIMARY KEY id
ORDER BY (id, code);
- 3.4.删除一个数据库表
drop table db_tetbl_replac_merge_test
4. 如何创建分布式表和本地表
- 4.1 创建数据库
CREATE DATABASE db_100 on cluster default_cluster;
- 4.2 创建本地表
CREATE TABLE db_100.tb_1_local on cluster default_cluster
(
`c1` Int64,
`c2` String,
`_sign` Int8,
`_version` UInt64
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/5a165fe5-ab38-4bf2-a6ee-5124a65ed1aa/{shard}', '{replica}', _version)
ORDER BY (c1, c2)
SETTINGS index_granularity = 8192
- 4.3 创建分布式表
CREATE TABLE db_100.tb_1 on cluster default_cluster
(
`c1` Int64,
`c2` String,
`_sign` Int8,
`_version` UInt64
)
ENGINE = Distributed('default_cluster', 'db_1', 'tb_1_local', cityHash64(toString((c1, c2))))
更多Clickhouse建表文档:
https://clickhouse.tech/docs/en/sql-reference/statements/create/table/