第一章:ClickHouse 简介¶
什么是 ClickHouse?¶
ClickHouse 是一个开源的列式数据库管理系统,专为 OLAP(在线分析处理)场景设计。
┌─────────────────────────────────────────────────────────────┐
│ ClickHouse 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Client Layer │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ HTTP │ │ TCP │ │ JDBC │ │ ODBC │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Query Layer │ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ Query Parser & Optimizer │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ Query Executor │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Storage Layer │ │
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │
│ │ │ MergeTree│ │ Log │ │ Memory │ │ │
│ │ │ Engine │ │ Engine │ │ Engine │ │ │
│ │ └───────────┘ └───────────┘ └───────────┘ │ │
│ │ ┌───────────────────────────────────────────────┐ │ │
│ │ │ Columnar Storage │ │ │
│ │ └───────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
列式存储¶
行式 vs 列式¶
行式存储:
| ID | Name | Age | City |
| 1 | Alice | 25 | Beijing |
| 2 | Bob | 30 | Shanghai|
| 3 | Carol | 28 | Guangzhou|
存储: 1,Alice,25,Beijing,2,Bob,30,Shanghai,3,Carol,28,Guangzhou
列式存储:
| ID | 1, 2, 3 |
| Name | Alice, Bob, Carol |
| Age | 25, 30, 28 |
| City | Beijing, Shanghai, Guangzhou|
列式存储优势¶
- 查询性能高:只读取需要的列
- 压缩率高:相同类型数据压缩效果好
- 聚合性能好:列式计算效率高
特性优势¶
1. 高性能¶
2. 高压缩率¶
3. SQL 支持¶
- 标准 SQL 语法
- 窗口函数
- 聚合函数
- Join 操作
适用场景¶
| 场景 | 说明 |
|---|---|
| 实时分析 | 实时报表、仪表盘 |
| 日志分析 | 应用日志、系统日志 |
| 用户行为分析 | 点击流、埋点数据 |
| 时序数据 | 监控指标、IoT 数据 |
| 数据仓库 | 离线分析、BI 报表 |
不适用场景¶
| 场景 | 原因 |
|---|---|
| 事务处理 | 不支持事务 |
| 高频更新 | 不适合频繁更新 |
| 单行查询 | 列式存储不适合 |
| 高并发写入 | 写入性能有限 |
与其他数据库对比¶
| 特性 | ClickHouse | MySQL | Elasticsearch |
|---|---|---|---|
| 存储模型 | 列式 | 行式 | 倒排索引 |
| 查询性能 | 极高 | 中 | 高 |
| 写入性能 | 高 | 高 | 中 |
| 事务支持 | ❌ | ✅ | ❌ |
| 聚合分析 | ✅ | 中 | 中 |
| 全文检索 | ❌ | ❌ | ✅ |
小结¶
ClickHouse 基础概念:
- 列式存储:查询性能高、压缩率高
- 特性:高性能、高压缩率、SQL 支持
- 场景:实时分析、日志分析、数据仓库
- 限制:不支持事务、不适合高频更新
下一章我们将学习 ClickHouse 的安装与配置。