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

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 个 ^^replica^^,每个副本配置有 4 个 VCPUs 和 16 GiB RAM。垂直自动扩展 在 Scale 级别上默认启用。服务创建后,可以在您的组织的“计划”页面上更改组织级别。

如果需要,用户可以自定义服务资源,指定副本缩放的最小和最大大小。在准备就绪后,选择 创建服务

扩展限制

恭喜您!您的 ClickHouse Cloud 服务已启动并运行,入职过程已完成。继续阅读以了解如何开始导入和查询您的数据。

连接到 ClickHouse

连接到 ClickHouse 有 2 种方法:

  • 使用我们基于 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 表的 ^^primary key^^ 决定了数据写入磁盘时的排序方式。每 8192 行或 10MB 数据(称为 索引粒度)在 ^^primary key^^ 索引文件中创建一个条目。这个粒度概念创建了一个 ^^稀疏索引^^,可以轻松适应内存,粒度代表在 SELECT 查询中处理的一小部分列数据。

通过 PRIMARY KEY 参数可以定义 ^^primary key^^。如果您未指定 PRIMARY KEY 而定义了表,则该键成为 ORDER BY 子句中指定的元组。如果同时指定了 PRIMARY KEYORDER BY,则 ^^primary key^^ 必须是排序顺序的子集。

^^primary key^^ 也是 ^^排序键^^,是一个 (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, '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 列是使用各种 DateDateTime 函数填充的。ClickHouse 有数以百计的有用函数,您可以 函数 部分查看

让我们验证一下它是否成功:

SELECT * FROM helloworld.my_first_table

使用 ClickHouse 客户端添加数据

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

clickhouse client 连接详细信息

  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 │ 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.
  1. 添加一个 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.
  1. 要退出 clickhouse client,输入 exit 命令:

exit

上传文件

开始使用数据库时,常见的一项任务是插入您已有数据的文件。我们在线上有一些样本数据,您可以插入,这些数据代表点击流数据 - 包括用户 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
  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 文件的新行

接下来做什么?