跳到主要内容
跳到主要内容

ClickHouse Cloud 快速开始

使用 ClickHouse 的最快、最简便方式,是在 ClickHouse Cloud 中创建一个新服务。在本快速入门指南中,我们将通过三个简单步骤帮助您完成设置。

创建 ClickHouse 服务

要在 ClickHouse Cloud 中创建免费的 ClickHouse 服务,只需按照以下步骤完成注册:

  • 注册页面上创建账户
  • 你可以选择使用邮箱注册,或通过 Google SSO、Microsoft SSO、AWS Marketplace、Google Cloud 或 Microsoft Azure 注册
  • 如果你是使用电子邮箱和密码注册的,请记得在接下来的 24 小时内,通过点击我们发送给你的邮件中的链接来验证你的邮箱地址
  • 使用刚刚创建的用户名和密码登录
选择套餐

登录后,ClickHouse Cloud 会启动引导向导,引导您完成新 ClickHouse 服务的创建。请选择部署服务的区域,并为新服务指定名称:

新建 ClickHouse 服务

默认情况下,新组织将采用 Scale 层级,并创建 3 个^^副本^^,每个副本配置 4 个 vCPU 和 16 GiB 内存。 Scale 层级默认启用垂直自动扩展。 服务创建后,可在组织的"Plans"页面更改组织层级。

如有需要,用户可以自定义服务资源,指定副本扩缩容的最小和最大数量。准备就绪后,选择 Create service

扩展上限

恭喜!您的 ClickHouse Cloud 服务已启动并运行,初始配置已完成。请继续阅读,了解如何开始摄取和查询数据。

连接到 ClickHouse

连接到 ClickHouse 有两种方式:

  • 通过我们的基于 Web 的 SQL 控制台进行连接
  • 与您的应用程序集成

使用 SQL 控制台连接

为便于快速上手,ClickHouse 提供了基于 Web 的 SQL 控制台,完成初始配置后将自动跳转至该控制台。

SQL 控制台

创建一个查询标签页并输入简单查询以验证连接是否正常:

SHOW databases

您应该在列表中看到 4 个数据库,以及您可能添加的其他数据库。

SQL 控制台

完成了 - 您现在可以开始使用新的 ClickHouse 服务了!

连接您的应用

从导航菜单中点击连接按钮。将弹出一个对话框,显示您的服务凭据,并提供使用界面或语言客户端进行连接的操作说明。

服务连接

如果您找不到所需的语言客户端,请查看我们的集成列表

添加数据

ClickHouse 需要数据才能发挥最佳性能!添加数据有多种方式,大部分可通过导航菜单中的数据源页面访问。

数据源

您可以使用以下方法上传数据:

  • 设置 ClickPipe,以开始从 S3、Postgres、Kafka、GCS 等数据源摄取数据
  • 使用 SQL 控制台
  • 使用 ClickHouse 客户端
  • 上传文件 - 接受的格式包括 JSON、CSV 和 TSV
  • 通过文件 URL 导入数据

ClickPipes

ClickPipes 是一个托管集成平台,只需点击几下即可轻松完成从各种数据源摄取数据。ClickPipes 专为最苛刻的工作负载而设计,其强大且可扩展的架构确保了一致的性能和可靠性。ClickPipes 既可用于长期流式传输需求,也可用于一次性数据加载作业。

选择数据源

使用 SQL 控制台添加数据

