ClickHouse Cloud 快速入门
快速轻松开始使用 ClickHouse 的最佳方式是在 ClickHouse Cloud 中创建一个新服务。
1: 获取 ClickHouse
要在 ClickHouse Cloud 中创建一个免费的 ClickHouse 服务,您只需完成以下步骤注册即可
- 在 注册页面 上创建一个帐户
- 验证您的电子邮件地址(通过点击您收到的电子邮件中的链接)
- 使用您刚刚创建的用户名和密码登录
登录后,ClickHouse Cloud 将启动引导向导,引导您完成创建新的 ClickHouse 服务的过程。选择您希望部署服务的区域,并为您的新服务命名
ClickHouse Cloud 使用 IP 过滤来限制对您的服务的访问。请注意,您的本地 IP 地址已添加,您可以立即添加更多,或在您的服务启动并运行后添加
ClickHouse Cloud 为 default
用户生成一个密码 - 请务必保存您的凭据。(您可以随时更改它们。)
您的新服务将被配置,您应该在您的 ClickHouse Cloud 仪表板上看到它
恭喜!您的 ClickHouse Cloud 服务已启动并运行。继续阅读以了解如何连接到它并开始摄取数据。
2: 连接到 ClickHouse
为了快速入门,ClickHouse 提供了一个基于 Web 的 SQL 控制台。
如果您需要 SQL 客户端连接,您的 ClickHouse Cloud 服务有一个关联的基于 Web 的 SQL 控制台;展开下面的连接到 SQL 控制台以获取详细信息。
连接到 SQL 控制台
从您的 ClickHouse Cloud 服务列表中,选择您将使用的服务,然后单击连接。从这里您可以打开 SQL 控制台
ClickHouse 非常重视您数据的安全性,并且在创建服务期间,系统会提示您配置服务的 IP 访问列表。如果您跳过了此步骤,或者不小心点击了其他地方,您将无法连接到您的服务。
查看 IP 访问列表 文档页面,了解如何添加您的本地 IP 地址的详细信息。
- 输入一个简单的查询以验证您的连接是否正常工作
SHOW databases
您应该在列表中看到 4 个数据库,以及您可能已添加的任何数据库。
就是这样 - 您已准备好开始使用您的新 ClickHouse 服务!
3: 创建数据库和表
- 像大多数数据库管理系统一样,ClickHouse 在逻辑上将表分组到数据库中。使用
CREATE DATABASE
命令在 ClickHouse 中创建一个新数据库
CREATE DATABASE IF NOT EXISTS helloworld
- 运行以下命令在
helloworld
数据库中创建一个名为my_first_table
的表
CREATE TABLE helloworld.my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)
在上面的示例中,my_first_table
是一个具有四个列的 MergeTree 表
user_id
: 一个 32 位无符号整数message
: 一个 String 数据类型,它取代了其他数据库系统中的 VARCHAR、BLOB、CLOB 等类型timestamp
: 一个 DateTime 值,它表示时间上的一个瞬间metric
: 一个 32 位浮点数
主键简介
在您继续之前,重要的是要了解主键在 ClickHouse 中的工作方式(主键的实现可能看起来出乎意料!)
- ClickHouse 中的主键对于表中的每一行不是唯一的
ClickHouse 表的主键决定了数据写入磁盘时的排序方式。每 8,192 行或 10MB 数据(称为索引粒度)会在主键索引文件中创建一个条目。这种粒度概念创建了一个可以轻松放入内存的稀疏索引,并且粒度表示在 SELECT
查询期间处理的最小列数据条带。
可以使用 PRIMARY KEY
参数定义主键。如果您在未指定 PRIMARY KEY
的情况下定义表,则键将成为 ORDER BY
子句中指定的元组。如果您同时指定了 PRIMARY KEY
和 ORDER BY
,则主键必须是排序顺序的子集。
主键也是排序键,它是 (user_id, timestamp)
的元组。因此,存储在每个列文件中的数据将按 user_id
排序,然后按 timestamp
排序。
4: 插入数据
您可以将熟悉的 INSERT INTO TABLE
命令与 ClickHouse 一起使用,但重要的是要了解,每次插入 MergeTree
表都会在存储中创建一个part。
每个批次插入大量行 - 一次数万甚至数百万行。不用担心 - ClickHouse 可以轻松处理这种类型的容量 - 并且它将通过减少向您的服务发送的写入请求来为您省钱。
- 即使对于一个简单的示例,我们也一次插入多行
INSERT INTO helloworld.my_first_table (user_id, message, timestamp, metric) VALUES
(101, 'Hello, ClickHouse!', now(), -1.0 ),
(102, 'Insert a lot of rows per batch', yesterday(), 1.41421 ),
(102, 'Sort your data based on your commonly-used queries', today(), 2.718 ),
(101, 'Granules are the smallest chunks of data read', now() + 5, 3.14159 )
请注意,timestamp
列是使用各种 Date 和 DateTime 函数填充的。ClickHouse 有数百个有用的函数,您可以在 Functions 部分中查看。
- 让我们验证它是否有效
SELECT * FROM helloworld.my_first_table
您应该看到插入的四行数据
5: 使用 ClickHouse 客户端
您还可以使用名为 clickhouse client 的命令行工具连接到您的 ClickHouse Cloud 服务。连接详细信息位于服务连接详细信息中的 Native 选项卡中
-
安装 ClickHouse。
-
运行命令,替换您的主机名、用户名和密码
./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password>
如果您收到笑脸提示符,则表示您已准备好运行查询!
:)
- 尝试运行以下查询
SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
请注意,响应以漂亮的表格格式返回
┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│ 102 │ Insert a lot of rows per batch │ 2022-03-21 00:00:00 │ 1.41421 │
│ 102 │ Sort your data based on your commonly-used queries │ 2022-03-22 00:00:00 │ 2.718 │
│ 101 │ Hello, ClickHouse! │ 2022-03-22 14:04:09 │ -1 │
│ 101 │ Granules are the smallest chunks of data read │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘
4 rows in set. Elapsed: 0.008 sec.
- 添加一个
FORMAT
子句以指定 ClickHouse 的许多受支持的输出格式之一
SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated
在上面的查询中,输出以制表符分隔返回
Query id: 3604df1c-acfd-4117-9c56-f86c69721121
102 Insert a lot of rows per batch 2022-03-21 00:00:00 1.41421
102 Sort your data based on your commonly-used queries 2022-03-22 00:00:00 2.718
101 Hello, ClickHouse! 2022-03-22 14:04:09 -1
101 Granules are the smallest chunks of data read 2022-03-22 14:04:14 3.14159
4 rows in set. Elapsed: 0.005 sec.
- 要退出
clickhouse client
,请输入 exit 命令
exit
6: 插入 CSV 文件
开始使用数据库时的常见任务是插入一些您已在文件中拥有的数据。我们有一些在线示例数据,您可以插入这些数据来表示点击流数据 - 它包括用户 ID、访问的 URL 以及事件的时间戳。
假设我们在名为 data.csv
的 CSV 文件中有以下文本
102,This is data in a file,2022-02-22 10:43:28,123.45
101,It is comma-separated,2022-02-23 00:00:00,456.78
103,Use FORMAT to specify the format,2022-02-21 10:43:30,678.90
- 以下命令将数据插入到
my_first_table
中
./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password> \
--query='INSERT INTO helloworld.my_first_table FORMAT CSV' < data.csv
- 请注意,新行现在出现在表中
下一步是什么?
- 教程 会让您将 200 万行插入到一个表中,并编写一些分析查询
- 我们有一个示例数据集列表,其中包含有关如何插入它们的说明
- 查看我们关于 ClickHouse 入门的 25 分钟视频
- 如果您的数据来自外部来源,请查看我们的集成指南集合,以了解如何连接到消息队列、数据库、管道等
- 如果您正在使用 UI/BI 可视化工具,请查看将 UI 连接到 ClickHouse 的用户指南
- 关于主键的用户指南是您需要了解的关于主键以及如何定义它们的所有信息