跳至主要内容

ClickHouse 云快速入门

开始使用 ClickHouse 最快、最简单的方法是在 ClickHouse 云 中创建一个新服务。

1:获取 ClickHouse

要在 ClickHouse 云 中创建一个免费 ClickHouse 服务,您只需按照以下步骤注册即可

  • 注册页面 上创建一个帐户
  • 验证您的电子邮件地址(单击您收到的电子邮件中的链接)
  • 使用您刚刚创建的用户名和密码登录

登录后,ClickHouse 云将启动入门向导,引导您创建新的 ClickHouse 服务。选择您希望为其部署服务的区域,并为您的新服务命名

New ClickHouse Service


ClickHouse 云使用 IP 过滤来限制对您服务的访问。请注意,您的本地 IP 地址已添加,您现在或在服务启动并运行后可以添加更多地址

IP Filtering


ClickHouse 云为 default 用户生成一个密码 - 请务必保存您的凭据。(您始终可以在以后更改它们。)

Download Credentials

您的新服务将被预配,您应该在 ClickHouse 云仪表板上看到它

Download Credentials


恭喜!您的 ClickHouse 云服务已启动并运行。继续阅读了解如何连接到它并开始导入数据。

2:连接到 ClickHouse

为了快速入门,ClickHouse 提供了一个基于 Web 的 SQL 控制台。

SQL 控制台

如果您需要 SQL 客户端连接,您的 ClickHouse 云服务有一个关联的基于 Web 的 SQL 控制台;展开以下连接到 SQL 控制台以获取详细信息。

连接到 SQL 控制台

从 ClickHouse 云服务列表中,选择您要使用的服务,然后单击连接。从这里,您可以打开 SQL 控制台

Connect to SQL Console

注意

ClickHouse 非常重视数据的安全性,在创建服务时,系统会提示您配置服务的 IP 访问列表。如果您跳过了此步骤,或错误地点击了它,则无法连接到您的服务。

查看 IP 访问列表 文档页面以了解如何添加您的本地 IP 地址。

  1. 输入一个简单的查询以验证您的连接是否正常工作

    SHOW databases

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

就是这样 - 您已准备好开始使用您的新 ClickHouse 服务!

3:创建数据库和表

  1. 与大多数数据库管理系统一样,ClickHouse 将表逻辑地分组到数据库中。使用 CREATE DATABASE 命令在 ClickHouse 中创建一个新数据库

    CREATE DATABASE IF NOT EXISTS helloworld
  2. 运行以下命令在 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 服务器上的简单表,MergeTree 是您的最佳选择。

    主键简要介绍

    在继续之前,了解 ClickHouse 中主键的工作原理非常重要(主键的实现方式可能看起来很奇怪!)

    • ClickHouse 中的主键为表中的每一行唯一

    ClickHouse 表的主键决定数据写入磁盘时的排序方式。每 8,192 行或 10 MB 的数据(称为索引粒度)将在主键索引文件中创建一个条目。此粒度概念创建了一个可以轻松容纳在内存中的稀疏索引,并且颗粒代表了在 SELECT 查询期间处理的最小数量的列数据条带。

    可以使用 PRIMARY KEY 参数定义主键。如果您定义了一个没有指定 PRIMARY KEY 的表,那么该键将成为 ORDER BY 子句中指定的元组。如果您同时指定 PRIMARY KEYORDER BY,则主键必须是排序顺序的子集。

    主键也是排序键,它是 (user_id, timestamp) 的元组。因此,存储在每个列文件中的数据将按 user_id 排序,然后按 timestamp 排序。

4:插入数据

您可以使用熟悉的 INSERT INTO TABLE 命令与 ClickHouse 一起使用,但重要的是要了解,每次插入 MergeTree 表都会导致在存储中创建部分

ClickHouse 最佳实践

每次批处理插入大量行 - 每次成千上万行甚至数百万行。不用担心 - ClickHouse 可以轻松处理这种类型的容量 - 并且它会 为您节省资金,因为它向您的服务发送的写入请求更少。

  1. 即使对于一个简单的示例,我们也要一次插入多行

    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 列使用各种日期时间函数填充。ClickHouse 有数百个有用的函数,您可以在函数部分中查看

  2. 让我们验证它是否有效

    SELECT * FROM helloworld.my_first_table

    您应该看到插入的四行数据

5:使用 ClickHouse 客户端

您还可以使用名为clickhouse 客户端的命令行工具连接到 ClickHouse 云服务。连接详细信息位于服务连接详细信息中的本地选项卡中

clickhouse client connection details

  1. 安装 ClickHouse

  2. 运行该命令,并替换您的主机名、用户名和密码

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

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

    :)
  3. 尝试运行以下查询

    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.
  4. 添加 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.
  5. 要退出 clickhouse 客户端,请输入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
  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
  2. 请注意,现在表中出现了新行

    New rows from CSV file

下一步?

  • 教程将引导您将 200 万行插入表并编写一些分析查询
  • 我们有一个示例数据集列表,其中包含有关如何插入它们的说明
  • 查看我们关于ClickHouse 入门的 25 分钟视频
  • 如果您的数据来自外部来源,请查看我们的集成指南集合,以了解如何连接到消息队列、数据库、管道等等
  • 如果您使用的是 UI/BI 可视化工具,请查看连接 UI 到 ClickHouse 的用户指南
  • 关于主键的用户指南包含您需要了解的有关主键及其定义方式的所有内容