文章目录

  • ClickHouse 系统架构和存储引擎实现原理
    • ClickHouse 简介
    • ClickHouse 整体架构 & 核心模块
      • 1. Column与Field
      • 2. DataType
      • 3. Block与Block流
      • 4. Table
    • ClickHouse 原理
      • ClickHouse 整体流程
      • MergeTree
      • 主键索引
      • MergeTree 家族
    • ClickHouse 特性
        • 1. 完备的DBMS功能
        • 2. 列式存储与数据压缩
        • 3. 向量化执行引擎
        • 4. 关系模型与SQL查询
        • 5. 多样化的表引擎
        • 6. 多线程与分布式
        • 7. 多主架构
        • 8. 在线查询
        • 9. 数据分片与分布式查询
    • OLAP 组件分类
    • ClickHouse 特性
      • ClickHouse 擅长
      • ClickHouse 不擅长
    • ClickHouse 为何会那么快
    • ClickHouse 应用场景
    • ClickHouse 存储引擎
      • 列式存储
      • 数据顺序存储
      • 主键索引
      • 数据插入、更新、删除
      • Mutation具体过程
      • 使用建议
    • ClickHouse 和 Druid
      • Doris 与 ClickHouse 的深度对比及选型建议
        • 差异和选择建议
        • Doris更优的方面
        • ClickHouse更优的方面
    • Presto,Druid,Kylin,ClickHouse 对比表格

ClickHouse 系统架构和存储引擎实现原理

为什么 ClickHouse 这么快? Why is ClickHouse so fast?

本文主要介绍了 ClickHouse 系统架构和存储引擎实现原理。

ClickHouse 简介

ClickHouse 是一款由俄罗斯 Yandex 公司开发的 C++ 开源高性能 OLAP 组件。在 Yandex 内部, ClickHouse 主要用于在线流量分析产品 Yandex Metrica,类似于 Google Analytics 或者百度统计。

ClickHouse是一款MPP架构的列式存储数据库,但MPP和列式存储并不是什么"稀罕"的设计。拥有类似架构的其他数据库产品也有很多,但是为什么偏偏只有ClickHouse的性能如此出众呢?ClickHouse发展至今的演进过程一共经历了四个阶段,每一次阶段演进,相比之前都进一步取其精华去其糟粕。可以说ClickHouse汲取了各家技术的精髓,将每一个细节都做到了极致。接下来将介绍ClickHouse的一些核心特性,正是这些特性形成的合力使得ClickHouse如此优秀。

因为ClickHouse在诞生之初是为了服务Yandex自家的Web流量分析产品Yandex.Metrica,所以在存储数据超过20万亿行的情况下,ClickHouse做到了90%的查询都能够在1秒内返回的惊人之举。它基本能够胜任各种数据分析类的场景,并且随着数据体量的增大,它的优势也会变得越为明显。ClickHouse非常适用于商业智能领域(也就是我们所说的B