ClickHouse 分析模式
用于高性能分析和数据工程的 ClickHouse 特定模式。
何时激活
- 设计 ClickHouse 表架构(MergeTree 引擎选择)
- 编写分析查询(聚合、窗口函数、连接)
- 优化查询性能(分区裁剪、投影、物化视图)
- 摄取大量数据(批量插入、Kafka 集成)
- 为分析目的从 PostgreSQL/MySQL 迁移到 ClickHouse
- 实现实时仪表板或时间序列分析
概述
ClickHouse 是一个用于在线分析处理 (OLAP) 的列式数据库管理系统 (DBMS)。它针对大型数据集上的快速分析查询进行了优化。
关键特性:
- 列式存储
- 数据压缩
- 并行查询执行
- 分布式查询
- 实时分析
表设计模式
MergeTree 引擎 (最常用)
CREATE TABLE markets_analytics (
date Date,
market_id String,
market_name String,
volume UInt64,
trades UInt32,
unique_traders UInt32,
avg_trade_size Float64,
created_at DateTime
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (date, market_id)
SETTINGS index_granularity = 8192;
ReplacingMergeTree (去重)
-- For data that may have duplicates (e.g., from multiple sources)
CREATE TABLE user_events (
event_id String,
user_id String,
event_type String,
timestamp DateTime,
properties String
) ENGINE = ReplacingMergeTree()
PARTITION BY toYYYYMM(timestamp)
ORDER BY (user_id, event_id, timestamp)
PRIMARY KEY (user_id, event_id);
AggregatingMergeTree (预聚合)
-- For maintaining aggregated metrics
CREATE TABLE marke…