与大多数数据库管理系统一样,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 位无符号整数(UInt32
  • message:一种String数据类型,用来替代其他数据库系统中的 VARCHARBLOBCLOB 等数据类型
  • timestamp:一个 DateTime 值,表示某一时刻
  • metric:一个 32 位浮点数(Float32
表引擎

表引擎决定:

  • 数据的存储位置及方式
  • 支持的查询
  • 数据是否被复制

有多种表引擎可供选择,但对于单节点 ClickHouse 服务器上的简单表,建议使用 MergeTree

主键简介

在继续操作之前,务必了解 ClickHouse 中主键的工作原理(主键的实现方式可能会出乎意料!):

  • 在 ClickHouse 中,表中每一行的主键并不是唯一

ClickHouse 表的^^主键^^决定了数据写入磁盘时的排序方式。每 8,192 行或 10MB 的数据(称为索引粒度)会在^^主键^^索引文件中创建一个条目。这种粒度概念创建了一个可以轻松载入内存的**^^稀疏索引^^**,而颗粒(granule)代表了在 SELECT 查询期间处理的最小列数据单元。

^^主键^^可以使用 PRIMARY KEY 参数定义。如果在定义表时未指定 PRIMARY KEY, 则主键将默认为 ORDER BY 子句中指定的元组。如果同时指定了 PRIMARY KEYORDER BY,则^^主键^^必须是排序键的子集。

^^主键^^同时也是^^排序键^^,是一个 (user_id, timestamp) 元组。因此,每个列文件中存储的数据将先按 user_id 排序,再按 timestamp 排序。

如需深入了解 ClickHouse 核心概念,请参阅"核心概念"

向表中插入数据

您可以使用熟悉的 INSERT INTO TABLE 命令向 ClickHouse 插入数据,但需要注意的是,每次向 MergeTree 表执行插入操作都会在存储中创建一个数据部分(part)。

ClickHouse 最佳实践

每批次插入大量数据行——一次性插入数万甚至数百万行。无需担心——ClickHouse 能够轻松处理这种数据量级,并且通过减少向服务发送的写入请求次数来节省成本


即使是简单示例,也可以一次插入多行数据:

INSERT INTO helloworld.my_first_table (user_id, message, timestamp, metric) VALUES
    (101, '你好,ClickHouse!',                                 now(),       -1.0    ),
    (102, '每批次插入大量数据行',                     yesterday(), 1.41421 ),
    (102, '根据常用查询对数据进行排序', today(),     2.718   ),
    (101, 'Granule 是数据读取的最小单元',      now() + 5,   3.14159 )
注意

注意 timestamp 列使用了多种 DateDateTime 函数进行填充。ClickHouse 提供了数百个实用函数,您可以函数部分查看

验证部署是否成功:

SELECT * FROM helloworld.my_first_table

使用 ClickHouse 客户端添加数据

您还可以使用名为 clickhouse client 的命令行工具连接到 ClickHouse Cloud 服务。点击左侧菜单中的 Connect 访问相关详细信息。在弹出的对话框中,从下拉菜单选择 Native:

ClickHouse 客户端连接信息

  1. 安装 ClickHouse

  2. 运行以下命令,将其中的主机名、用户名和密码替换为你自己的值:

./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password>

如果看到笑脸提示符,说明您已准备好运行查询!

:)
  1. 运行以下查询试用一下:

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp

注意响应以表格格式返回:

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│     102 │ 每批次插入大量行                                    │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ 根据常用查询对数据进行排序                          │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ 你好,ClickHouse!                                   │ 2022-03-22 14:04:09 │      -1 │
│     101 │ 颗粒是读取的最小数据块                              │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

返回 4 行。耗时:0.008 秒。
  1. 添加 FORMAT 子句,以指定 ClickHouse 支持的众多输出格式之一

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated

在上述查询中,输出结果以制表符分隔的形式返回:

Query id: 3604df1c-acfd-4117-9c56-f86c69721121

102 每批次插入大量行      2022-03-21 00:00:00     1.41421
102 根据常用查询对数据进行排序  2022-03-22 00:00:00     2.718
101 你好,ClickHouse!  2022-03-22 14:04:09     -1
101 颗粒是读取的最小数据块       2022-03-22 14:04:14     3.14159

4 行。耗时: 0.005 sec.
  1. 要退出 clickhouse client,请输入 exit 命令:

exit

上传文件

开始使用数据库时的一项常见任务是插入已有文件中的数据。我们提供了一些在线示例数据供您插入,这些数据代表点击流数据,包括用户 ID、访问的 URL 以及事件时间戳。

假设我们有一个名为 data.csv 的 CSV 文件,其中包含以下文本:

102,这是文件中的数据,2022-02-22 10:43:28,123.45
101,它是逗号分隔的,2022-02-23 00:00:00,456.78
103,使用 FORMAT 指定格式,2022-02-21 10:43:30,678.90
  1. 以下命令将数据插入到 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
  1. 请注意,如果从 SQL 控制台查询,可以看到表中已经出现了新行:

CSV 文件中的新行

接下来?

  • 教程 中,您将向一张表插入 200 万行数据,并编写一些分析查询
  • 我们提供了一份示例数据集列表,并附有插入这些数据集的详细说明
  • 查看我们时长 25 分钟的 ClickHouse 入门 视频
  • 如果您的数据来自外部来源,请查看我们的集成指南合集,了解如何连接消息队列、数据库、数据管道等
  • 如果您在使用 UI/BI 可视化工具,请查看将 UI 连接到 ClickHouse 的用户指南
  • 主键用户指南涵盖了您需要了解的所有主键信息及其定义方式