跳转至

Clickhouse 简介

ClickHouse 是一个高性能的列式存储(Column-oriented)SQL 数据库管理系统(DBMS),专为在线分析处理(OLAP)场景设计。

Clickhouse

什么是分析型处理(OLAP)

OLAP(在线分析处理,Online Analytical Processing)主要关注在大规模数据集上执行复杂的分析和查询操作,典型场景包括聚合、统计、报表和多维分析。它的对比对象是OLTP(在线事务处理,Online Transaction Processing),后者更侧重于高频的增删改查事务。

类别 主要特点
OLTP 操作少量数据,注重事务效率,响应时间为毫秒级,常用于业务系统日常操作
OLAP 扫描百万到万亿行级别的海量数据,支持复杂分析计算,强调快速获取统计结果

实际应用中,OLAP 查询需具备以下能力:

  • 高效处理超大规模数据
  • 灵活支持多样化、复杂的分析计算
  • 能够在亚秒级甚至实时地返回结果,满足数据分析的及时性需求

列式存储 vs 行式存储

ClickHouse 的核心优势来源于其列式存储架构。

  • 行式存储(Row-oriented)


    • 数据按“行”连续存储
    • 适合 OLTP(快速读取整行数据)
    • 查询少量列时也必须加载整行数据

    行式存储

  • 列式存储(Column-oriented)


    • 数据按“列”连续存储
    • 每一列的数据单独存储
    • 查询时只读取需要的列 → 极大减少 I/O

    列式存储


性能优势

ClickHouse 在分析场景中表现极其出色:

  • 单查询可处理上亿甚至万亿行数据
  • 查询延迟可低至毫秒级
  • 吞吐能力可达每秒数十亿行数据处理

其高性能来源包括:

  • 列式存储减少 I/O
  • 向量化执行
  • 高效压缩算法
  • 并行计算能力

SQL 查询能力

ClickHouse 支持接近 ANSI SQL 标准的查询语法,包括:

  • GROUP BY / ORDER BY
  • JOIN
  • 子查询(Subquery)
  • 窗口函数(Window Functions)
  • IN / 标量子查询等

近似计算

为了进一步提升性能,ClickHouse 提供:

  • 近似去重计数(distinct)
  • 分位数(quantiles)
  • 中位数(median)
  • 数据采样(sampling)

自适应 JOIN

ClickHouse 会根据数据规模自动选择最优 JOIN 策略:

  • 小数据:使用 Hash Join(快速)
  • 大数据:自动切换 Merge Join(稳定)

数据复制与高可用

ClickHouse 采用:

  • 异步多主复制(multi-master replication)
  • 数据自动同步到多个节点
  • 故障恢复支持自动或半自动处理

权限控制(RBAC)

支持基于 SQL 的用户与权限管理:

  • 用户(User)
  • 角色(Role)
  • 权限控制(Access Control)

适用场景

ClickHouse 特别适合以下场景:

  • 📈 数据分析平台(BI)
  • 📊 日志分析 / 用户行为分析
  • 🧾 实时报表系统
  • 🌐 广告 / 推荐系统数据分析
  • 📡 IoT / 时序数据分析