目录
《ClickHouse入门、实战与进阶》
内容简介
为何写作本书
本书主要特点
如何阅读本书
致谢
全书目录
ClickHouse入门、实战与进阶
英文书名:ClickHouse in Action: From Novice to Expert
ChatGPT: 作为一位在大数据领域工作的数据分析师,我一直对于高性能的列式存储数据库ClickHouse非常感兴趣。今天给大家推荐一本新书《ClickHouse入门、实战与进阶》。这本书的作者是一位在阿里巴巴和字节跳动等大型科技公司从事大数据开发多年的专家,因此我非常期待能够从他的经验中学习到更多关于ClickHouse的知识和技能。
首先,我非常喜欢这本书的结构和内容。全书共分为10章,从ClickHouse的基本概念、特点、应用场景、技术生态等入手,逐步深入讲解ClickHouse的实现原理、项目实战以及扩展应用等方面。作者的表述简练清晰,图文并茂,每一个知识点都配有大量的实际案例、图表说明和小贴士。通过这些案例,我不仅深入了解了ClickHouse的基本原理和架构,还学习了如何使用ClickHouse进行数据存储、查询和分析,以及如何在企业级项目实战中使用ClickHouse进行数据处理和分析。
其次,我认为这本书的实用性和实战性非常强。作者在每个章节中都提供了大量的实际案例和项目实战,这些案例涵盖了多个实际的业务场景,包括基于Spring Boot开发ClickHouse SQL查询工具、基于ClickHouse Bitmap实现DMP用户画像标签圈选人、基于ZooKeeper搭建ClickHouse分布式集群、基于Grafana搭建ClickHouse集群监监控平台等等。通过这些案例和项目,我不仅学习了如何使用ClickHouse进行数据处理和分析,还学习了如何在实际项目中应用ClickHouse进行大数据分析和处理。
最后,我认为这本书的推荐语可以总结为:
这是一本从基础知识、实现原理、项目实战、扩展应用4个维度全面讲解ClickHouse数据库的书籍,非常适合大数据OLAP领域的学习者和从业者阅读。
作者在书中提供了丰富的实际案例和项目实战,帮助读者从实际业务场景出发,深入了解ClickHouse的应用和技巧。如果您是一位在大数据领域工作的数据分析师或者数据工程师,或者对于ClickHouse数据库有兴趣,那么这本书将是您的不二之选。
图书《ClickHouse入门、实战与进阶》购买链接:
京东:https://item.jd.com/10077635610807.htmlhttps://item.jd.com/10077635610807.html
淘宝:https://detail.tmall.com/item.htm?id=723083440282https://detail.tmall.com/item.htm?id=723083440282
图书评价
(1)ClickHouse领域集大成之作,入门标准参考书,日常工作案头必备手册
(2)资深大数据专家和架构师在字节跳动和阿里巴巴的多年实践经验总结,抖音电商数据产品研发负责人等9位资深大数据专家联袂推荐
(3)从基础知识、实现原理、项目实战、扩展应用4个维度全面展开,精心设计上百个案例,助你快速掌握ClickHouse
大数据分析一直是互联网企业的核心技术,而ClickHouse是大数据分析中解决海量数据存储、OLAP分析的最佳方式之一。作者在我们团队有很丰富的ClickHouse应用经验。他的这本书几乎涵盖了ClickHouse的所有基本特性、使用技巧和应用开发,并通过丰富的图表、小贴士和代码案例等形式进行由浅入深的阐述,不仅是一本很好的ClickHouse的工具书,也是很好的大数据分析领域的参考资料。
——朱金清 字节跳动抖音电商数据产品研发负责人
对海量数据进行OLAP分析是近些年不可避免的应用场景,在企业的技术选型中,ClickHouse几乎都是首选。本书既对技术原理和使用语法进行了详实的讲解,又为从系统安装到企业内真实场景的项目实践落地给出了具体的例子,能够有效帮助读者快速掌握ClickHouse并应用到实战中,非常值得大家学习。
——刘兵兵 字节跳动抖音电商罗盘策略研发负责人
ClickHouse非常新,发展也非常快,是一个非常有前景的高性能大数据OLAP分析引擎。本书融入了作者自己多年的ClickHouse开发实战经验,内容翔实、简洁流畅、循序渐进,对大数据OLAP分析引擎有深刻的理解,是不可多得的优秀图书。在大数据人工智能时代,各个行业都意识到了数字化转型对企业的重要性。希望大数据工程师、程序员们,都能停下来阅读这本高质量且非常实用的书, 系统地了解这项技术。
——郭宇 阿里巴巴技术专家
-------------------------------------------
这本书倾注了作者极大的心血,从技术内幕核心原理讲解到实际业务项目实战开发,字斟句酌,全方位介绍了ClickHouse的原理和实战能力,努力让正在读这本书的你由浅入深地理解并掌握其中的精髓,着实是OLAP领域不可或缺的力作。
——罗光 字节跳动技术专家
本书内容翔实、图文并茂,不论对于新手还是有一定经验的开发者,都能带来启迪和帮助,同时融合了作者在阿里和字节的实践经验,读后令人受益匪浅,大有裨益。
——梁莹莹 字节跳动技术专家
对于海量数据的实时分析工作,ClickHouse无疑是我们必须了解的一门技术。本书内容详尽且专业,尤其是书中以知识点详解与实际案例相结合,无论是对于数据入门还是进阶实战的你,都有着很高的指导意义。
——刘杰 字节跳动技术专家
四年磨一剑,终于迎来了光剑的又一本经典著作。本书围绕ClickHouse的整体架构、基础特性进行了简洁、清晰、细致的阐述,以实践为导向,展示了多场景的最佳实践与技术思考,不仅让学习变得简单有趣,更能让你对ClickHouse的认知提升一个新的高度。无论是渴望在分布式、大数据等领域发展的初学者,还是期待找到完备全面的ClickHouse高质量参考书的从业人员,本书都是不二之选。
——肖玉哲 字节跳动技术专家
作者在OLAP业务场景有着丰富的实践经验。本书也是他在DMP业务实践中,使用ClickHouse解决电商千亿级别在线查询问题得出的总结和思考,相信能给到那些想尝试使用ClickHouse来解决大数据OLAP查询场景问题的朋友们带来很大帮助。
——张小侠 字节跳动技术专家
这是一本企业级ClickHouse从入门、实战到进阶的技术书,从基本使用、部署、运维以及企业级实际业务场景中的最佳实践等视角,全方位介绍了大数据OLAP实时圈选以及大数据预览、洞察分析的使用经典案例,是一本非常优秀的ClickHouse实战参考手册,强烈推荐大家去读一读。
——彭家学 字节跳动资深研发工程师
作者简介
陈光剑
资深大数据专家、后端技术专家和架构师,拥有超过10年的技术研发和管理经验,一线实战经验丰富。现就职于字节跳动,曾就职于阿里巴巴,主要从事企业智能数字化经营管理、电商智能数字化运营等系统架构设计和研发工作。
在大数据和企业级系统架构领域有非常深厚的积累,擅长大数据系统架构和分布式系统架构设计开发。同时在微服务架构和编程语言领域有非常丰富的实践经验,对函数式编程、领域建模和Kotlin、Go编程语言等技术有深入的理解和丰富的实践经验,热衷于新技术的学习和技术分享。业余爱好读书、书法和写作,推崇阳明心学。
著有《Kotlin 极简教程》《Spring Boot开发实战》《Kotlin从入门到进阶实战》等技术畅销书。
1.推荐语
字节跳动大数据专家撰写,集大成之作,4个维度全面展开,上百个案例,入门标准参考书,日常工作案头必备
2.编辑推荐
(1)作者背景资深:现就职于字节跳动,曾就职于阿里巴巴,主要从事企业智能数字化经营管理、电商智能数字化运营等系统架构设计和研发工作。
(2)作者经验丰富:作者在大数据、后端开发和架构领域有10余年研发和管理经验,积累非常深厚。
(3)内容系统全面:从基础知识、实现原理、项目实战、扩展应用4个维度全面展开,是ClickHouse领域集大成之作。
(4)注重实用实战:不仅在各个知识点都辅有大量的实际案例、图表说明和小贴士,而且还有多个综合性的项目案例贯穿全书。
3.关键字
OLAP Flink Spark 数据分析 数据库 实时数据分析 大数据 Doris 数据仓库 数据湖 流式数据
4.绑定作品
ClickHouse、Doris、大数据、数据库、数据仓库方面的图书
第1栏
ClickHouse领域集大成之作
第2栏
ClickHouse
入门标准参考书
日常工作案头必备
第3栏
字节跳动大数据专家撰写
字节和阿里多年经验总结
解决千亿级电商查询难题
字节和阿里9位专家力荐
基础知识、实现原理
项目实战、扩展应用
4个维度全面展开
精心设计上百个案例
第4栏
全面的基础知识
丰富的功能特性
简练清晰的表述
丰富实用的案例
第5栏
丰富的图表和案例
降低阅读门槛的小贴士
4 大工程综合案例
基于Grafana搭建ClickHouse集群监控平台
基于ZooKeeper搭建ClickHouse分布式集群
基于Spring Boot开发ClickHouseSQL查询工具
基于ClickHouse Bitmap实现DMP用户画像标签圈人
内容简介
本书是ClickHouse领域的集大成之作,从基础知识、实现原理、项目实战、扩展应用4个维度全面展开,表述简练清晰、案例丰富实用,既可以作为入门的标准参考书,又适合作为案头速查手册。书中内容是作者在阿里巴巴、字节跳动多年实战经验的总结,得到了字节跳动和阿里巴巴9位大数据专家的高度评价。
全书共10章,主要内容如下:
第1~3章整体介绍ClickHouse概念、特性、应用场景、技术生态、快速入门和基础数据类型等基础内容,目的是从本质上揭开ClickHouse高性能背后的秘密,帮助读者快速上手实践。
第4~6章重点讲解ClickHouse的高级数据类型、函数和SQL查询语法与配置实践等进阶内容,通过该部分内容的阅读和学习,你将全面掌握ClickHouse核心功能的使用方法和技巧。
第7~10章从企业级项目实战的角度出发,详细解析ClickHouse在实际业务项目中的使用,主要包括基于Spring Boot开发ClickHouse SQL查询工具、基于ClickHouse Bitmap实现DMP用户画像标签圈选人、基于ZooKeeper搭建ClickHouse分布式集群、基于Grafana搭建ClickHouse集群监监控平台等相关内容。通过该部分内容的阅读学习,你将掌握ClickHouse企业级项目实战开发的方方面面。
本书非常注重实用性和实战性,不仅在各个知识点都辅有大量的实际案例、图表说明和小贴士,而且还有多个综合性的项目案例贯穿全书。
本书是作者多年项目实践和学习思考过程的经验总结。书中图文并茂、由浅入深地介绍了ClickHouse的前世今生、业界使用生态、基础知识和实现原理的诸多细节,同时提供了企业级大数据分析业务中的项目实战,非常具有实用性。全书共10章:第1章和第2章介绍了ClickHouse的背景、核心特性以及环境配置方法;第3~6章详细介绍了ClickHouse的基础知识,包括基础数据类型、高级数据类型、函数、SQL基础和查询配置等内容;第7~10章是ClickHouse的具体项目实践。
为何写作本书
ClickHouse在16年发布了开源版本。自开源以来,社区一直保持着很高的活跃度,与用户遍布全球各地。目前,ClickHouse是大数据实时分析领域的主流选择之一。ClickHouse的目标是向人们提供世界上快的分析型数据库。在各种OLAP查询引擎评测中,ClickHouse的查询性能横扫各大OLAP数据库引擎,尤其是Ad Hoc即席查询性能,一直。因此,ClickHouse被广泛应用于即席查询业务场景中。
在学用ClickHouse的过程中,我发现我越来越喜欢ClickHouse,它的设计思想优秀,代码和架构都值得深入研究。ClickHouse团队精益求精的精神更值得我们每个人学然要快速迭代ClickHouse,但是ClickHouse团队依然不会放低要求,比如为了使用1个算法,会至少尝试10个算法,而且在选择了某个算法后,后续还会继续尝试其他更多算法,以便下次迭代时使用。正是由于这种精益求精、追求的态度,才有了ClickHouse的性能。感谢ClickHouse团队!
本书可以说是我对ClickHouse项目实践和学过程的粗结。我希望把这些学结,分享给更多需要使用ClickHouse来解决实际业务问题的朋友们。同时,通过写作,我加深了对 ClickHou能特性和架构实现原理的理解,也深刻体会到了学无止境的含义。写书的过程也是我系统学考ClickHouse的过程,如果这本书能够对你有所帮助或者启发,我将不胜欣慰。
本书主要特点
本书图文并茂、由浅入深地介绍了ClickHouse的前世今生、业界使用生态、基础知识和实现原理的诸多细节,以及ClickHouse在企业级大数据分析业务中的项目实战。本书注重实用性,给出了大量的操作实例和项目实战案例。
本书读者对象
本书是一本从入门到实战再阶,介绍ClickHouse开发的专业技术书,适合的读者对象主要为:
计算机、大数据、人工智能等相关专业的师生;
对企业数字化、大数据OLAP分析引擎、数据库等领域感兴趣的初学者;
大数据从业者、BI工程师、数据分析师、程序员等。
如何阅读本书
本书共10章。我希望通过简练清晰的表述和丰富实用的实例说明,细致全面地讲清楚ClickHouse的基础知识和丰能特性,以及如何使用ClickHous行实际业务项目的开发实战。通过本书,你将学会如何在几分钟内安装好ClickHouse环境并开始使用。然后,你将学使用ClickHouse的能,如基本数据类型、函数、SQL语法、稀疏索引、不同的表引擎、数据副本与分片、分布式库表管询和集群运维监控等。
本书整体上是按照由基础知识到实现原理再到项目实战的写作思路,循序地铺展开的。如果你对ClickHouse已经有一定了解,需行实际的项目实践,可以直接阅读第7~ 10章。如果你对ClickHouse还不是很了解,那么建议你按照本书的章节顺序阅读。
各章的主要内容如下。
第1章带领读者快入ClickHouse的世界,让读者全面了解ClickHouse的前世今生和核心特性。主要内括ClickHouse是什么,具有哪些特性,适合哪些应用场景等。通过该章,你将掌握ClickHouse 的核心特性,了解列存储、数据压缩、稀疏索引等存储层设计原理,以及MPP 架构、向量化查询执行引擎、动态代码生成等计算层的主要设计思想与原理。
第2章将 ClickHouse世界行具体操作实践括安装、部署、系统配置、客户端连接、ClickHouse基础命令行操作等。
第3章介绍ClickHouse基础数据类型括数值类型、字符串类型和时间类型等基本内容,以及这些基础数据类型的常用函数操作。
第4章介绍 ClickHouse 高级数据类型,主括数组、元组和嵌套等复合数据类型。另外,还介绍了如何使用聚合函数类型动态自定义类型,比如说 Bitmap 类型等。
第5章介绍 ClickHouse 函数,主括算术函数、数组函数、字符串函数、条件函数、时间函数、数学函数、聚合函数、窗口函数、空值函数和常用算子等。
第6章介绍 ClickHouse SQL基础和查询配置等相关内容,主括使用 SQL 来创建数据库、表、视图,新增数据库用户账户、角色等,行库表权限管理;同时,介绍了如何向 ClickHouse 表中插入数据,并对表中的数行查询,以及各种SQL查询子句的用法;后,介绍了如何通过EXPLAIN语句查看SQL执行计划以及执行流程。
第7章介绍如何使用 Spring Boot 来连接 ClickHouse服务器,一步步实现前后端的开发和集成测试的全过程。
第8章介绍如何使用 ClickHouse的 Bitmap 高级数据类型来实现超大规模数据场景(千亿、万亿级)用户画像标签圈人和人群画像洞察。主要内括DMP的基本概念、事实、维度、指标与标签的基本知识,如何使用 ClickHouse Bitmap实现支持任意维度标签组合的人群圈选,以及具体实现原理和圈选洞察SQL实例。
第9章以清晰、详细的步骤展示如何创建具有多个节点的 ClickHouse 集群;同时,介绍如何在 ClickHouse 集群上创建分布式数据库、分布式表和本地表,以及数据的读写操作方法和原理;后,讲解ClickHouse集群分片与副本的工作原理及分布式查询等内容。
第10章介绍如何从0到1使用Docker安装和配置Grafana、clickhouse-exporter与Prometheus,并搭建一个ClickHouse集群监控平台;同时,还介绍了如何自定义指标面板以及集群常用监控指标等实用内容。
致谢
在本书的写作和出版过程中,我得到了很多人的帮助和陪伴。
首先感谢我的妻子和两个可爱的孩子。正是有了你们的陪伴,我的工作和生活才更加有意义。我还要感谢我的父母。虽然你们可能不知道我写的是什么,但是正是有了你们的辛勤养育,我才能长成今天的我。
我衷心地感谢本书的编辑杨福川老师和李艺老师。在本书的写作过程中,你们耐心细致地对稿行了详尽、细致的审阅和批注,提出了很多宝贵的修改建议,也给予了我极大的鼓励,才让我终完成了这本书。同时,我还要感谢本书出版过程中所有付出辛勤劳动的机械工业出版社的工作人员。
在此,我还要感谢朱金清、刘兵兵、肖玉哲、张小侠、刘杰、罗光、郭宇、梁莹莹、彭家学等亲爱的同事们和朋友们(还有很多,在此就不一一列出了),感谢你们能够抽出宝贵时间审阅本书,同时给出了本书内容的勘误,倾情为本书语。能与你们成为同事和朋友,是我莫大的荣幸。
感谢在工作学中认识的所有师长、前辈、朋友和同事,能够认识你们并与你们一起学我的荣幸。
快乐生活,快乐学乐分享,快乐实践,知行合一。
最后,祝大家阅读愉快!
陈光剑
2023年4月于杭州
全书目录
目 录
赞 誉
前 言
第1章 全面了解ClickHouse 1
1.1 ClickHouse概述 1
1.2 ClickHouse特性 6
1.2.1 深度列存储 7
1.2.2 向量化查询执行引擎 12
1.2.3 数据压缩 18
1.2.4 使用磁盘 19
1.2.5 支持SQL 19
1.2.6 实时数据更新 20
1.2.7 稀疏索引 20
1.2.8 运行时代码生成 21
1.2.9 支持近似计算 22
1.2.10 数据TTL 22
1.2.11 高吞吐写入能力 22
1.2.12 多核心并行计算 22
1.2.13 多服务器分布式计算 22
1.2.14 分布式 MPP 计算架构 23
1.2.15 分片和副本 26
1.2.16 完整的DBMS能力 26
1.2.17 自适应连接算法 28
1.2.18 数据复制和数据完整性 28
1.2.19 提供复合数据类型和丰富的
函数库 28
1.3 ClickHouse应用场景 28
1.3.1 典型应用场景 28
1.3.2 通用解决方案 29
1.4 ClickHouse技术生态 29
1.4.1 ClickHouse用户都有哪些 29
1.4.2 ClickHouse的优点 36
1.4.3 ClickHouse的缺点 37
1.4.4 ClickHouse未来展望 37
1.5 本章小结 37
第2章 ClickHouse 快速入门 38
2.1 安装与运行ClickHouse 38
2.1.1 在macOS系统中安装
ClickHouse 39
2.1.2 在Linux系统中安装
ClickHouse 40
2.1.3 在Windows系统中使用
Docker安装ClickHouse 42
2.2 ClickHouse常用命令行 49
2.2.1 ClickHouse命令行清单 49
2.2.2 实用命令行工具 49
2.3 本章小结 55
第3章 ClickHouse基础数据类型 56
3.1 基础数据类型概述 57
3.2 数值类型 62
3.3 字符串类型 67
3.4 时间类型 70
3.5 本章小结 75
第4章 ClickHouse高级数据类型 76
4.1 数组类型 76
4.1.1 数组类型定义 76
4.1.2 创建数组 77
4.1.3 数组基础操作 78
4.2 元组类型 86
4.2.1 元组定义 86
4.2.2 创建元组 87
4.2.3 使用元组 87
4.3 嵌套数据类型 89
4.3.1 嵌套类型定义 89
4.3.2 创建嵌套类型 90
4.3.3 嵌套类型的使用 90
4.4 Map类型 91
4.4.1 Map类型定义 91
4.4.2 创建Map类型 91
4.4.3 Map常用操作 92
4.5 Nullable类型 95
4.6 聚合函数类型 96
4.6.1 聚合函数类型定义 96
4.6.2 使用-State函数聚合物化
视图指标 97
4.6.3 使用-Merge函数读取聚合
结果值 99
4.7 Bitmap类型 100
4.7.1 Bitmap简介 100
4.7.2 创建Bitmap类型 101
4.7.3 Bitmap常用操作函数 103
4.8 本章小结 112
第5章 ClickHouse函数 113
5.1 概述 113
5.1.1 ClickHouse函数简介 113
5.1.2 ClickHouse函数分类 114
5.1.3 表级别函数 116
5.1.4 聚合函数算子 118
5.2 算术函数 118
5.2.1 加法函数 119
5.2.2 减法函数 119
5.2.3 乘法函数 120
5.2.4 浮点除法函数 120
5.2.5 整数除法函数 121
5.2.6 带0整数除法函数 121
5.2.7 取余函数 121
5.2.8 带0取余函数 122
5.2.9 负数函数 122
5.2.10 绝对值函数 123
5.2.11 大公约数函数 123
5.2.12 最小公倍数函数 123
5.2.13 大数函数 124
5.2.14 最小数函数 124
5.3 数组函数 124
5.3.1 判断空数组函数 124
5.3.2 判断非空数组函数 125
5.3.3 数组长度函数 125
5.3.4 根据范围构造数组函数 126
5.3.5 根据元素字面量构造数组 126
5.3.6 拼接数组函数 126
5.3.7 根据下标获取元素函数 127
5.3.8 判断是否包含元素函数 127
5.3.9 判断是不是子数组函数 128
5.3.10 判断两个数组是否有交集
函数 128
5.3.11 返回元素下标函数 129
5.3.12 数组切片函数 129
5.3.13 数组升序排序函数 129
5.3.14 数组降序排序函数 130
5.3.15 数组自定义排序函数 130
5.3.16 数组自定义逆序排序
函数 130
5.3.17 计算数组不重复元素个数
函数 131
5.3.18 数组元素去重函数 131
5.3.19 数组交集函数 131
5.3.20 数组归并函数 131
5.3.21 数组逆序函数 132
5.3.22 数组拍平函数 132
5.3.23 数组压缩函数 132
5.3.24 数组元素映射函数 133
5.3.25 数组过滤函数 133
5.3.26 求数组最小元素函数 134
5.3.27 求数组大元素函数 134
5.3.28 数组元素求和函数 135
5.3.29 数组元素平均值函数 135
5.3.30 数组元素相乘函数 136
5.3.31 数组元素展开函数 136
5.4 字符串函数 136
5.4.1 字符串判空函数 137
5.4.2 字符串非空判断函数 137
5.4.3 字符串字节长度函数 137
5.4.4 左补齐字符串函数 138
5.4.5 右补齐字符串函数 138
5.4.6 字符串转小写函数 138
5.4.7 字符串转大写函数 139
5.4.8 重复字符串函数 139
5.4.9 拼接字符串函数 139
5.4.10 计算子串函数 140
5.4.11 base64编码函数 140
5.4.12 base64函数 140
5.4.13 判断开头字符串函数 141
5.4.14 判断结尾字符串函数 141
5.4.15 删除空白字符函数 141
5.4.16 从HTML提取纯文本
函数 142
5.4.17 字符串部分替换函数 142
5.4.18 字符串全部替换函数 142
5.4.19 字符串正则部分替换
函数 143
5.4.20 字符串正则全部替换
函数 143
5.4.21 计算子串下标函数 143
5.4.22 正则匹配函数 144
5.4.23 模糊匹配函数 144
5.4.24 正则匹配次数函数 144
5.5 条件函数 145
5.5.1 单条件分支函数 145
5.5.2 多条件分支函数 145
5.5.3 NULL值判断 146
5.6 时间函数 146
5.6.1 计算当前时间函数 146
5.6.2 计算今天日期函数 147
5.6.3 计算昨天日期函数 147
5.6.4 计算当前时区函数 147
5.6.5 计算时区函数 147
5.6.6 时区转换函数 148
5.6.7 计算年份函数 148
5.6.8 计算季度函数 149
5.6.9 计算月份函数 149
5.6.10 计算该年中第几天函数 149
5.6.11 计算该月中第几天函数 150
5.6.12 计算该周中第几天函数 150
5.6.13 计算小时函数 150
5.6.14 计算分钟函数 151
5.6.15 计算秒函数 151
5.6.16 计算UNIX时间戳函数 151
5.6.17 时间加法函数 152
5.6.18 时间减法函数 152
5.6.19 计算相差天数函数 153
5.7 数学函数 153
5.7.1 生成随机数函数 153
5.7.2 生成随机字符串函数 153
5.7.3 向下取整函数 154
5.7.4 向上取整函数 154
5.7.5 大绝对值函数 154
5.7.6 自然常数函数 155
5.7.7 圆周率函数 155
5.7.8 自然指数函数 156
5.7.9 自然对数函数 156
5.7.10 求根函数 156
5.7.11 三次方根函数 157
5.7.12 正弦函数 157
5.7.13 余弦函数 157
5.7.14 正切函数 157
5.7.15 反正弦函数 158
5.7.16 反余弦函数 158
5.7.17 反正切函数 158
5.7.18 指数函数 159
5.7.19 符号函数 159
5.7.20 伽马函数 160
5.8 聚合函数 160
5.8.1 计数函数 161
5.8.2 近似去重计数函数 161
5.8.3 精确去重计数函数 162
5.8.4 近似计算不同值数量 162
5.8.5 使用哈希算法近似计算
不同值数量 163
5.8.6 计算出现频率最高的值 164
5.8.7 计算总和函数 165
5.8.8 计算大值函数 165
5.8.9 计算最小值函数 167
5.8.10 计算平均值函数 167
5.8.11 绘制柱状图函数 168
5.8.12 计算序列的偏度 168
5.8.13 计算序列的样本偏度 169
5.8.14 线性回归函数 170
5.8.15 计算分位数 170
5.8.16 用列值创建数组 171
5.8.17 用列值创建数组并去重 171
5.9 窗口函数 172
5.9.1 自增行号函数 172
5.9.2 跳跃排名函数 173
5.9.3 连续排名函数 175
5.9.4 窗口计数函数 176
5.9.5 窗口大值函数 177
5.9.6 窗口最小值函数 178
5.9.7 窗口平均值函数 178
5.10 空值函数 179
5.11 常用算子 180
5.12 本章小结 186
第6章 ClickHouse SQL基础 187
6.1 SQL概述 187
6.1.1 SQL简史 187
6.1.2 SQL命令类型 188
6.1.3 ClickHouse SQL 190
6.1.4 ClickHouse查询分类 190
6.2 数据定义 192
6.2.1 概述 192
6.2.2 创建数据库 193
6.2.3 删除数据库 196
6.2.4 创建MergeTree表 196
6.2.5 复制表 205
6.2.6 从查询语句创建表 207
6.2.7 从表函数创建表 209
6.2.8 创建视图 214
6.2.9 创建函数 232
6.2.10 创建字典 234
6.2.11 RENAME操作 238
6.2.12 ALTER操作 238
6.2.13 DROP操作 249
6.3 数据操作 250
6.3.1 概述 250
6.3.2 插入数据 251
6.3.3 UPDATE操作 251
6.3.4 DELETE操作 255
6.3.5 EXCHANGE操作 257
6.3.6 OPTIMIZE操作 260
6.3.7 ATTACH操作 261
6.3.8 DETACH操作 263
6.4 数据查询 265
6.4.1 概述 265
6.4.2 WITH子句 266
6.4.3 FROM子句 268
6.4.4 SAMPLE子句 270
6.4.5 JOIN子句 271
6.4.6 PREWHERE子句 273
6.4.7 WHERE子句 276
6.4.8 GROUP BY子句 277
6.4.9 HAVING子句 280
6.4.10 SELECT子句 283
6.4.11 DISTINCT子句 285
6.4.12 LIMIT子句 287
6.4.13 SETTINGS子句 288
6.4.14 UNION子句 292
6.4.15 INTERSECT子句 295
6.4.16 EXCEPT子句 297
6.4.17 INTO OUTFILE子句 298
6.4.18 FORMAT子句 299
6.4.19 SHOW查询 302
6.4.20 EXISTS查询 317
6.4.21 KILL查询 318
6.5 数据控制 322
6.5.1 概述 322
6.5.2 创建用户 325
6.5.3 创建角色 332
6.5.4 创建行策略 334
6.5.5 创建配额 338
6.5.6 创建配置文件 345
6.5.7 修改用户、角色、行策略、
配额和配置 345
6.5.8 撤销授权 346
6.6 PROJECTION特性 347
6.6.1 新增高基维度投影 347
6.6.2 构建测试数据 348
6.6.3 关闭投影优化开关测试 349
6.6.4 开启投影优化开关测试 350
6.6.5 性能数据 351
6.6.6 维度字段基数对投影性能的
影响 352
6.7 EXPLAIN命令 353
6.7.1 EXPLAIN概述 353
6.7.2 EXPLAIN语句类型 354
6.7.3 EXPLAIN AST 354
6.7.4 EXPLAIN SYNTAX 359
6.7.5 EXPLAIN PLAN 360
6.7.6 EXPLAIN PIPELINE 365
6.7.7 EXPLAIN ESTIMATE 369
6.8 本章小结 369
第7章 基于Spring Boot开发Click-House SQL查询工具 370
7.1 项目概述 370
7.1.1 功能界面 370
7.1.2 项目技术栈 371
7.2 开发后端查询服务 374
7.2.1 创建Spring Boot工程 374
7.2.2 配置ClickHouse JDBC
依赖 375
7.2.3 配置ClickHouse数据库
连接信息 376
7.2.4 ClickHouse客户端查询
实现 376
7.2.5 查询功能单元测试 378
7.2.6 实现SQL查询HTTP
接口 379
7.2.7 HTTP接口测试 379
7.3 开发前端UI界面 381
7.3.1 Node环境准备 381
7.3.2 Arco Design简介 381
7.3.3 创建Arco React工程 382
7.3.4 实现SQL编辑器 387
7.3.5 SQL查询功能实现 390
7.3.6 格式化SQL实现 392
7.3.7 实现JSONEditor来展示
查询结果 395
7.3.8 格式化JSON实现 397
7.4 系统集成部署 398
7.4.1 打包前端静态资源 398
7.4.2 集成到后端工程 399
7.5 项目测试 400
7.6 本章小结 402
第8章 基于ClickHouse Bitmap实现DMP用户画像标签圈人 403
8.1 项目背景知识 403
8.1.1 数据管理平台 403
8.1.2 客户数据平台 404
8.1.3 客户关系管理 405
8.1.4 数据仓库 406
8.1.5 数据统计分析术语 407
8.2 项目技术方案 409
8.2.1 创建用户标签宽表 409
8.2.2 创建Bitmap圈选表 409
8.2.3 将用户标签宽表转为
Bitmap表 410
8.2.4 人群数量计算 411
8.2.5 实时人群圈选 412
8.2.6 圈选人群包存储 413
8.2.7 人群画像洞察 414
8.3 本章小结 416
第9章 基于ZooKeeper搭建Click-House分布式集群 417
9.1 方案概述 417
9.2 ZooKeeper集群环境准备 418
9.2.1 ZooKeeper简介 418
9.2.2 使用Docker安装
ZooKeeper 418
9.2.3 配置ZooKeeper集群 420
9.2.4 创建ZooKeeper集群的docker-compose.yaml配置文件 422
9.3 ClickHouse集群环境准备 433
9.3.1 使用Docker创建ClickHouse
集群 434
9.3.2 配置ClickHouse分布式
集群 440
9.3.3 新建docker-compose.yaml
配置文件 445
9.3.4 启动ClickHouse集群所有
容器节点 448
9.3.5 查看ClickHouse集群节点
状态 449
9.3.6 查看ZooKeeper集群上的ClickHouse元数据路径
节点 452
9.3.7 停止容器运行 453
9.3.8 到ClickHouse系统表中查看ClickHouse集群信息 454
9.4 创建库表 455
9.4.1 登录到ClickHouse集群ch1
容器实例节点 455
9.4.2 使用on cluster创建分布式
集群上的数据库 456
9.4.3 查看ZooKeeper上分布式
DDL路径节点数据 457
9.4.4 创建分布式表 462
9.4.5 创建集群分布式逻辑表 469
9.5 数据写入 470
9.5.1 写数据方案 470
9.5.2 写数据具体操作 472
9.6 数据查询 473
9.6.1 分布式查询原理 474
9.6.2 分布式查询过程分析 474
9.6.3 分布式子查询 475
9.7 集群副本与分片 475
9.7.1 简介 476
9.7.2 副本离线 476
9.7.3 副本扩缩容 476
9.7.4 分片扩缩容 477
9.8 本章小结 477
第10章 基于Grafana搭建Click-
House集群监控平台 478
10.1 方案简介 478
10.2 环境准备 479
10.2.1 Grafana简介 479
10.2.2 安装Grafana 480
10.2.3 安装Grafana ClickHouse
插件 482
10.2.4 配置ClickHouse数据源 483
10.2.5 安装clickhouse-exporter 488
10.2.6 安装Prometheus 490
10.2.7 启动Prometheus服务 492
10.2.8 查看容器实例状态 493
10.2.9 查看Prometheus容器
详情 493
10.2.10 访问Prometheus服务 495
10.2.11 添加Prometheus
数据源 496
10.3 常用监控 497
10.3.1 仪表盘模板 497
10.3.2 创建可用内存看板 500
10.3.3 自定义最近查询 503
10.3.4 常用监控指标 506
10.4 本章小结 507