《ClickHouse性能之巅:从架构设计解读性能之谜》陈峰 | PDF下载|ePub下载
ClickHouse性能之巅:从架构设计解读性能之谜 版权信息
- 出版社:机械工业出版社
- 出版时间:2022-11-01
- ISBN:9787111716587
- 条形码:9787111716587 ; 978-7-111-71658-7
ClickHouse性能之巅:从架构设计解读性能之谜 本书特色
适读人群 :数据库工程师、数仓工程师、大数据工程师、架构师及对clickhouse感兴趣的软件研发工程师。中高级水平可以阅读(1)作者经验丰富:作者是滴普科技合伙人兼首席架构师,在ClickHouse方面积累了大量的实战经验。 (2)重在授人以渔:通过剖析ClickHouse底层引擎的架构设计来解密ClickHouse高性能背后的底层逻辑。 (3)同时授人以渔:结合ClickHouse的应用场景,总结了大量的使用技巧和性能优化方法。 (4)近10位专家联袂推荐:滴普科技联合创始人杨磊、京东云数据库研发负责人高新刚、ClickHouse 中国社区创始人郭炜等近10位专家强烈推荐。
ClickHouse性能之巅:从架构设计解读性能之谜 内容简介
这是一本通过分析ClickHouse底层引擎架构来解读ClickHouse极致性能的底层逻辑的著作,同时还总结了ClickHouse在各种适用场景中的使用技巧和性能调优方法,让读者知其然,也能知其所以然。 全书一共12章,分为两个部分: 第1部分 架构篇(第1-7章) 简要地介绍了数据仓库的核心技术和思路,系统讲解了ClickHouse的查询性能优势、适用场景、架构设计和运作过程,深入地剖析了ClickHouse的存储引擎架构、计算引擎架构以及决定ClickHouse性能的关键因素,还将ClickHouse与其他数仓架构进行了深度对比,不仅阐明了ClickHouse查询速度快的底层逻辑,也推导出了ClickHouse的适用场景。 第2部分 实战篇(第8-12章) 针对ClickHouse的适用场景,讲解了它的各种使用技巧以及存算分离架构、分布式架构等云计算时代的全新架构,更重要的是,从数据结构、内存、磁盘、网络、CPU、查询等方面全面总结了ClickHouse的性能优化方法和原则。
ClickHouse性能之巅:从架构设计解读性能之谜 目录
赞誉
序1
序2
自序
前言
**部分 架构篇
第1章 数据仓库的核心技术 3
1.1 OLAP和OLTP的本质区别 4
1.1.1 数据三范式 4
1.1.2 规范化的意义 6
1.1.3 规范化的局限 7
1.1.4 数仓建模的本质 7
1.1.5 OLAP和OLTP的底层数据模型 8
1.1.6 维度建模 8
1.2 典型大数据数仓技术及其核心思路 10
1.2.1 Hive 10
1.2.2 HBase 11
1.2.3 Kylin 12
1.2.4 其他数仓 13
1.3 传统数仓的缺陷 13
1.3.1 效率低 13
1.3.2 延迟高 14
1.3.3 成本高 14
1.4 ClickHouse查询性能的优势 15
1.4.1 向量化引擎 15
1.4.2 高效的数据压缩 16
1.4.3 高效的I/O优化 17
1.5 本章小结 18
第2章 ClickHouse简介 19
2.1 ClickHouse的4个标签 19
2.1.1 性能强大 19
2.1.2 单机处理能力强 20
2.1.3 成本低 21
2.1.4 不支持事务 21
2.2 ClickHouse的3个适用场景 22
2.2.1 BI报表的交互式分析 22
2.2.2 互联网日志分析 22
2.2.3 广告营销 23
2.3 本章小结 24
第3章 ClickHouse架构概览 25
3.1 ClickHouse架构简介 26
3.2 ClickHouse的核心抽象 27
3.2.1 列和字段 27
3.2.2 数据类型 28
3.2.3 块 32
3.2.4 表 33
3.3 ClickHouse的运作过程 35
3.3.1 数据插入过程 35
3.3.2 数据查询过程 35
3.3.3 数据更新和数据删除过程 36
3.4 本章小结 37
第4章 MergeTree存储引擎架构 39
4.1 MergeTree存储引擎的三大特点 40
4.2 MergeTree的数据组织 41
4.2.1 块 41
4.2.2 数据堆放方式 41
4.3 MergeTree的文件组织 43
4.3.1 数据文件、元数据文件、索引文件和其他文件 45
4.3.2 分区 47
4.3.3 数据库和表 48
4.4 索引 49
4.4.1 主键索引 49
4.4.2 标记 49
4.5 与事务数据库存储引擎的对比 50
4.6 存储引擎如何影响查询速度 52
4.6.1 预排序 52
4.6.2 列存 52
4.6.3 压缩 53
4.7 MergeTree存储引擎的工作过程 53
4.7.1 数据库、数据表的创建过程 54
4.7.2 数据插入过程 54
4.7.3 分区合并和删除过程 54
4.7.4 数据读取过程 56
4.8 本章小结 59
第5章 ClickHouse计算引擎架构 61
5.1 ClickHouse计算引擎的架构简介与设计思想 61
5.1.1 整体架构 62
5.1.2 SQL解析器 62
5.1.3 解释器 63
5.1.4 执行器 63
5.1.5 设计思想 64
5.2 火山模型 65
5.2.1 火山模型概述 65
5.2.2 火山模型的原理 66
5.2.3 火山模型的优点与缺点 67
5.3 向量化引擎 67
5.3.1 向量化引擎的实现方式 68
5.3.2 ClickHouse中的向量化算子 69
5.3.3 向量化引擎的前提 70
5.4 计算引擎如何影响查询速度 72
5.4.1 ClickHouse查询速度快的前提 72
5.4.2 ClickHouse查询速度快的本质 74
5.5 本章小结 74
第6章 ClickHouse与其他数仓架构的对比 75
6.1 ClickHouse与Hive的对比 75
6.1.1 Hive的数据文件 76
6.1.2 Hive的存储系统 82
6.1.3 Hive计算引擎与ClickHouse计算引擎的差异 84
6.1.4 ClickHouse比Hive查询速度快的原因 85
6.2 ClickHouse与HBase的对比 86
6.2.1 HBase的数据模型 86
6.2.2 HBase的存储系统与ClickHouse的异同 87
6.2.3 HBase的适用场景及ClickHouse不适合的原因 87
6.3 ClickHouse与Kylin的对比 88
6.3.1 Kylin的架构 88
6.3.2 Kylin解决性能问题的思路 88
6.3.3 Kylin方案的缺陷 89
6.3.4 ClickHouse的方案 89
6.4 本章小结 91
第7章 深度思考:决定外在能力的因素 93
7.1 从架构层面分析ClickHouse 93
7.1.1 ClickHouse速度快的前提 93
7.1.2 对ClickHouse的一些误解 94
7.2 结构决定功能 95
7.2.1 方法论 96
7.2.2 意义 97
7.2.3 不要过度设计 98
7.3 从ClickHouse的设计来理解 99
7.3.1 结构决定能力的上限 99
7.3.2 结构决定应用层算法 99
7.4 本章小结 100
第二部分 实战篇
第8章 ClickHouse使用技巧 105
8.1 数据导入、导出技巧 105
8.1.1 外部文件导入、导出技巧 105
8.1.2 灵活使用集成表引擎导入、导出数据 109
8.2 建表技巧 117
8.2.1 表引擎选择技巧 118
8.2.2 分区键选择技巧 120
8.2.3 数据结构选择技巧 120
8.2.4 分区技巧 121
8.3 高级技巧 121
8.3.1 物化视图 121
8.3.2 投影 122
8.3.3 位图 122
8.3.4 变更数据捕获 123
8.4 常见报错及处理方法 123
8.5 本章小结 124
第9章 ClickHouse实现用户画像系统 125
9.1 用户画像概述 125
9.1.1 用户画像系统介绍 125
9.1.2 用户画像系统的需求描述 127
9.1.3 用户画像系统的需求分析 127
9.1.4 用户画像系统的架构 128
9.2 用户画像系统的关键技术实现 129
9.2.1 技术选型 129
9.2.2 分析阶段 130
9.2.3 运营阶段 136
9.3 基于ClickHouse的用户画像系统的优点 137
9.4 本章小结 139
第10章 ClickHouse的存算分离架构 141
10.1 存算分离架构背景 141
10.1.1 相关概述 141
10.1.2 存算分离的典型架构 142
10.1.3 存算分离的意义 143
10.1.4 存算分离的局限 145
10.2 ClickHouse中的存算分离 147
10.2.1 实现方式 147
10.2.2 注意事项 150
10.3 存算分离架构给ClickHouse带来的优势 151
10.4 本章小结 152
第11章 ClickHouse的分布式架构 153
11.1 架构特点及对比 153
11.1.1 ClickHouse分布式架构的优点 154
11.1.2 ClickHouse分布式架构的缺点 155
11.1.3 ClickHouse与Hadoop的分布式架构对比 156
11.2 基本概念 156
11.2.1 集群 157
11.2.2 副本 158
11.2.3 分片 159
11.3 ClickHouse的复制表引擎 160
11.3.1 创建复制表 160
11.3.2 复制表复制 161
11.3.3 复制表查询 161
11.4 ClickHouse分布式表引擎 162
11.4.1 创建分布式表 162
11.4.2 分布式表查询原理 163
11.4.3 分布式表的数据写入方案 165
11.4.4 分布式表中副本的处理方式 165
11.5 本章小结 166
第12章 ClickHouse性能优化 167
12.1 性能优化的原则 167
12.2 数据结构优化 168
12.3 内存优化 171
12.4 磁盘优化 171
12.5 网络优化 173
12.6 CPU优化 173
12.7 查询优化 174
12.8 数据迁移优化 176
12.9 本章小结 177
ClickHouse性能之巅:从架构设计解读性能之谜 作者简介
陈峰 资深大数据专家和架构师,ClickHouse技术专家,滴普科技(2B领域独角兽)合伙人兼首席架构师,从0到1地建设了首支滴普科技的数据中台技术团队,构建了滴普科技的数据技术体系。 有多年的大数据架构经验,作者曾担任百丽数据中台丽影洞察项目的大数据架构师,将ClickHouse成功引入百丽。 曾在中国数据库技术大会(Database Technology Conference China,DTCC)等多个会议上发表ClickHouse主题演讲,对ClickHouse有非常深入的研究,实践经验丰富。 积极参与ClickHouse社区活动,积极推广ClickHouse。在多个项目中应用ClickHouse技术,将ClickHouse的强大能力推广到企业中,同时积极地向ClickHouse社区贡献代码和开源工具。