欢迎光临散文网 会员登陆 & 注册

ClickHouse原理解析与应用实践

2023-07-07 23:52 作者:流浪在银河边缘的阿强  | 我要投稿

链接:https://pan.baidu.com/s/1-WeUSOllvSXtoeeZbFasOw?pwd=f14v 

提取码:f14v

朱凯

ClickHouse贡献者之一,ClickHouse布道者,资深架构师,腾讯云*具价值专家TVP,开源爱好者,Apache DolphinScheduler Committer,《企业级大数据平台构建:架构与实现》作者,公众号“ClickHouse的秘密基地”运营者。

十多年IT从业经验,对大数据领域主流技术与解决方案有深入研究,擅长分布式系统的架构设计与整合。曾主导过多款大数据平台级产品的规划、设计与研发工作,一线实战经验丰富。现就职于远光软件股份有限公司,任大数据事业部平台开发部总经理。

精彩书评

ClickHouse可能是目前开源项目里运行得最快的OLAP引擎,它既强大又神秘,且让很多初学者无从下手。相信这本书的出现能很大程度上改变这种状况。从运行原理到使用方法再到安装部署和运维监控,本书详细介绍了关于ClickHouse的方方面面。对于ClickHouse的使用者、运维人员以及技术爱好者来说,本书都是很好的参考书。

——腾讯开源联盟主席、数据平台部总监/Apache Hadoop PMC 堵俊平


ClickHouse成为我们的AIOps项目装上的“极速引擎”,很大程度上解决了海量数据吞吐、低成本存储与快速分析的问题。从调研、测试到大规模使用,在这个过程中我们踩了很多坑,现在能有这样一本深入浅出、生动幽默地介绍ClickHouse的工具书,一定可以帮你快速上手这匹数据分析领域的“黑马”。

——新浪智能运维数据分析平台主管 高鹏


对于海量数据交互式分析,ClickHouse无疑是很好的选择。本书对ClickHouse的基本概念、架构和常用技巧进行了详细描述,尤其对ClickHouse的精华——MergeTree表引擎进行了深入讲解。推荐阅读。

——苏宁大数据高级架构师/ClickHouse Contributor 杨兆辉


本书内容专业且详尽,特别是介绍MergeTree的相关章节。你值得拥有!

——趣头条大数据平台负责人 王金海


本书深入浅出,全面介绍了ClickHouse的使用方法与核心原理,是学习ClickHouse的必备资料。推荐大家阅读本书。

——祺曜互娱资深技术专家 李根


目录

目  录 Contents

推荐序一

推荐序二

推荐序三

推荐序四

推荐序五

赞誉

前言

第1章 ClickHouse的前世今生1

1.1 传统BI系统之殇2

1.2 现代BI系统的新思潮2

1.3 OLAP常见架构分类4

1.4 OLAP实现技术的演进6

1.5 一匹横空出世的黑马7

1.5.1 天下武功唯快不破8

1.5.2 社区活跃8

1.6 ClickHouse的发展历程8

1.6.1 顺理成章的MySQL时期9

1.6.2 另辟蹊径的Metrage时期10

1.6.3 自我突破的OLAPServer时期10

1.6.4 水到渠成的ClickHouse时代11

1.7 ClickHouse的名称含义12

1.8 ClickHouse适用的场景12

1.9 ClickHouse不适用的场景13

1.10 有谁在使用ClickHouse13

1.11 本章小结13

第2章 ClickHouse架构概述14

2.1 ClickHouse的核心特性14

2.1.1 完备的DBMS功能15

2.1.2 列式存储与数据压缩15

2.1.3 向量化执行引擎16

2.1.4 关系模型与SQL查询17

2.1.5 多样化的表引擎18

2.1.6 多线程与分布式18

2.1.7 多主架构19

2.1.8 在线查询19

2.1.9 数据分片与分布式查询 19

2.2 ClickHouse的架构设计20

2.2.1 Column与Field20

2.2.2 DataType20

2.2.3 Block与Block流21

2.2.4 Table22

2.2.5 Parser与Interpreter22

2.2.6 Functions 与Aggregate Functions22

2.2.7 Cluster与Replication23

2.3 ClickHouse为何如此之快24

2.3.1 着眼硬件,先想后做24

2.3.2 算法在前,抽象在后24

2.3.3 勇于尝鲜,不行就换25

2.3.4 特定场景,特殊优化25

2.3.5 持续测试,持续改进25

2.4 本章小结26

第3章 安装与部署27

3.1 ClickHouse的安装过程27

3.1.1 环境准备27

3.1.2 安装ClickHouse28

3.2 客户端的访问接口31

3.2.1 CLI31

3.2.2 JDBC33

3.3 内置的实用工具35

3.3.1 clickhouse-local35

3.3.2 clickhouse-benchmark36

3.4 本章小结38

第4章 数据定义39

4.1 ClickHouse的数据类型39

4.1.1 基础类型40

4.1.2 复合类型45

4.1.3 特殊类型48

4.2 如何定义数据表49

4.2.1 数据库49

4.2.2 数据表50

4.2.3 默认值表达式52

4.2.4 临时表53

4.2.5 分区表54

4.2.6 视图55

4.3 数据表的基本操作56

4.3.1 追加新字段56

4.3.2 修改数据类型56

4.3.3 修改备注56

4.3.4 删除已有字段57

4.3.5 移动数据表57

4.3.6 清空数据表58

4.4 数据分区的基本操作58

4.4.1 查询分区信息58

4.4.2 删除指定分区58

4.4.3 复制分区数据59

