Calcite數(shù)據(jù)管理實(shí)戰(zhàn)
定 價(jià):89.9 元
- 作者:劉鈞文,悟初境,孫瀟俊
- 出版時(shí)間:2022/4/1
- ISBN:9787115577733
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.138
- 頁(yè)碼:232
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
Calcite 是一款開(kāi)源的動(dòng)態(tài)數(shù)據(jù)管理框架,其目標(biāo)是一種方案適應(yīng)所有需求場(chǎng)景,能為不同計(jì)算平臺(tái)和數(shù)據(jù)源提供統(tǒng)一的查詢引擎,它對(duì)于沒(méi)有高并發(fā)、低延時(shí)的多數(shù)據(jù)源間的數(shù)據(jù)管理有著天然的優(yōu)勢(shì),是解決多數(shù)據(jù)源統(tǒng)一管理問(wèn)題的利器。
本書(shū)圍繞Calcite,結(jié)合其數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)、核心理論以及相關(guān)的項(xiàng)目實(shí)踐情況,從SQL 的解析、校驗(yàn)、優(yōu)化、執(zhí)行等流程,對(duì)Calcite 組件進(jìn)行介紹。同時(shí)本書(shū)為部分章節(jié)配置對(duì)應(yīng)的代碼和實(shí)例,幫助讀者加深理解。
本書(shū)內(nèi)容由理論到實(shí)踐,將源碼解析與實(shí)際案例相結(jié)合,可以作為Calcite 新手的入門(mén)圖書(shū)以及快速上手的參考書(shū),也可以作為大數(shù)據(jù)開(kāi)發(fā)人員和從業(yè)人員的學(xué)習(xí)用書(shū),還可以作為相關(guān)培訓(xùn)機(jī)構(gòu)以及高等院校的教學(xué)用書(shū)。
(1)詳解Calcite解決多源異構(gòu)數(shù)據(jù)管理難題的入門(mén)指南。
(2)從歷史背景,到基礎(chǔ)理論,帶領(lǐng)讀者了解Calcite如何產(chǎn)生并應(yīng)用到多個(gè)主流開(kāi)源軟件。
(3)從服務(wù)層,到優(yōu)化層,分層詳解Calcite各個(gè)模塊,源碼解析與實(shí)際案例相結(jié)合,幫助讀者從實(shí)踐中學(xué)會(huì)內(nèi)部實(shí)現(xiàn)過(guò)程。
(4)深入分析Calcite在開(kāi)源項(xiàng)目Hive、Kylin、Flink中的使用方法。
(5)提供可下載的代碼倉(cāng)庫(kù)文件,手把手幫助讀者解決數(shù)據(jù)源統(tǒng)一管理難題。
(6)數(shù)據(jù)庫(kù)領(lǐng)域6位學(xué)者、實(shí)踐者姚延棟、王飛鵬、張亮、黃向東、林春、馮若航推薦!
劉鈞文
哈爾濱工業(yè)大學(xué)碩士,京東科技算法工程師,中國(guó)計(jì)算機(jī)學(xué)會(huì)(CCF)會(huì)員。負(fù)責(zé)京東時(shí)空數(shù)據(jù)引擎的開(kāi)發(fā)、時(shí)空數(shù)據(jù)產(chǎn)品的研發(fā)工作。研究方向:時(shí)空數(shù)據(jù)的管理、時(shí)空數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)優(yōu)化器的原理及其實(shí)現(xiàn)、分布式計(jì)算以及城市計(jì)算。
悟初境
京東科技軟件開(kāi)發(fā)工程師。負(fù)責(zé)京東時(shí)空數(shù)據(jù)引擎的開(kāi)發(fā),多項(xiàng)時(shí)空數(shù)據(jù)產(chǎn)品的主要參與者,并在多個(gè)項(xiàng)目中負(fù)責(zé)架構(gòu)設(shè)計(jì)的工作。研究方向:數(shù)據(jù)庫(kù)原理和實(shí)現(xiàn),大數(shù)據(jù)與架構(gòu)設(shè)計(jì)。
孫瀟俊
北京工業(yè)大學(xué)軟件工程碩士,曾任京東科技大數(shù)據(jù)開(kāi)發(fā)工程師。負(fù)責(zé)京東時(shí)空數(shù)據(jù)引擎的開(kāi)發(fā)。研究方向:數(shù)據(jù)庫(kù)優(yōu)化器的原理及其實(shí)現(xiàn)。
第 1 章 Calcite 的前世今生 1
1.1 數(shù)據(jù)管理系統(tǒng)的發(fā)展歷史 1
1.2 當(dāng)前數(shù)據(jù)管理系統(tǒng)的困境 3
1.3 Calcite 簡(jiǎn)史 3
1.3.1 發(fā)源時(shí)期 3
1.3.2 Apache Calcite 時(shí)期 4
1.3.3 項(xiàng)目分拆階段 5
1.4 Calcite 生態(tài)系統(tǒng) 5
1.5 為什么使用Calcite 7
1.6 本章小結(jié) 7
第 2 章 Calcite 架構(gòu)概述8
2.1 設(shè)計(jì)思想 8
2.1.1 聚焦查詢優(yōu)化 8
2.1.2 數(shù)據(jù)聯(lián)邦 9
2.1.3 流式系統(tǒng) 10
2.2 整體架構(gòu) 11
2.3 使用方式 12
2.4 核心特性 14
2.4.1 靈活可插拔 14
2.4.2 支持流式SQL 14
2.4.3 支持物化視圖15
2.4.4 支持多種數(shù)據(jù)模型 16
2.5 執(zhí)行流程 17
2.5.1 服務(wù)的接收 17
2.5.2 SQL 語(yǔ)法解析 18
2.5.3 語(yǔ)法樹(shù)的校驗(yàn) 19
2.5.4 關(guān)系代數(shù)優(yōu)化 19
2.5.5 執(zhí)行并獲取數(shù)據(jù) 20
2.6 本章小結(jié) 20
第3 章 Calcite 快速上手 21
3.1 下載、編譯和運(yùn)行 21
3.2 SQLLine 操作方法 23
3.2.1 SQLLine 的基本操作 23
3.2.2 SQLLine 的進(jìn)階操作 26
3.2.3 其他操作 31
3.3 集成CSV 文件開(kāi)發(fā)實(shí)例 32
3.3.1 元數(shù)據(jù)定義 32
3.3.2 優(yōu)化規(guī)則管理 36
3.4 本章小結(jié) 38
第4 章 數(shù)據(jù)庫(kù)查詢優(yōu)化技術(shù) 39
4.1 什么是數(shù)據(jù)庫(kù)查詢優(yōu)化技術(shù) 39
4.2 查詢優(yōu)化器的內(nèi)外結(jié)構(gòu) 39
4.2.1 查詢優(yōu)化器的內(nèi)部結(jié)構(gòu) 40
4.2.2 優(yōu)化器的外部關(guān)系 41
4.3 邏輯計(jì)劃優(yōu)化 42
4.3.1 關(guān)系代數(shù) 43
4.3.2 關(guān)系代數(shù)優(yōu)化規(guī)則 45
4.4 物理計(jì)劃優(yōu)化 47
4.4.1 代價(jià)模型 48
4.4.2 邏輯代價(jià) 49
4.4.3 物理執(zhí)行代價(jià) 49
4.4.4 算法代價(jià) 51
4.5 優(yōu)化模型 51
4.5.1 啟發(fā)式模型 52
4.5.2 火山模型 52
4.5.3 向量化模型 53
4.6 本章小結(jié) 54
第5 章 服務(wù)層 55
5.1 Avatica 架構(gòu)介紹 55
5.2 Avatica 執(zhí)行結(jié)構(gòu)和流程 57
5.2.1 Service 接口 57
5.2.2 Meta 接口 60
5.2.3 啟動(dòng)服務(wù) 62
5.3 Avatica 鑒權(quán) 62
5.3.1 BASIC 63
5.3.2 DIGEST 64
5.3.3 SPNEGO 65
5.3.4 自定義鑒權(quán) 66
5.4 客戶端驅(qū)動(dòng) 66
5.4.1 Java 驅(qū)動(dòng) 66
5.4.2 Python 驅(qū)動(dòng) 68
5.5 命令行工具 69
5.5.1 使用SQLLine 70
5.5.2 自定義命令行交互方式 71
5.6 本章小結(jié) 71
第6 章 解析層 72
6.1 語(yǔ)法解析過(guò)程 72
6.2 Calcite 中的解析體系 73
6.2.1 抽象語(yǔ)法樹(shù)的概念 73
6.2.2 SqlNode 體系 74
6.3 JavaCC 78
6.3.1 JavaCC 簡(jiǎn)介 78
6.3.2 JavaCC 簡(jiǎn)單示例 78
6.3.3 Calcite 中JavaCC 的使用方法 84
6.4 Calcite 整合Antlr 方法 94
6.4.1 Antlr 簡(jiǎn)介 94
6.4.2 上手Antlr 95
6.4.3 Calcite 集成Antlr 96
6.5 Antlr 對(duì)比JavaCC 98
6.5.1 輸入輸出 98
6.5.2 易用性 98
6.5.3 效率 99
6.5.4 在Calcite 中如何選擇 99
6.6 本章小結(jié) 99
第7 章 校驗(yàn)層 100
7.1 何謂校驗(yàn) 100
7.2 元數(shù)據(jù)定義 100
7.2.1 Calcite 中元數(shù)據(jù)的基本概念 101
7.2.2 數(shù)據(jù)模型定義 103
7.2.3 自定義表元數(shù)據(jù)實(shí)現(xiàn) 107
7.2.4 解析數(shù)據(jù)模型 113
7.3 校驗(yàn)流程 114
7.3.1 Calcite 校驗(yàn)過(guò)程中的核心類 114
7.3.2 校驗(yàn)流程 116
7.4 元數(shù)據(jù)DDL 119
7.5 本章小結(jié) 121
第8 章 優(yōu)化層 122
8.1 關(guān)系代數(shù)與火山模型 122
8.1.1 關(guān)系代數(shù) 122
8.1.2 火山模型 123
8.2 優(yōu)化器 123
8.2.1 優(yōu)化器介紹 124
8.2.2 RBO 模型和CBO 模型 125
8.2.3 尋找關(guān)系代數(shù)最優(yōu)解 127
8.3 Calcite 優(yōu)化器 128
8.3.1 構(gòu)建算子樹(shù) 129
8.3.2 RelNode 133
8.3.3 Calcite 優(yōu)化模型 134
8.4 自定義優(yōu)化規(guī)則 142
8.4.1 CSV 規(guī)則 142
8.4.2 RBO 模型與CBO 模型的對(duì)比 144
8.5 本章小結(jié) 146
第9 章 數(shù)據(jù)源接入 147
9.1 Redis 147
9.1.1 配置model.json 文件 148
9.1.2 配置Schema 信息 149
9.1.3 定義表元數(shù)據(jù) 150
9.1.4 定義迭代器 151
9.2 PostgreSQL 153
9.2.1 構(gòu)建元數(shù)據(jù) 154
9.2.2 自定義優(yōu)化規(guī)則 155
9.2.3 整體流程 157
9.3 Janino 介紹 162
9.4 本章小結(jié) 164
第 10 章 SQL 函數(shù)擴(kuò)展 165
10.1 UDF 165
10.1.1 UDF 介紹 165
10.1.2 Calcite 中如何定義UDF 166
10.2 UDAF 168
10.2.1 UDAF 介紹 168
10.2.2 Calcite 中如何定義UDAF 169
10.3 UDTF 170
10.3.1 UDTF 介紹 170
10.3.2 Calcite 中如何定義UDTF 171
10.4 執(zhí)行流程 173
10.5 本章小結(jié) 176
第 11 章 空間數(shù)據(jù)查詢 177
11.1 OGC 簡(jiǎn)介 177
11.2 空間數(shù)據(jù)類型 178
11.3 空間函數(shù) 185
11.3.1 創(chuàng)建類函數(shù) 185
11.3.2 轉(zhuǎn)換類函數(shù) 186
11.3.3 屬性查詢函數(shù) 186
11.3.4 空間判斷函數(shù) 187
11.4 使用方法 188
11.5 自定義空間函數(shù) 189
11.6 本章小結(jié) 189
第 12 章 流式處理 190
12.1 流式查詢簡(jiǎn)介 190
12.2 流式查詢初體驗(yàn) 191
12.3 流式聚合查詢 195
12.4 本章小結(jié) 198
第 13 章 視圖 199
13.1 普通視圖 199
13.2 物化視圖 200
13.2.1 Join 重寫(xiě) 202
13.2.2 聯(lián)合重寫(xiě) 203
13.3 格 204
13.4 本章小結(jié) 206
第 14 章 Calcite 在開(kāi)源項(xiàng)目中的使用 207
14.1 Hive 207
14.1.1 Hive 簡(jiǎn)介 207
14.1.2 Hive 架構(gòu)與執(zhí)行流程 208
14.1.3 Hive 集成Calcite 209
14.2 Kylin 221
14.2.1 Kylin 簡(jiǎn)介 221
14.2.2 Kylin 架構(gòu)及執(zhí)行流程 222
14.2.3 Kylin 集成Calcite 222
14.3 Flink 227
14.3.1 Flink 簡(jiǎn)介 227
14.3.2 Flink 架構(gòu)與執(zhí)行流程 228
14.3.3 Flink 集成Calcite 229
14.4 本章小結(jié) 232