定 價:139 元
叢書名:數(shù)據(jù)庫技術(shù)叢書
- 作者:陳光劍著
- 出版時間:2023/6/1
- ISBN:9787111727170
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.13
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書是ClickHouse領(lǐng)域的集大成之作,從基礎(chǔ)知識、實現(xiàn)原理、項目實戰(zhàn)、擴展應(yīng)用4個維度全面展開,表述簡練清晰、案例豐富實用,既可以作為入門的標準參考書,又適合作為案頭速查手冊。書中內(nèi)容是作者在阿里巴巴、字節(jié)跳動多年實戰(zhàn)經(jīng)驗的總結(jié),得到了字節(jié)跳動和阿里巴巴9位大數(shù)據(jù)專家的高度評價。
全書共10章,主要內(nèi)容如下:
第1~3章整體介紹ClickHouse概念、特性、應(yīng)用場景、技術(shù)生態(tài)、快速入門和基礎(chǔ)數(shù)據(jù)類型等基礎(chǔ)內(nèi)容,目的是從本質(zhì)上揭開ClickHouse高性能背后的秘密,幫助讀者快速上手實踐。
第4~6章重點講解ClickHouse的高級數(shù)據(jù)類型、函數(shù)和SQL查詢語法與配置實踐等進階內(nèi)容,通過該部分內(nèi)容的閱讀和學習,你將全面掌握ClickHouse核心功能的使用方法和技巧。
第7~10章從企業(yè)級項目實戰(zhàn)的角度出發(fā),詳細解析ClickHouse在實際業(yè)務(wù)項目中的使用,主要包括基于Spring Boot開發(fā)ClickHouse SQL查詢工具、基于ClickHouse Bitmap實現(xiàn)DMP用戶畫像標簽圈選人、基于ZooKeeper搭建ClickHouse分布式集群、基于Grafana搭建ClickHouse集群監(jiān)監(jiān)控平臺等相關(guān)內(nèi)容。通過該部分內(nèi)容的閱讀學習,你將掌握ClickHouse企業(yè)級項目實戰(zhàn)開發(fā)的方方面面。
本書非常注重實用性和實戰(zhàn)性,不僅在各個知識點都輔有大量的實際案例、圖表說明和小貼士,而且還有多個綜合性的項目案例貫穿全書。
(1)作者背景資深:現(xiàn)就職于字節(jié)跳動,曾就職于阿里巴巴,主要從事企業(yè)智能數(shù)字化經(jīng)營管理、電商智能數(shù)字化運營等系統(tǒng)架構(gòu)設(shè)計和研發(fā)工作。
(2)作者經(jīng)驗豐富:作者在大數(shù)據(jù)、后端開發(fā)和架構(gòu)領(lǐng)域有10余年研發(fā)和管理經(jīng)驗,積累非常深厚。
(3)內(nèi)容系統(tǒng)全面:從基礎(chǔ)知識、實現(xiàn)原理、項目實戰(zhàn)、擴展應(yīng)用4個維度全面展開,是ClickHouse領(lǐng)域集大成之作。
(4)注重實用實戰(zhàn):不僅在各個知識點都輔有大量的實際案例、圖表說明和小貼士,而且還有多個綜合性的項目案例貫穿全書。
為何寫作本書
ClickHouse在2016年發(fā)布了開源版本。自開源以來,社區(qū)一直保持著很高的活躍度,開發(fā)者與用戶遍布全球各地。目前,ClickHouse是大數(shù)據(jù)實時分析領(lǐng)域的主流選擇之一。ClickHouse的目標是向人們提供世界上快的分析型數(shù)據(jù)庫。在各種OLAP查詢引擎評測中,ClickHouse的查詢性能橫掃各大OLAP數(shù)據(jù)庫引擎,尤其是Ad Hoc即席查詢性能,一直遙遙領(lǐng)先。因此,ClickHouse被廣泛應(yīng)用于即席查詢業(yè)務(wù)場景中。
在學習和使用ClickHouse的過程中,我發(fā)現(xiàn)我越來越喜歡ClickHouse,它的設(shè)計思想非常優(yōu)秀,代碼和架構(gòu)都值得深入研究。ClickHouse團隊精益求精的精神更值得我們每個人學習。雖然要快速迭代ClickHouse,但是ClickHouse團隊依然不會放低要求,比如為了使用1個算法,會至少嘗試10個算法,而且在選擇了某個算法后,后續(xù)還會繼續(xù)嘗試其他更多算法,以便下次迭代時使用。正是由于這種精益求精、追求極致的態(tài)度,才有了ClickHouse的極致性能。感謝ClickHouse團隊!
本書可以說是我對ClickHouse項目實踐和學習思考過程的粗淺總結(jié)。我希望把這些學習經(jīng)驗和總結(jié),分享給更多需要使用ClickHouse來解決實際業(yè)務(wù)問題的朋友們。同時,通過寫作,我加深了對 ClickHouse功能特性和架構(gòu)實現(xiàn)原理的理解,也深刻體會到了學無止境的含義。寫書的過程也是我系統(tǒng)學習與思考ClickHouse的過程,如果這本書能夠?qū)δ阌兴鶐椭蛘邌l(fā),我將不勝欣慰。
本書主要特點
本書圖文并茂、由淺入深地介紹了ClickHouse的前世今生、業(yè)界使用生態(tài)、基礎(chǔ)知識和實現(xiàn)原理的諸多細節(jié),以及ClickHouse在企業(yè)級大數(shù)據(jù)分析業(yè)務(wù)中的項目實戰(zhàn)。本書非常注重實用性,給出了大量的操作實例和項目實戰(zhàn)案例。
通過閱讀這本書,你將理解ClickHouse是如何運行的,同時,你將掌握如何在實際業(yè)務(wù)項目中使用ClickHouse解決大數(shù)據(jù)實時分析問題。閱讀本書,你將體驗一場充實、驚奇的企業(yè)級大數(shù)據(jù)分析引擎設(shè)計與開發(fā)實戰(zhàn)之旅。趕快開啟旅程吧!
本書讀者對象
本書是一本從入門到實戰(zhàn)再到進階,全方位介紹ClickHouse開發(fā)的專業(yè)技術(shù)書,適合的讀者對象主要為:
計算機、大數(shù)據(jù)、人工智能等相關(guān)專業(yè)的師生;
對企業(yè)數(shù)字化、大數(shù)據(jù)OLAP分析引擎、數(shù)據(jù)庫等領(lǐng)域感興趣的初學者;
大數(shù)據(jù)從業(yè)者、BI工程師、數(shù)據(jù)分析師、程序員等。
如何閱讀本書
本書共10章。我希望通過簡練清晰的表述和豐富實用的實例說明,細致全面地講清楚ClickHouse的基礎(chǔ)知識和豐富的功能特性,以及如何使用ClickHouse進行實際業(yè)務(wù)項目的開發(fā)實戰(zhàn)。通過本書,你將學會如何在幾分鐘內(nèi)安裝好ClickHouse環(huán)境并開始使用。然后,你將學習如何使用ClickHouse的更多功能,如基本數(shù)據(jù)類型、函數(shù)、SQL語法、稀疏索引、不同的表引擎、數(shù)據(jù)副本與分片、分布式庫表管理查詢和集群運維監(jiān)控等。
本書整體上是按照由基礎(chǔ)知識到實現(xiàn)原理再到項目實戰(zhàn)的寫作思路,循序漸進地鋪展開的。如果你對ClickHouse已經(jīng)有一定了解,需要進行實際的項目實踐,可以直接閱讀第7~ 10章。如果你對ClickHouse還不是很了解,那么建議你按照本書的章節(jié)順序閱讀。
各章的主要內(nèi)容如下。
第1章帶領(lǐng)讀者快速進入ClickHouse的世界,讓讀者全面了解ClickHouse的前世今生和核心特性。主要內(nèi)容包括ClickHouse是什么,具有哪些特性,適合哪些應(yīng)用場景等。通過該章,你將掌握ClickHouse 的核心特性,了解列存儲、數(shù)據(jù)壓縮、稀疏索引等存儲層設(shè)計原理,以及MPP 架構(gòu)、向量化查詢執(zhí)行引擎、動態(tài)代碼生成等計算層的主要設(shè)計思想與原理。
第2章將走進 ClickHouse世界,進行具體操作實踐,包括安裝、部署、系統(tǒng)配置、客戶端連接、ClickHouse基礎(chǔ)命令行操作等。
第3章介紹ClickHouse基礎(chǔ)數(shù)據(jù)類型,包括數(shù)值類型、字符串類型和時間類型等基本內(nèi)容,以及這些基礎(chǔ)數(shù)據(jù)類型的常用函數(shù)操作。
第4章介紹 ClickHouse 高級數(shù)據(jù)類型,主要包括數(shù)組、元組和嵌套等復(fù)合數(shù)據(jù)類型。另外,還介紹了如何使用聚合函數(shù)類型動態(tài)自定義類型,比如說 Bitmap 類型等。
第5章介紹 ClickHouse 函數(shù),主要包括算術(shù)函數(shù)、數(shù)組函數(shù)、字符串函數(shù)、條件函數(shù)、時間函數(shù)、數(shù)學函數(shù)、聚合函數(shù)、窗口函數(shù)、空值函數(shù)和常用算子等。
第6章介紹 ClickHouse SQL基礎(chǔ)和查詢配置等相關(guān)內(nèi)容,主要包括使用 SQL 來創(chuàng)建數(shù)據(jù)庫、表、視圖,新增數(shù)據(jù)庫用戶賬戶、角色等,并進行庫表權(quán)限管理;同時,介紹了如何向 ClickHouse 表中插入數(shù)據(jù),并對表中的數(shù)據(jù)進行查詢,以及各種SQL查詢子句的用法;后,介紹了如何通過EXPLAIN語句查看SQL執(zhí)行計劃以及執(zhí)行流程。
第7章介紹如何使用 Spring Boot 來連接 ClickHouse服務(wù)器,一步步實現(xiàn)前后端的開發(fā)和集成測試的全過程。
第8章介紹如何使用 ClickHouse的 Bitmap 高級數(shù)據(jù)類型來實現(xiàn)超大規(guī)模數(shù)據(jù)場景(千億、萬億級)用戶畫像標簽圈人和人群畫像洞察。主要內(nèi)容包括DMP的基本概念、事實、維度、指標與標簽的基本知識,如何使用 ClickHouse Bitmap實現(xiàn)支持任意維度標簽組合的人群圈選,以及具體實現(xiàn)原理和圈選洞察SQL實例。
第9章以清晰、詳細的步驟展示如何創(chuàng)建具有多個節(jié)點的 ClickHouse 集群;同時,介紹如何在 ClickHouse 集群上創(chuàng)建分布式數(shù)據(jù)庫、分布式表和本地表,以及數(shù)據(jù)的讀寫操作方法和原理;后,重點講解ClickHouse集群分片與副本的工作原理及分布式查詢等內(nèi)容。
第10章介紹如何從0到1使用Docker安裝和配置Grafana、clickhouse-exporter與Prometheus,并搭建一個ClickHouse集群監(jiān)控平臺;同時,還介紹了如何自定義指標面板以及集群常用監(jiān)控指標等實用內(nèi)容。
勘誤
雖然在本書寫作過程中我盡力追求簡潔正確、清晰流暢地表達內(nèi)容,但限于自身水平,可能仍有錯誤與疏漏之處,還望各位讀者不吝指正。你可以在https://github.com/ClickHouse-InAction/book_issues/issues提Issue,我將在線上為你提供解答。
關(guān)于本書的任何問題、意見或者建議,你都可以通過郵件 universsky@163.com 與我交流。
致謝
在本書的寫作和出版過程中,我得到了很多人的幫助和陪伴。
首先感謝我的妻子和兩個可愛的孩子。正是有了你們的陪伴,我的工作和生活才更加有意義。我還要感謝我的父母。雖然你們可能不知道我寫的是什么,但是正是有了你們的辛勤養(yǎng)育,我才能長成今天的我。
我衷心地感謝本書的編輯楊福川老師和李藝老師。在本書的寫作過程中,你們耐心細致地對稿件進行了詳盡、細致的審閱和批注,提出了很多寶貴的修改建議,也給予了我極大的鼓勵,才讓我終完成了這本書。同時,我還要感謝本書出版過程中所有付出辛勤勞動的機械工業(yè)出版社的工作人員。
在此,我還要特別感謝朱金清、劉兵兵、肖玉哲、張小俠、劉杰、羅光、郭宇、梁瑩瑩、彭家學等親愛的同事們和朋友們(還有很多,在此就不一一列出了),非常感謝你們能夠抽出寶貴時間審閱本書,同時給出了本書內(nèi)容的勘誤,傾情為本書寫了推薦語。能與你們成為同事和朋友,是我莫大的榮幸。
感謝在工作學習旅程中認識的所有師長、前輩、朋友和同事,能夠認識你們并與你們一起學習、共事,是我的榮幸。
快樂生活,快樂學習,快樂分享,快樂實踐,知行合一。
后,祝大家閱讀愉快!
陳光劍
2023年4月于杭州
目 錄
贊 譽
前 言
第1章 全面了解ClickHouse 1
1.1 ClickHouse概述 1
1.2 ClickHouse特性 6
1.2.1 深度列存儲 7
1.2.2 向量化查詢執(zhí)行引擎 12
1.2.3 數(shù)據(jù)壓縮 18
1.2.4 使用磁盤 19
1.2.5 支持SQL 19
1.2.6 實時數(shù)據(jù)更新 20
1.2.7 稀疏索引 20
1.2.8 運行時代碼生成 21
1.2.9 支持近似計算 22
1.2.10 數(shù)據(jù)TTL 22
1.2.11 高吞吐寫入能力 22
1.2.12 多核心并行計算 22
1.2.13 多服務(wù)器分布式計算 22
1.2.14 分布式 MPP 計算架構(gòu) 23
1.2.15 分片和副本 26
1.2.16 完整的DBMS能力 26
1.2.17 自適應(yīng)連接算法 28
1.2.18 數(shù)據(jù)復(fù)制和數(shù)據(jù)完整性 28
1.2.19 提供復(fù)合數(shù)據(jù)類型和豐富的
函數(shù)庫 28
1.3 ClickHouse應(yīng)用場景 28
1.3.1 典型應(yīng)用場景 28
1.3.2 通用解決方案 29
1.4 ClickHouse技術(shù)生態(tài) 29
1.4.1 ClickHouse用戶都有哪些 29
1.4.2 ClickHouse的優(yōu)點 36
1.4.3 ClickHouse的缺點 37
1.4.4 ClickHouse未來展望 37
1.5 本章小結(jié) 37
第2章 ClickHouse 快速入門 38
2.1 安裝與運行ClickHouse 38
2.1.1 在macOS系統(tǒng)中安裝
ClickHouse 39
2.1.2 在Linux系統(tǒng)中安裝
ClickHouse 40
2.1.3 在Windows系統(tǒng)中使用
Docker安裝ClickHouse 42
2.2 ClickHouse常用命令行 49
2.2.1 ClickHouse命令行清單 49
2.2.2 實用命令行工具 49
2.3 本章小結(jié) 55
第3章 ClickHouse基礎(chǔ)數(shù)據(jù)類型 56
3.1 基礎(chǔ)數(shù)據(jù)類型概述 57
3.2 數(shù)值類型 62
3.3 字符串類型 67
3.4 時間類型 70
3.5 本章小結(jié) 75
第4章 ClickHouse高級數(shù)據(jù)類型 76
4.1 數(shù)組類型 76
4.1.1 數(shù)組類型定義 76
4.1.2 創(chuàng)建數(shù)組 77
4.1.3 數(shù)組基礎(chǔ)操作 78
4.2 元組類型 86
4.2.1 元組定義 86
4.2.2 創(chuàng)建元組 87
4.2.3 使用元組 87
4.3 嵌套數(shù)據(jù)類型 89
4.3.1 嵌套類型定義 89
4.3.2 創(chuàng)建嵌套類型 90
4.3.3 嵌套類型的使用 90
4.4 Map類型 91
4.4.1 Map類型定義 91
4.4.2 創(chuàng)建Map類型 91
4.4.3 Map常用操作 92
4.5 Nullable類型 95
4.6 聚合函數(shù)類型 96
4.6.1 聚合函數(shù)類型定義 96
4.6.2 使用-State函數(shù)聚合物化
視圖指標 97
4.6.3 使用-Merge函數(shù)讀取聚合
結(jié)果值 99
4.7 Bitmap類型 100
4.7.1 Bitmap簡介 100
4.7.2 創(chuàng)建Bitmap類型 101
4.7.3 Bitmap常用操作函數(shù) 103
4.8 本章小結(jié) 112
第5章 ClickHouse函數(shù) 113
5.1 概述 113
5.1.1 ClickHouse函數(shù)簡介 113
5.1.2 ClickHouse函數(shù)分類 114
5.1.3 表級別函數(shù) 116
5.1.4 聚合函數(shù)算子 118
5.2 算術(shù)函數(shù) 118
5.2.1 加法函數(shù) 119
5.2.2 減法函數(shù) 119
5.2.3 乘法函數(shù) 120
5.2.4 浮點除法函數(shù) 120
5.2.5 整數(shù)除法函數(shù) 121
5.2.6 帶0整數(shù)除法函數(shù) 121
5.2.7 取余函數(shù) 121
5.2.8 帶0取余函數(shù) 122
5.2.9 負數(shù)函數(shù) 122
5.2.10 值函數(shù) 123
5.2.11 公約數(shù)函數(shù) 123
5.2.12 小公倍數(shù)函數(shù) 123
5.2.13 數(shù)函數(shù) 124
5.2.14 小數(shù)函數(shù) 124
5.3 數(shù)組函數(shù) 124
5.3.1 判斷空數(shù)組函數(shù) 124
5.3.2 判斷非空數(shù)組函數(shù) 125
5.3.3 數(shù)組長度函數(shù) 125
5.3.4 根據(jù)范圍構(gòu)造數(shù)組函數(shù) 126
5.3.5 根據(jù)元素字面量構(gòu)造數(shù)組 126
5.3.6 拼接數(shù)組函數(shù) 126
5.3.7 根據(jù)下標獲取元素函數(shù) 127
5.3.8 判斷是否包含元素函數(shù) 127
5.3.9 判斷是不是子數(shù)組函數(shù) 128
5.3.10 判斷兩個數(shù)組是否有交集
函數(shù) 128
5.3.11 返回元素下標函數(shù) 129
5.3.12 數(shù)組切片函數(shù) 129
5.3.13 數(shù)組升序排序函數(shù) 129
5.3.14 數(shù)組降序排序函數(shù) 130
5.3.15 數(shù)組自定義排序函數(shù) 130
5.3.16 數(shù)組自定義逆序排序
函數(shù) 130
5.3.17 計算數(shù)組不重復(fù)元素個數(shù)
函數(shù) 131
5.3.18 數(shù)組元素去重函數(shù) 131
5.3.19 數(shù)組交集函數(shù) 131
5.3.20 數(shù)組歸并函數(shù) 131
5.3.21 數(shù)組逆序函數(shù) 132
5.3.22 數(shù)組拍平函數(shù) 132
5.3.23 數(shù)組壓縮函數(shù) 132
5.3.24 數(shù)組元素映射函數(shù) 133
5.3.25 數(shù)組過濾函數(shù) 133
5.3.26 求數(shù)組小元素函數(shù) 134
5.3.27 求數(shù)組元素函數(shù) 134
5.3.28 數(shù)組元素求和函數(shù) 135
5.3.29 數(shù)組元素平均值函數(shù) 135
5.3.30 數(shù)組元素相乘函數(shù) 136
5.3.31 數(shù)組元素展開函數(shù) 136
5.4 字符串函數(shù) 136
5.4.1 字符串判空函數(shù) 137
5.4.2 字符串非空判斷函數(shù) 137
5.4.3 字符串字節(jié)長度函數(shù) 137
5.4.4 左補齊字符串函數(shù) 138
5.4.5 右補齊字符串函數(shù) 138
5.4.6 字符串轉(zhuǎn)小寫函數(shù) 138
5.4.7 字符串轉(zhuǎn)大寫函數(shù) 139
5.4.8 重復(fù)字符串函數(shù) 139
5.4.9 拼接字符串函數(shù) 139