《Calcite數據管理實戰》是2022年人民郵電出版社出版的圖書,作者是劉鈞文、悟初境、孫瀟俊。
基本介紹
- 中文名:Calcite數據管理實戰
- 作者:劉鈞文、悟初境、孫瀟俊
- 出版時間:2022年4月1日
- 出版社:人民郵電出版社
- 頁數:232 頁
- ISBN:9787115577733
- 開本:16 開
- 裝幀:平裝
內容簡介,圖書目錄,作者簡介,
內容簡介
Calcite 是一款開源的動態數據管理框架,其目標是一種方案適應所有需求場景,能為不同計算平台和數據源提供統一的查詢引擎,它對於沒有高並發、低延時的多數據源間的數據管理有著天然的優勢,是解決多數據源統一管理問題的利器。
本書圍繞Calcite,結合其資料庫基礎知識、核心理論以及相關的項目實踐情況,從SQL 的解析、校驗、最佳化、執行等流程,對Calcite 組件進行介紹。同時本書為部分章節配置對應的代碼和實例,幫助讀者加深理解。
本書內容由理論到實踐,將源碼解析與實際案例相結合,可以作為Calcite 新手的入門圖書以及快速上手的參考書,也可以作為大數據開發人員和從業人員的學習用書,還可以作為相關培訓機構以及高等院校的教學用書。
圖書目錄
第 1 章 Calcite 的前世今生 1
1.1 數據管理系統的發展歷史 1
1.2 當前數據管理系統的困境 3
1.3 Calcite 簡史 3
1.3.1 發源時期 3
1.3.2 Apache Calcite 時期 4
1.3.3 項目分拆階段 5
1.4 Calcite 生態系統 5
1.5 為什麼使用Calcite 7
1.6 本章小結 7
第 2 章 Calcite 架構概述8
2.1 設計思想 8
2.1.1 聚焦查詢最佳化 8
2.1.2 數據聯邦 9
2.1.3 流式系統 10
2.2 整體架構 11
2.3 使用方式 12
2.4 核心特性 14
2.4.1 靈活可插拔 14
2.4.2 支持流式SQL 14
2.4.3 支持物化視圖15
2.4.4 支持多種數據模型 16
2.5 執行流程 17
2.5.1 服務的接收 17
2.5.2 SQL 語法解析 18
2.5.3 語法樹的校驗 19
2.5.4 關係代數最佳化 19
2.5.5 執行並獲取數據 20
2.6 本章小結 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 檔案開發實例 32
3.3.1 元數據定義 32
3.3.2 最佳化規則管理 36
3.4 本章小結 38
第4 章 資料庫查詢最佳化技術 39
4.1 什麼是資料庫查詢最佳化技術 39
4.2 查詢最佳化器的內外結構 39
4.2.1 查詢最佳化器的內部結構 40
4.2.2 最佳化器的外部關係 41
4.3 邏輯計畫最佳化 42
4.3.1 關係代數 43
4.3.2 關係代數最佳化規則 45
4.4 物理計畫最佳化 47
4.4.1 代價模型 48
4.4.2 邏輯代價 49
4.4.3 物理執行代價 49
4.4.4 算法代價 51
4.5 最佳化模型 51
4.5.1 啟發式模型 52
4.5.2 火山模型 52
4.5.3 向量化模型 53
4.6 本章小結 54
第5 章 服務層 55
5.1 Avatica 架構介紹 55
5.2 Avatica 執行結構和流程 57
5.2.1 Service 接口 57
5.2.2 Meta 接口 60
5.2.3 啟動服務 62
5.3 Avatica 鑒權 62
5.3.1 BASIC 63
5.3.2 DIGEST 64
5.3.3 SPNEGO 65
5.3.4 自定義鑒權 66
5.4 客戶端驅動 66
5.4.1 Java 驅動 66
5.4.2 Python 驅動 68
5.5 命令行工具 69
5.5.1 使用SQLLine 70
5.5.2 自定義命令行互動方式 71
5.6 本章小結 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 本章小結 99
第7 章 校驗層 100
7.1 何謂校驗 100
7.2 元數據定義 100
7.2.1 Calcite 中元數據的基本概念 101
7.2.2 數據模型定義 103
7.2.3 自定義表元數據實現 107
7.2.4 解析數據模型 113
7.3 校驗流程 114
7.3.1 Calcite 校驗過程中的核心類 114
7.3.2 校驗流程 116
7.4 元數據DDL 119
7.5 本章小結 121
第8 章 最佳化層 122
8.1 關係代數與火山模型 122
8.1.1 關係代數 122
8.1.2 火山模型 123
8.2 最佳化器 123
8.2.1 最佳化器介紹 124
8.2.2 RBO 模型和CBO 模型 125
8.2.3 尋找關係代數最優解 127
8.3 Calcite 最佳化器 128
8.3.1 構建運算元樹 129
8.3.2 RelNode 133
8.3.3 Calcite 最佳化模型 134
8.4 自定義最佳化規則 142
8.4.1 CSV 規則 142
8.4.2 RBO 模型與CBO 模型的對比 144
8.5 本章小結 146
第9 章 數據源接入 147
9.1 Redis 147
9.1.1 配置model.json 檔案 148
9.1.2 配置Schema 信息 149
9.1.3 定義表元數據 150
9.1.4 定義疊代器 151
9.2 PostgreSQL 153
9.2.1 構建元數據 154
9.2.2 自定義最佳化規則 155
9.2.3 整體流程 157
9.3 Janino 介紹 162
9.4 本章小結 164
第 10 章 SQL 函式擴展 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 執行流程 173
10.5 本章小結 176
第 11 章 空間數據查詢 177
11.1 OGC 簡介 177
11.2 空間數據類型 178
11.3 空間函式 185
11.3.1 創建類函式 185
11.3.2 轉換類函式 186
11.3.3 屬性查詢函式 186
11.3.4 空間判斷函式 187
11.4 使用方法 188
11.5 自定義空間函式 189
11.6 本章小結 189
第 12 章 流式處理 190
12.1 流式查詢簡介 190
12.2 流式查詢初體驗 191
12.3 流式聚合查詢 195
12.4 本章小結 198
第 13 章 視圖 199
13.1 普通視圖 199
13.2 物化視圖 200
13.2.1 Join 重寫 202
13.2.2 聯合重寫 203
13.3 格 204
13.4 本章小結 206
第 14 章 Calcite 在開源項目中的使用 207
14.1 Hive 207
14.1.1 Hive 簡介 207
14.1.2 Hive 架構與執行流程 208
14.1.3 Hive 集成Calcite 209
14.2 Kylin 221
14.2.1 Kylin 簡介 221
14.2.2 Kylin 架構及執行流程 222
14.2.3 Kylin 集成Calcite 222
14.3 Flink 227
14.3.1 Flink 簡介 227
14.3.2 Flink 架構與執行流程 228
14.3.3 Flink 集成Calcite 229
14.4 本章小結 232
作者簡介
劉鈞文
哈爾濱工業大學碩士,京東科技算法工程師,中國計算機學會(CCF)會員。負責京東時空數據引擎的開發、時空數據產品的研發工作。研究方向:時空數據的管理、時空資料庫、資料庫最佳化器的原理及其實現、分散式計算以及城市計算。
悟初境
京東科技軟體開發工程師。負責京東時空數據引擎的開發,多項時空數據產品的主要參與者,並在多個項目中負責架構設計的工作。研究方向:資料庫原理和實現,大數據與架構設計。
孫瀟俊
北京工業大學軟體工程碩士,曾任京東科技大數據開發工程師。負責京東時空數據引擎的開發。研究方向:資料庫最佳化器的原理及其實現。