跳转至

ClickHouse

在这篇文章中

信息

ClickHouse 是一个高性能的列式数据库管理系统 (DBMS),专为执行 OLAP 类分析查询而设计。该 DBMS 专注于以低延迟分析海量数据,广泛应用于分析、监控、日志和遥测处理任务。

ClickHouse 核心功能

  • 列式存储:数据按列而非按行存储,这显著加快了分析查询的执行速度并减少了处理的数据量。
  • 高性能:针对处理大规模数据集进行了优化,得益于向量化处理和高效的 CPU 利用率,能够执行数十亿行数据的查询。
  • 数据压缩:采用专门的压缩算法,可以大幅减少存储数据量(通常比基于行的 DBMS 小数倍),尤其是在分析工作负载下。
  • SQL 兼容性:支持带有额外分析函数的扩展 SQL 语法,简化了现有应用程序的迁移。
  • 分布式处理:支持创建集群以实现水平扩展和跨多服务器的数据处理。
  • 数据复制:内置的复制 (Replication) 支持确保了容错能力和高数据可用性。
  • 支持多种数据格式:可以导入和导出 CSV、JSON、Parquet、Avro 等格式的数据。
  • 物化视图 (Materialized views):在后台自动聚合数据,以加速重复查询。
  • 与外部数据源集成:支持直接从 MySQL、PostgreSQL、MongoDB、Kafka、S3 等系统读取数据。

部署功能

ID 软件名称 兼容操作系统 虚拟机 物理机 vGPU GPU 最低CPU(核) 最低内存(GB) 最低硬盘(GB) 自定义域名 是否启用
492 ClickHouse Ubuntu 24.04, Ubuntu 22.04 + + + + 4 8 120 订购

有关此软件部署功能的详细信息,请参阅 此链接

备注

端口 8443 和 9100 默认禁用,需要在 /etc/clickhouse-server/config.xml 中进行额外配置。

备注

除非另有说明,否则我们从官方开发人员网站安装软件的最新发布版本。

部署 ClickHouse 后的入门指南

在支付订单后,系统会向您注册时指定的电子邮件发送通知,告知服务器已准备就绪。邮件中将包含 VPS 的 IP 地址以及连接所需的登录名和密码。我们的客户可以通过服务器的硬件管理和 API 控制面板 - Invapi 来管理硬件。

授权详情:

  • Server IP address:在电子邮件和控制面板中提供;
  • Logindefault;
  • Password:与 root 账户的密码一致,并发送至您的电子邮箱。

警告

对于 GUI 客户端(如 DBeaver、DataGrip 等),请使用 port 8123 (HTTP 接口)。端口 9000 仅保留给原生的 clickhouse-client 使用。

连接到 ClickHouse

连接方法

本节介绍了通过 clickhouse-client(命令行客户端)和 DBeaver(图形界面)连接到 ClickHouse 最常用的方法。ClickHouse 还支持通过其他客户端进行连接:DataGrip、Tableau、MySQL Workbench(通过端口 9004)、pgAdmin(通过端口 9005),以及 Python、Go、Java 等语言的编程库。

通过 clickhouse-client 连接

ClickHouse 内置了一个用于数据库操作的原生命令行客户端。

1. 从服务器本地连接:

clickhouse-client

2. 从远程机器连接:

clickhouse-client --host <IP-address> --port 9000 --user default --password <password>

3. 执行简单查询:

SELECT version();

4. 查看数据库列表:

SHOW DATABASES;

通过 DBeaver 连接

DBeaver 是一个通用的 GUI 客户端,可用于处理包括 ClickHouse 在内的各种数据库。

1. 安装 DBeaver

官方网站 下载并安装 DBeaver。

2. 创建新连接 (New Database Connection)

  • 启动 DBeaver
  • 选择 Database >> New Database Connection (或按 Ctrl+Shift+N)

  • 在数据库列表中找到并选择 ClickHouse

  • 点击 Next

