Clickhouse部署和基本使用1

2022-02-18 16:52:24 浏览数 (1)

1. 部署结构

在Clickhouse中, 一般的有2种部署方式,3种使用方式:

clickhouse部署结构.pngclickhouse部署结构.png

部署方式:

  • 部署方式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 创建一个数据库
代码语言:javascript复制
create database db_test on cluster default_cluster
  • 2.2.删除一个数据库
代码语言:javascript复制
drop database db_test on cluster default_cluster
  • 2.3.创建一个表
代码语言:javascript复制
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.删除一个表
代码语言:javascript复制
drop table db_test.tbl_replac_merge_test on cluster default_cluster

3. 单节点操作Demo SQL

  • 3.1.创建一个数据库
代码语言:javascript复制
create database db_test;
  • 3.2.删除一个数据库
代码语言:javascript复制
drop database db_test;
  • 3.3.创建一个表
代码语言:javascript复制
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.删除一个数据库表
代码语言:javascript复制
drop table db_tetbl_replac_merge_test

4. 如何创建分布式表和本地表

  • 4.1 创建数据库
代码语言:javascript复制
CREATE DATABASE db_100 on cluster default_cluster;
  • 4.2 创建本地表
代码语言:javascript复制
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 创建分布式表
代码语言:javascript复制
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/

0 人点赞