Calcite數據管理實戰

劉鈞文,悟初境,孫瀟俊

  • 出版商: 人民郵電
  • 出版日期: 2022-04-01
  • 定價: $539
  • 售價: 8.0$431
  • 語言: 簡體中文
  • 頁數: 232
  • ISBN: 7115577730
  • ISBN-13: 9787115577733
  • 相關分類: 大數據 Big-data資料庫
  • 立即出貨 (庫存 < 3)

  • Calcite數據管理實戰-preview-1
  • Calcite數據管理實戰-preview-2
Calcite數據管理實戰-preview-1

買這商品的人也買了...

商品描述

Calcite 是一款開源的動態數據管理框架,其目標是一種方案適應所有需求場景,能為不同計算平臺和數據源提供統一的查詢引擎,它對於沒有高並發、低延時的多數據源間的數據管理有著天然的優勢,是解決多數據源統一管理問題的利器。

本書圍繞Calcite,結合其數據庫基礎知識、核心理論以及相關的項目實踐情況,從SQL 的解析、校驗、優化、執行等流程,對Calcite 組件進行介紹。同時本書為部分章節配置對應的代碼和實例,幫助讀者加深理解。

本書內容由理論到實踐,將源碼解析與實際案例相結合,可以作為Calcite 新手的入門圖書以及快速上手的參考書,也可以作為大數據開發人員和從業人員的學慣用書,還可以作為相關培訓機構以及高等院校的教學用書。

作者簡介

刘钧文

哈尔滨工业大学硕士,京东科技算法工程师,中国计算机学会(CCF)会员。负责京东时空数据引擎的开发、时空数据产品的研发工作。研究方向:时空数据的管理、时空数据库、数据库优化器的原理及其实现、分布式计算以及城市计算。

悟初境

京东科技软件开发工程师。负责京东时空数据引擎的开发,多项时空数据产品的主要参与者,并在多个项目中负责架构设计的工作。研究方向:数据库原理和实现,大数据与架构设计。

孙潇俊

北京工业大学软件工程硕士,曾任京东科技大数据开发工程师。负责京东时空数据引擎的开发。研究方向:数据库优化器的原理及其实现。

目錄大綱

第 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