3. 配置连接参数

在设置窗口中指定以下参数:

Host: <您服务器的 IP 地址>
Port: 8123
Database/Schema: (留空或指定默认值)
Username: default
Password: <root_password>

至关重要

对于 DBeaver 连接,请使用 port 8123

4. 下载 JDBC 驱动程序

首次连接时,DBeaver 会提示您下载 ClickHouse 的 JDBC 驱动程序:

  • 在弹出窗口中点击 Download

  • 等待驱动程序下载完成:

  • 点击 OK

6. 测试连接 (Test Connection)

  • 点击 Test Connection
  • 如果配置正确,将显示消息:Connected (XXX ms)

  • 该消息将包含:
  • Server: ClickHouse X.X.X.XXX
  • Driver: ClickHouse JDBC Driver X.X.X

6. 完成设置

  • 点击 Finish
  • 连接将出现在 Database Navigator 中;
  • 展开连接树以查看数据库、表和其他对象。

常见问题:

Error 原因 解决方法
transport error: 400 使用了端口 9000 而非 8123 更改为端口 8123
Connection refused IP 错误或防火墙拦截了端口 验证 IP 地址和防火墙规则
Authentication failed 登录名或密码错误 验证凭据
Hostname is not specified 在未配置的情况下意外启用了 SSH 隧道 在连接设置中关闭 SSH 选项卡

ClickHouse 核心操作

创建数据库

CREATE DATABASE IF NOT EXISTS my_database;

创建表

CREATE TABLE my_database.events
(
    event_date Date,
    event_time DateTime,
    user_id UInt32,
    event_type String,
    value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);

插入数据

INSERT INTO my_database.events VALUES
    ('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
    ('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
    ('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);

查询数据

简单查询:

SELECT * FROM my_database.events LIMIT 10;

聚合数据:

SELECT 
    event_type,
    count() as events_count,
    avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;

时间序列:

SELECT 
    toStartOfHour(event_time) as hour,
    count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;

从 CSV 导入数据

创建表:

CREATE TABLE my_database.logs
(
    timestamp DateTime,
    level String,
    message String
)
ENGINE = MergeTree()
ORDER BY timestamp;

导入数据:

INSERT INTO my_database.logs
FROM INFILE '/path/to/file.csv'
FORMAT CSV;

管理用户和权限

创建用户:

CREATE USER analyst IDENTIFIED BY 'secure_password';

授予权限:

GRANT SELECT ON my_database.* TO analyst;

查看用户:

SHOW USERS;

查看权限:

SHOW GRANTS FOR analyst;

管理服务

启动服务:

clickhouse start

停止服务:

clickhouse stop

重启服务:

clickhouse restart

查看服务状态:

clickhouse status

查看日志:

tail -f /var/log/clickhouse-server/clickhouse-server.log

备注

如果您不是以 root 用户身份操作,请在命令前加上 sudosudo clickhouse start

检查活动端口

查看 ClickHouse 正在监听哪些端口:

ss -tlnp | grep clickhouse

或者更详细地查看:

ss -tlnp | grep $(pidof clickhouse-server)

在配置中检查已配置的端口:

cat /etc/clickhouse-server/config.xml | grep -E "port>" | head -20

检查特定端口:

ss -tlnp | grep :8123

预期的端口检查输出:

LISTEN  *:8123  clickhouse-serv  (HTTP)
LISTEN  *:9000  clickhouse-serv  (Native TCP)
LISTEN  *:9004  clickhouse-serv  (MySQL)
LISTEN  *:9005  clickhouse-serv  (PostgreSQL)
LISTEN  *:9009  clickhouse-serv  (Interserver)

备注

有关 ClickHouse 配置和优化的详细信息,请参阅 官方开发人员文档

订购带有 ClickHouse 的服务器

要使用 API 安装此软件,请遵循 这些说明

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×