本書詳細(xì)介紹了開源的分布式SQL查詢引擎Trino涉及的方方面面的知識(shí)。本書共三部分,第一部分介紹Trino的發(fā)展歷史、主要功能以及如何安裝和使用它,第二部分介紹Trino的內(nèi)部架構(gòu)、部署、連接器和所支持的SQL語(yǔ)句的使用等,第三部分介紹在生產(chǎn)環(huán)境中部署Trino的知識(shí),以及一些真實(shí)世界的部署案例。通過(guò)學(xué)習(xí)本書,你將了解Trino在解決海量數(shù)據(jù)分析和查詢問題方面的優(yōu)越性,并學(xué)會(huì)在現(xiàn)實(shí)場(chǎng)景中使用它來(lái)高效地解決需要在短時(shí)間內(nèi)返回結(jié)果的大數(shù)據(jù)查詢問題。
使用Trino高性能分布式SQL查詢引擎可以對(duì)不同的數(shù)據(jù)源進(jìn)行快速交互式分析。在本書中,你將學(xué)習(xí)如何在不遷移數(shù)據(jù)的情況下對(duì)數(shù)據(jù)進(jìn)行分析。需要分析的數(shù)據(jù),可以存在于使用Hive的傳統(tǒng)數(shù)據(jù)湖中,或者存在于使用Iceberg、Delta Lake等格式的湖倉(cāng)一體系統(tǒng)中,或者存在于Cassandra、Kafka或SingleStore等異構(gòu)系統(tǒng)中,還可以存在于PostgreSQL或Oracle等關(guān)系型數(shù)據(jù)庫(kù)中。
數(shù)據(jù)分析師、軟件工程師和產(chǎn)品工程師可以學(xué)習(xí)如何管理、使用Trino,甚至使用Trino進(jìn)行開發(fā),并使其成為自己的數(shù)據(jù)平臺(tái)的關(guān)鍵部分。本書將向你展示如何使用一個(gè)Trino查詢合并來(lái)自多個(gè)來(lái)源的數(shù)據(jù),以便在整個(gè)組織中進(jìn)行數(shù)據(jù)分析。
通過(guò)閱讀本書,你將:
? 探索Trino的使用場(chǎng)景,了解與Trino相關(guān)的各類工具。
? 學(xué)習(xí)Trino的內(nèi)部工作原理,包括如何連接和查詢數(shù)據(jù)源,以及Trino支持的SQL語(yǔ)句、運(yùn)算符、函數(shù)等。
? 了解Trino的安全機(jī)制、大規(guī)模部署能力、監(jiān)控工作負(fù)載、調(diào)優(yōu)查詢,并連接更多應(yīng)用程序。
? 了解其他組織如何成功應(yīng)用Trino。
目錄
序1
前言3
第一部分 Trino入門
第1章 Trino介紹9
1.1 大數(shù)據(jù)帶來(lái)的問題9
1.2 Trino來(lái)救場(chǎng)10
1.3 Trino使用場(chǎng)景13
1.4 Trino資源17
1.5 Trino簡(jiǎn)史21
1.6 小結(jié)22
第2章 安裝和配置Trino23
2.1 使用Docker容器探索Trino23
2.2 使用歸檔文件安裝Trino24
2.3 添加數(shù)據(jù)源27
2.4 運(yùn)行Trino28
2.5 小結(jié)28
第3章 使用Trino29
3.1 Trino CLI29
3.2 Trino JDBC驅(qū)動(dòng)34
3.3 Trino與ODBC38
3.4 客戶端庫(kù)38
3.5 Trino Web UI39
3.6 使用Trino執(zhí)行SQL39
3.7 小結(jié)43
第二部分 深入理解Trino
第4章 Trino架構(gòu)47
4.1 集群中的協(xié)調(diào)器和工作節(jié)點(diǎn)47
4.2基于連接器的架構(gòu)50
4.3 catalog、schema和表52
4.4 查詢執(zhí)行模型52
4.5 查詢計(jì)劃55
4.6 優(yōu)化規(guī)則59
4.7 實(shí)現(xiàn)規(guī)則61
4.8 基于代價(jià)的優(yōu)化器63
4.9 使用表統(tǒng)計(jì)信息70
4.10 小結(jié)72
第5章 生產(chǎn)環(huán)境部署74
5.1 配置細(xì)節(jié)74
5.2 服務(wù)端配置74
5.3 日志75
5.4 節(jié)點(diǎn)配置76
5.5 JVM配置77
5.6 啟動(dòng)器77
5.7 集群安裝79
5.8 使用RPM安裝80
5.9在云上安裝82
5.10 用Helm chart部署Kubernetes83
5.11 考慮集群規(guī)模84
5.12 小結(jié)85
第6章 連接器86
6.1 配置87
6.2 RDBMS連接器示例:PostgreSQL87
6.3 TPC-H連接器和TPC-DS連接器93
6.4 用于分布式存儲(chǔ)數(shù)據(jù)源的Hive連接器94
6.5 現(xiàn)代分布式存儲(chǔ)管理和分析103
6.6 非關(guān)系型數(shù)據(jù)源105
6.7 Trino JMX連接器105
6.8 black hole連接器107
6.9內(nèi)存連接器107
6.10 其他連接器108
6.11 小結(jié)108
第7章 高級(jí)連接器示例109
7.1 用Phoenix連接HBase109
7.2 鍵值存儲(chǔ)連接器示例:Accumulo110
7.3 Apache Cassandra連接器117
7.4 流系統(tǒng)連接器示例:Kafka117
7.5 文檔存儲(chǔ)連接器示例:Elasticsearch119
7.6 Trino中的聯(lián)邦查詢122
7.7 ETL和聯(lián)邦查詢128
7.8 小結(jié)128
第8章 在Trino中使用SQL129
8.1 Trino語(yǔ)句130
8.2 Trino系統(tǒng)表132
8.3 catalog134
8.4 schema135
8.5 information schema136
8.6 表137
8.7 視圖143
8.8 會(huì)話信息和配置144
8.9 數(shù)據(jù)類型145
8.10 SELECT語(yǔ)句基礎(chǔ)153
8.11 WHERE子句154
8.12 GROUP BY和HAVING子句155
8.13 ORDER BY子句和LIMIT子句157
8.14 JOIN語(yǔ)句157
8.15 UNION、INTERSECT和EXCEPT子句159
8.16 分組操作160
8.17 WITH子句161
8.18 子查詢163
8.19 從表中刪除數(shù)據(jù)165
8.20 小結(jié)165
第9章 高級(jí)SQL特性166
9.1 函數(shù)和運(yùn)算符介紹166
9.2 標(biāo)量函數(shù)和運(yùn)算符167
9.3 布爾運(yùn)算符167
9.4邏輯運(yùn)算符169
9.5 用BETWEEN語(yǔ)句選擇范圍170
9.6 用IS (NOT) NULL檢測(cè)值的存在170
9.7 數(shù)學(xué)函數(shù)和運(yùn)算符170
9.8 三角函數(shù)171
9.9 常數(shù)和隨機(jī)函數(shù)172
9.10 字符串函數(shù)和運(yùn)算符172
9.11 字符串和映射174
9.12 Unicode174
9.13 正則表達(dá)式176
9.14 解嵌套復(fù)雜數(shù)據(jù)類型178
9.15 JSON函數(shù)180
9.16 日期和時(shí)間函數(shù)及運(yùn)算符180
9.17 直方圖183
9.18 聚合函數(shù)184
9.19 窗函數(shù)187
9.20 lambda表達(dá)式189
9.21 地理空間函數(shù)189
9.22 預(yù)處理語(yǔ)句190
9.23 小結(jié)192
第三部分 Trino的實(shí)際應(yīng)用
第10章 安全195
10.1 認(rèn)證196
10.2 授權(quán)199
10.3 加密204
10.4 CA與自簽名證書212
10.5 證書認(rèn)證213
10.6 Kerberos216
10.7 數(shù)據(jù)源訪問和安全配置217
10.8 使用Hive連接器進(jìn)行Kerberos認(rèn)證219
10.9 集群分離220
10.10 小結(jié)220
第11章 將Trino與其他工具集成221
11.1 使用Apache Superset進(jìn)行查詢、可視化和更多操作221
11.2 使用RubiX提高性能222
11.3 使用Apache Airflow的工作流222
11.4 嵌入式Trino示例:Amazon Athena223
11.5 企業(yè)版:Starburst Enterprise和Starburst Galaxy226
11.6 其他集成示例227
11.7 自定義集成228
11.8 小結(jié)228
第12章 生產(chǎn)環(huán)境中的Trino229
12.1 使用Trino Web UI進(jìn)行監(jiān)控229
12.2 Trino SQL查詢調(diào)優(yōu)240
12.3 內(nèi)存管理243
12.4 任務(wù)并發(fā)性246
12.5 工作節(jié)點(diǎn)調(diào)度246
12.6 網(wǎng)絡(luò)數(shù)據(jù)交換247
12.7 JVM調(diào)優(yōu)247
12.8 資源組249
12.9 小結(jié)253
第13章 真實(shí)世界案例254
13.1 部署和運(yùn)行時(shí)平臺(tái)254
13.2 集群規(guī)模255
13.3 Hadoop/Hive遷移的使用場(chǎng)景257
13.4 其他數(shù)據(jù)源257
13.5 用戶和流量258
13.6 小結(jié)258
總結(jié)259