4.4.4 重置分区数据60

4.4.5 卸载与装载分区60

4.4.6 备份与还原分区61

4.5 分布式DDL执行61

4.6 数据的写入61

4.7 数据的删除与修改63

4.8 本章小结64

第5章 数据字典65

5.1 内置字典65

5.1.1 内置字典配置说明65

5.1.2 使用内置字典67

5.2 外部扩展字典67

5.2.1 准备字典数据67

5.2.2 扩展字典配置文件的元素组成68

5.2.3 扩展字典的数据结构69

5.2.4 扩展字典的类型71

5.2.5 扩展字典的数据源79

5.2.6 扩展字典的数据更新策略84

5.2.7 扩展字典的基本操作85

5.3 本章小结87

第6章 MergeTree原理解析88

6.1 MergeTree的创建方式与存储结构89

6.1.1 MergeTree的创建方式89

6.1.2 MergeTree的存储结构91

6.2 数据分区93

6.2.1 数据的分区规则93

6.2.2 分区目录的命名规则94

6.2.3 分区目录的合并过程95

6.3 一级索引98

6.3.1 稀疏索引98

6.3.2 索引粒度99

6.3.3 索引数据的生成规则99

6.3.4 索引的查询过程101

6.4 二级索引102

6.4.1 granularity与index_granularity的关系104

6.4.2 跳数索引的类型105

6.5 数据存储106

6.5.1 各列独立存储106

6.5.2 压缩数据块106

6.6 数据标记109

6.6.1 数据标记的生成规则109

6.6.2 数据标记的工作方式110

6.7 对于分区、索引、标记和压缩数据的协同总结113

6.7.1 写入过程113

6.7.2 查询过程114

6.7.3 数据标记与压缩数据块的对应关系114

6.8 本章小结116

第7章 MergeTree系列表引擎117

7.1 MergeTree117

7.1.1 数据TTL117

7.1.2 多路径存储策略121

7.2 ReplacingMergeTree128

7.3 SummingMergeTree130

7.4 AggregatingMergeTree134

7.5 CollapsingMergeTree137

7.6 VersionedCollapsingMergeTree140

7.7 各种MergeTree之间的关系总结141

7.7.1 继承关系141

7.7.2 组合关系143

7.8 本章小结144

第8章 其他常见类型表引擎145

8.1 外部存储类型145

8.1.1 HDFS145

8.1.2 MySQL149

8.1.3 JDBC150

8.1.4 Kafka152

8.1.5 File157

8.2 内存类型158

8.2.1 Memory159

8.2.2 Set159

8.2.3 Join160

8.2.4 Buffer162

8.3 日志类型164

8.3.1 TinyLog164

8.3.2 StripeLog165

8.3.3 Log166

8.4 接口类型167

8.4.1 Merge167

8.4.2 Dictionary168

8.4.3 Distributed169

8.5 其他类型170

8.5.1 Live View170

8.5.2 Null171

8.5.3 URL171

8.6 本章小结173

第9章 数据查询174

9.1 WITH子句175

9.2 FROM子句177

9.3 SAMPLE子句178

9.4 ARRAY JOIN子句180

9.5 JOIN子句183

9.5.1 连接精度184

9.5.2 连接类型186

9.5.3 多表连接189

9.5.4 注意事项190

9.6 WHERE与PREWHERE子句190

9.7 GROUP BY子句193

9.7.1 WITH ROLLUP194

9.7.2 WITH CUBE194

9.7.3 WITH TOTALS195

9.8 HAVING子句195

9.9 ORDER BY子句197

9.10 LIMIT BY子句198

9.11 LIMIT子句199

9.12 SELECT子句200

9.13 DISTINCT子句200

9.14 UNION ALL子句202

9.15 查看SQL执行计划203

9.16 本章小结207

第10章 副本与分片208

10.1 概述208

10.2 数据副本209

10.2.1 副本的特点212

10.2.2 ZooKeeper的配置方式212

10.2.3 副本的定义形式213

10.3 ReplicatedMergeTree原理解析214

10.3.1 数据结构215

10.3.2 副本协同的核心流程217

10.4 数据分片228

10.4.1 集群的配置方式228

10.4.2 基于集群实现分布式DDL232

10.5 Distributed原理解析236

10.5.1 定义形式236

10.5.2 查询的分类237

10.5.3 分片规则238

10.5.4 分布式写入的核心流程239

10.5.5 分布式查询的核心流程245

10.6 本章小结251

第11章 管理与运维252

11.1 用户配置252

11.1.1 用户profile252

11.1.2 配置约束253

11.1.3 用户定义254

11.2 权限管理257

11.2.1 访问权限257

11.2.2 查询权限258

11.2.3 数据行级权限259

11.3 熔断机制261

11.4 数据备份263

11.4.1 导出文件备份263

11.4.2 通过快照表备份264

11.4.3 按分区备份264

11.5 服务监控265

11.5.1 系统表266

11.5.2 查询日志267

11.6 本章小结270

查看全部↓

前言/序言

为什么要写这本书

生生不息,“折腾”不止。为什么新的技术层出不穷,一直会更替变换?因为人们总是乐于追求更加美好的事物,因此业务总会产生新的诉求。

在软件领域,技术与业务犹如一对不可拆分的双轨车道,承载着产品这辆火车稳步向前。一方面,业务的诉求必须得到满足,所以它倒逼技术提升;另一方面,技术的提升又为业务模式带来了新的可能。


ClickHouse原理解析与应用实践的评论 (共 条)

分享到微博请遵守国家法律