跳转至

第一章: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. 聚合性能好:列式计算效率高

特性优势

1. 高性能

# 单表查询性能
100M 行数据,聚合查询: < 100ms
1B 行数据,聚合查询: < 1s

2. 高压缩率

# 压缩效果
原始数据: 100GB
压缩后: 10-20GB
压缩率: 5-10x

3. SQL 支持

  • 标准 SQL 语法
  • 窗口函数
  • 聚合函数
  • Join 操作

适用场景

场景 说明
实时分析 实时报表、仪表盘
日志分析 应用日志、系统日志
用户行为分析 点击流、埋点数据
时序数据 监控指标、IoT 数据
数据仓库 离线分析、BI 报表

不适用场景

场景 原因
事务处理 不支持事务
高频更新 不适合频繁更新
单行查询 列式存储不适合
高并发写入 写入性能有限

与其他数据库对比

特性 ClickHouse MySQL Elasticsearch
存储模型 列式 行式 倒排索引
查询性能 极高
写入性能
事务支持
聚合分析
全文检索

小结

ClickHouse 基础概念:

  • 列式存储:查询性能高、压缩率高
  • 特性:高性能、高压缩率、SQL 支持
  • 场景:实时分析、日志分析、数据仓库
  • 限制:不支持事务、不适合高频更新

下一章我们将学习 ClickHouse 的安装与配置。