Calcite數(shù)據(jù)管理實戰(zhàn)
定 價:89.9 元
- 作者:劉鈞文,悟初境,孫瀟俊
- 出版時間:2022/4/1
- ISBN:9787115577733
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.138
- 頁碼:232
- 紙張:
- 版次:01
- 開本:16開
Calcite 是一款開源的動態(tài)數(shù)據(jù)管理框架,其目標是一種方案適應(yīng)所有需求場景,能為不同計算平臺和數(shù)據(jù)源提供統(tǒng)一的查詢引擎,它對于沒有高并發(fā)、低延時的多數(shù)據(jù)源間的數(shù)據(jù)管理有著天然的優(yōu)勢,是解決多數(shù)據(jù)源統(tǒng)一管理問題的利器。
本書圍繞Calcite,結(jié)合其數(shù)據(jù)庫基礎(chǔ)知識、核心理論以及相關(guān)的項目實踐情況,從SQL 的解析、校驗、優(yōu)化、執(zhí)行等流程,對Calcite 組件進行介紹。同時本書為部分章節(jié)配置對應(yīng)的代碼和實例,幫助讀者加深理解。
本書內(nèi)容由理論到實踐,將源碼解析與實際案例相結(jié)合,可以作為Calcite 新手的入門圖書以及快速上手的參考書,也可以作為大數(shù)據(jù)開發(fā)人員和從業(yè)人員的學習用書,還可以作為相關(guān)培訓機構(gòu)以及高等院校的教學用書。
(1)詳解Calcite解決多源異構(gòu)數(shù)據(jù)管理難題的入門指南。
(2)從歷史背景,到基礎(chǔ)理論,帶領(lǐng)讀者了解Calcite如何產(chǎn)生并應(yīng)用到多個主流開源軟件。
(3)從服務(wù)層,到優(yōu)化層,分層詳解Calcite各個模塊,源碼解析與實際案例相結(jié)合,幫助讀者從實踐中學會內(nèi)部實現(xiàn)過程。
(4)深入分析Calcite在開源項目Hive、Kylin、Flink中的使用方法。
(5)提供可下載的代碼倉庫文件,手把手幫助讀者解決數(shù)據(jù)源統(tǒng)一管理難題。
(6)數(shù)據(jù)庫領(lǐng)域6位學者、實踐者姚延棟、王飛鵬、張亮、黃向東、林春、馮若航推薦!
劉鈞文
哈爾濱工業(yè)大學碩士,京東科技算法工程師,中國計算機學會(CCF)會員。負責京東時空數(shù)據(jù)引擎的開發(fā)、時空數(shù)據(jù)產(chǎn)品的研發(fā)工作。研究方向:時空數(shù)據(jù)的管理、時空數(shù)據(jù)庫、數(shù)據(jù)庫優(yōu)化器的原理及其實現(xiàn)、分布式計算以及城市計算。
悟初境
京東科技軟件開發(fā)工程師。負責京東時空數(shù)據(jù)引擎的開發(fā),多項時空數(shù)據(jù)產(chǎn)品的主要參與者,并在多個項目中負責架構(gòu)設(shè)計的工作。研究方向:數(shù)據(jù)庫原理和實現(xiàn),大數(shù)據(jù)與架構(gòu)設(shè)計。
孫瀟俊
北京工業(yè)大學軟件工程碩士,曾任京東科技大數(shù)據(jù)開發(fā)工程師。負責京東時空數(shù)據(jù)引擎的開發(fā)。研究方向:數(shù)據(jù)庫優(yōu)化器的原理及其實現(xiàn)。
第 1 章 Calcite 的前世今生 1
1.1 數(shù)據(jù)管理系統(tǒng)的發(fā)展歷史 1
1.2 當前數(shù)據(jù)管理系統(tǒng)的困境 3
1.3 Calcite 簡史 3
1.3.1 發(fā)源時期 3
1.3.2 Apache Calcite 時期 4
1.3.3 項目分拆階段 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è)計思想 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 語法解析 18
2.5.3 語法樹的校驗 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 下載、編譯和運行 21
3.2 SQLLine 操作方法 23
3.2.1 SQLLine 的基本操作 23
3.2.2 SQLLine 的進階操作 26
3.2.3 其他操作 31
3.3 集成CSV 文件開發(fā)實例 32
3.3.1 元數(shù)據(jù)定義 32
3.3.2 優(yōu)化規(guī)則管理 36
3.4 本章小結(jié) 38
第4 章 數(shù)據(jù)庫查詢優(yōu)化技術(shù) 39
4.1 什么是數(shù)據(jù)庫查詢優(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 邏輯計劃優(yōu)化 42
4.3.1 關(guān)系代數(shù) 43
4.3.2 關(guān)系代數(shù)優(yōu)化規(guī)則 45
4.4 物理計劃優(yōu)化 47
4.4.1 代價模型 48
4.4.2 邏輯代價 49
4.4.3 物理執(zhí)行代價 49
4.4.4 算法代價 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 啟動服務(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ū)動 66
5.4.1 Java 驅(qū)動 66
5.4.2 Python 驅(qū)動 68
5.5 命令行工具 69
5.5.1 使用SQLLine 70
5.5.2 自定義命令行交互方式 71
5.6 本章小結(jié) 71
第6 章 解析層 72
6.1 語法解析過程 72
6.2 Calcite 中的解析體系 73
6.2.1 抽象語法樹的概念 73
6.2.2 SqlNode 體系 74
6.3 JavaCC 78
6.3.1 JavaCC 簡介 78
6.3.2 JavaCC 簡單示例 78
6.3.3 Calcite 中JavaCC 的使用方法 84
6.4 Calcite 整合Antlr 方法 94
6.4.1 Antlr 簡介 94
6.4.2 上手Antlr 95
6.4.3 Calcite 集成Antlr 96
6.5 Antlr 對比JavaCC 98
6.5.1 輸入輸出 98
6.5.2 易用性 98
6.5.3 效率 99
6.5.4 在Calcite 中如何選擇 99
6.6 本章小結(jié) 99
第7 章 校驗層 100
7.1 何謂校驗 100
7.2 元數(shù)據(jù)定義 100
7.2.1 Calcite 中元數(shù)據(jù)的基本概念 101
7.2.2 數(shù)據(jù)模型定義 103
7.2.3 自定義表元數(shù)據(jù)實現(xiàn) 107
7.2.4 解析數(shù)據(jù)模型 113
7.3 校驗流程 114
7.3.1 Calcite 校驗過程中的核心類 114
7.3.2 校驗流程 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)建算子樹 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 模型的對比 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ù)擴展 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 簡介 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 流式查詢簡介 190
12.2 流式查詢初體驗 191
12.3 流式聚合查詢 195
12.4 本章小結(jié) 198
第 13 章 視圖 199
13.1 普通視圖 199
13.2 物化視圖 200
13.2.1 Join 重寫 202
13.2.2 聯(lián)合重寫 203
13.3 格 204
13.4 本章小結(jié) 206
第 14 章 Calcite 在開源項目中的使用 207
14.1 Hive 207
14.1.1 Hive 簡介 207
14.1.2 Hive 架構(gòu)與執(zhí)行流程 208
14.1.3 Hive 集成Calcite 209
14.2 Kylin 221
14.2.1 Kylin 簡介 221
14.2.2 Kylin 架構(gòu)及執(zhí)行流程 222
14.2.3 Kylin 集成Calcite 222
14.3 Flink 227
14.3.1 Flink 簡介 227
14.3.2 Flink 架構(gòu)與執(zhí)行流程 228
14.3.3 Flink 集成Calcite 229
14.4 本章小結(jié) 232