《PentahoKettle解決方案:使用PDI構建開源ETL解決方案》是2014年3月電子工業出版社出版的圖書,作者是初建軍,曹雪梅。
基本介紹
- 書名:PentahoKettle解決方案:使用PDI構建開源ETL解決方案
- 作者:初建軍,曹雪梅
- ISBN:9787121224454
- 出版社:電子工業出版社
- 出版時間:2014年3月
- 頁數:484
- 字數:832千字
- 開本:16(188*260)
- 版次:01-01
內容簡介,圖書目錄,
內容簡介
本書主要介紹如何使用開源ETL工具來完成數據整合工作。 本書介紹的PDI(Kettle)是一種開源的 ETL 解決方案,書中介紹了如何使用PDI來實現數據的剖析、清洗、校驗、抽取、轉換、載入等各類常見的ETL類工作。 除了ODS/DW類比較大型的套用外,Kettle 實際還可以為中小企業提供靈活的數據抽取和數據處理的功能。Kettle除了支持各種關係型資料庫、HBase、MongoDB這樣的NoSQL數據源外,它還支持Excel、Access這類小型的數據源。並且通過外掛程式擴展,Kettle 可以支持各類數據源。本書詳細介紹了Kettle可以處理的數據源,而且詳細介紹了如何使用Kettle 抽取增量數據。 Kettle 的數據處理功能也很強大,除了選擇、過濾、分組、連線、排序這些常用的功能外,Kettle 里的Java表達式、正則表達式、Java腳本、Java類等功能都非常靈活而強大,都非常適合於各種數據處理功能。本書也使用了一些篇幅介紹Kettle這些靈活的數據處理功能。 本書後面章節介紹了如何在 Kettle 上開發外掛程式,如何使用Kettle處理實時數據流,以及如何在Amazon AWS上運行Kettle 等一些高級主題。 除了介紹PDI(Kettle)工具的使用和功能,本書還結合Kimball博士的數據倉庫和ETL子系統的理論,從實踐的角度介紹數據倉庫的模型設計、數據倉庫的構建方法,以及如何使用 PDI實現Kimball博士提出的34種ETL子系統。
圖書目錄
第一部分:開始
第1章 ETL入門2
1.1 OLTP和數據倉庫對比 2
1.2 ETL是什麼 3
1.2.1 ETL解決方案的演化過程 4
1.2.2 ETL基本構成 5
1.3 ETL、ELT和EII 6
1.3.1 ELT 6
1.3.2 EII:虛擬數據整合 7
1.4 數據整合面臨的挑戰 8
1.4.1 方法論:敏捷BI 9
1.4.2 ETL設計 10
1.4.3 獲取數據 10
1.4.4 數據質量 12
1.5 ETL工具的功能 13
1.5.1 連線 13
1.5.2 平台獨立 14
1.5.3 數據規模 14
1.5.4 設計靈活性 14
1.5.5 復用性 15
1.5.6 擴展性 15
1.5.7 數據轉換 15
1.5.8 測試和調試 16
1.5.9 血統和影響分析 16
1.5.10 日誌和審計 16
1.6 小結 17
第2章 Kettle基本概念18
2.1 設計原則 18
2.2 Kettle設計模組 19
2.2.1 轉換 19
2.2.2 作業 23
2.2.3 轉換或作業的元數據 28
2.2.4 資料庫連線 28
2.2.5 工具 31
2.2.6 資源庫 31
2.2.7 虛擬檔案系統 31
2.3 參數和變數 32
2.3.1 定義變數 32
2.3.2 命名參數 33
2.3.3 使用變數 33
2.4 可視化編程 34
2.4.1 開始 34
2.4.2 創建新的步驟 35
2.4.3 放在一起 36
2.5 小結 38
第3章 安裝和配置39
3.1 Kettle軟體概覽 39
3.1.1 集成開發環境:Spoon 40
3.1.2 命令行啟動:Kitchen和Pan 42
3.1.3 作業伺服器:Carte 42
3.1.4 Encr.bat和encr.sh 42
3.2 安裝 43
3.2.1 Java環境 43
3.2.2 安裝 Kettle 43
3.3 配置 46
3.3.1 配置檔案和.kettle目錄 46
3.3.2 用於啟動Kettle程式的shell腳本 51
3.3.3 管理 JDBC 驅動 52
3.4 小結 53
第4章 ETL示例解決方案——Sakila54
4.1 Sakila 54
4.1.1 sakila示例資料庫 55
4.1.2 租賃業務的星型模型 57
4.2 預備知識和一些基礎的Spoon技巧 60
4.2.1 安裝ETL解決方案 60
4.2.2 Spoon使用 60
4.3 ETL示例解決方案 61
4.3.1 生成靜態維度 62
4.3.2 循環載入 64
4.4 小結 80
第二部分:ETL
第5章 ETL子系統82
5.1 34種子系統介紹 82
5.1.1 抽取 83
5.1.2 清洗和更正數據 84
5.1.3 數據發布 86
5.1.4 管理ETL環境 89
5.2 小結 91
第6章 數據抽取92
6.1 Kettle數據抽取概覽 92
6.1.1 檔案抽取 93
6.1.2 資料庫抽取 97
6.1.3 Web數據抽取 98
6.1.4 基於流的和實時的抽取 99
6.2 處理ERP和CRM系統 100
6.2.1 ERP 挑戰 100
6.2.2 Kettle ERP外掛程式 101
6.2.3 處理SAP數據 101
6.2.4 ERP和CDC 問題 104
6.3 數據剖析 105
6.4 CDC:變更數據捕獲 110
6.4.1 基於源數據的CDC 111
6.4.2 基於觸發器的CDC 113
6.4.3 基於快照的CDC 113
6.4.4 基於日誌的CDC 116
6.4.5 哪個CDC方案更適合你 117
6.5 發布數據 117
6.6 小結 118
第7章 清洗和校驗 119
7.1 數據清洗 120
7.1.1 數據清洗步驟 121
7.1.2 使用參照表 123
7.1.3 數據校驗 127
7.2 錯誤處理 130
7.2.1 處理過程錯誤 131
7.2.2 轉換錯誤 132
7.2.3 處理數據(校驗)錯誤 133
7.3 審計數據和過程質量 136
7.4 數據排重 137
7.4.1 去除完全重複的數據 137
7.4.2 不完全重複問題 138
7.4.3 設計排除重複記錄的轉換 139
7.5 腳本 142
7.5.1 公式 143
7.5.2 Java腳本 143
7.5.3 用戶自定義Java表達式 144
7.5.4 正則表達式 145
7.6 小結 146
第8章 處理維度表 147
8.1 管理各種鍵 148
8.1.1 管理業務鍵 148
8.1.2 生成代理鍵 149
8.2 載入維度表 154
8.2.1 雪花維度表 154
8.2.2 星型維度表 159
8.3 緩慢變更維度 161
8.3.1 緩慢變更維類型 161
8.3.2 類型1的緩慢變更維 161
8.3.3 類型2的緩慢變更維 163
8.3.4 其他類型的緩慢變更維 167
8.4 更多維度 168
8.4.1 生成維(Generated Dimensions) 168
8.4.2 雜項維度(Junk Dimensions) 169
8.4.3 遞歸層次 170
8.5 小結 171
第9章 載入事實表 172
9.1 批量載入 173
9.1.1 STDIN和FIFO 173
9.1.2 Kettle批量載入 174
9.1.3 批量載入一般要考慮的問題 176
9.2 維度查詢 176
9.2.1 維護參照完整性 176
9.2.2 代理鍵管道 177
9.2.3 遲到數據 179
9.3 處理事實表 182
9.3.1 周期快照和累積快照 182
9.3.2 面向狀態的事實表 183
9.3.3 載入周期快照表 185
9.3.4 載入累積快照表 185
9.3.5 載入面向狀態事實表 186
9.3.6 載入聚集表 186
9.4 小結 187
第10章 處理OLAP數據 188
10.1 OLAP的價值和挑戰 189
10.1.1 OLAP 存儲類型 190
10.1.2 OLAP在系統中的位置 191
10.1.3 Kettle OLAP選項 191
10.2 Mondrian 192
10.3 XML/A服務 194
10.4 Palo 197
10.4.1 建立Palo 連線 198
10.4.2 Palo 架構 199
10.4.3 讀Palo數據 200
10.4.4 寫Palo數據 202
10.5 小結 204
第三部分:管理和部署
第11章 ETL開發生命期 206
11.1 解決方案設計 206
11.1.1 好習慣和壞習慣 206
11.1.2 ETL流設計 209
11.1.3 可重用性和可維護性 209
11.2 敏捷開發 210
11.3 測試和調試 214
11.3.1 測試活動 214
11.3.2 ETL測試 215
11.3.3 調試 218
11.4 解決方案文檔化 220
11.4.1 為什麼實際情況下文檔很少 220
11.4.2 Kettle的文檔功能 221
11.4.3 生成文檔 222
11.5 小結 223
第12章 調度和監控 224
12.1 調度 224
12.1.1 作業系統級調度 225
12.1.2 使用Pentaho 內置的調度程式 228
12.2 監控 232
12.2.1 日誌 232
12.2.2 郵件通知 234
12.3 小結 237
第13章 版本和移植 238
13.1 版本控制系統 238
13.1.1 基於檔案的版本控制系統 239
13.1.2 內容管理系統 240
13.2 Kettle 元數據 240
13.2.1 Kettle XML 元數據 241
13.2.2 Kettle 資源庫元數據 242
13.3 管理資源庫 244
13.3.1 導出和導入資源庫 244
13.3.2 資源庫升級 245
13.4 版本移植系統 245
13.4.1 管理XML檔案 245
13.4.2 管理資源庫 246
13.4.3 解決方案參數化 246
13.5 小結 248
第14章 血統和審計 249
14.1 批量血統抽取 250
14.2 血統 251
14.2.1 血統信息 251
14.2.2 影響分析信息 252
14.3 日誌和操作元數據 254
14.3.1 日誌基礎 254
14.3.2 日誌架構 255
14.3.3 日誌表 257
14.4 小結 262
第四部分:性能和擴展性
第15章 性能調優 264
15.1 轉換性能:找到最弱連線 264
15.1.1 通過簡化找到性能瓶頸 265
15.1.2 通過度量值找到性能瓶頸 266
15.1.3 複製數據行 267
15.2 提高轉換性能 269
15.2.1 提高讀文本檔案的性能 269
15.2.2 寫文本檔案時使用延遲轉換 271
15.2.3 提高資料庫性能 272
15.2.4 數據排序 275
15.2.5 減少CPU消耗 276
15.3 提高作業性能 280
15.3.1 作業里的循環 280
15.3.2 資料庫連線池 281
15.4 小結 281
第16章 並行、集群和分區 283
16.1 多執行緒 283
16.1.1 數據行分發 284
16.1.2 記錄行合併 285
16.1.3 記錄行再分發 285
16.1.4 數據流水線 286
16.1.5 多執行緒的問題 287
16.1.6 作業中的並行執行 289
16.2 使用Carte子伺服器 289
16.2.1 配置檔案 289
16.2.2 定義子伺服器 290
16.2.3 遠程執行 291
16.2.4 監視子伺服器 291
16.2.5 Carte安全 291
16.2.6 服務 292
16.3 集群轉換 293
16.3.1 定義一個集群模式 293
16.3.2 設計集群轉換 294
16.3.3 執行和監控 295
16.3.4 元數據轉換 296
16.4 分區 298
16.4.1 定義分區模式 299
16.4.2 分區的目標 300
16.4.3 實現分區 300
16.4.4 內部變數 301
16.4.5 資料庫分區 301
16.4.6 集群轉換中的分區 302
16.5 小結 302
第17章 雲計算中的動態集群 303
17.1 動態集群 303
17.1.1 建立動態集群 304
17.1.2 使用動態集群 306
17.2 雲計算 306
17.3 EC2 307
17.3.1 如何使用EC2 307
17.3.2 成本 307
17.3.3 自定義AMI 307
17.3.4 打包新AMI 310
17.3.5 中止AMI 310
17.3.6 運行主節點 310
17.3.7 運行子節點 311
17.3.8 使用EC2 集群 312
17.3.9 監控 313
17.3.10 輕量原則和持久性 314
17.4 小結 314
第18章 實時數據整合 315
18.1 實時ETL介紹 315
18.1.1 實時處理面臨的挑戰 316
18.1.2 需求 316
18.2 基於流的轉換 317
18.2.1 一個基於流的轉換實例 318
18.2.2 調試 321
18.2.3 第三方軟體和實時整合 321
18.2.4 Java 訊息服務 322
18.3 小結 324
第五部分:高級主題
第19章 Data Vault管理 326
19.1 Data Vault 模型介紹 327
19.2 你是否需要Data Vault 327
19.3 Data Vault的組成部分 328
19.3.1 中心表 328
19.3.2 連結表 329
19.3.3 附屬表 329
19.3.4 Data Vault 特點 331
19.3.5 構建 Data Vault 模型 331
19.4 將Sakila的例子轉換成Data Vault 模型 331
19.4.1 Sakila中心表 331
19.4.2 Sakila 連結表 332
19.4.3 Sakila 附屬表 333
19.5 載入Data Vault 模型:簡單的ETL解決
方案 334
19.5.1 安裝Sakila Data Vault 335
19.5.2 安裝ETL方案 335
19.5.3 創建一個資料庫賬戶 335
19.5.4 ETL解決方案的例子 335
19.5.5 載入 Data Vault 表 341
19.6 從Data Vault 模型更新數據集市 341
19.6.1 ETL解決方案例子 342
19.6.2 dim_actor 轉換 342
19.6.3 dim_customer 轉換 343
19.6.4 dim_film 轉換 346
19.6.5 dim_film_actor_bridge 轉換 347
19.6.6 fact_rental 轉換 347
19.6.7 載入星型模型里的所有表 349
19.7 小結 349
第20章 處理複雜數據格式 350
20.1 非關係型和非表格型的數據格式 350
20.2 非結構化的表格型數據 351
20.2.1 處理多值欄位 351
20.2.2 處理重複的欄位組 352
20.3 半結構化和非結構化數據 353
20.4 鍵/值對 358
20.5 小結 362
第21章 Web Services 363
21.1 Web 頁面和Web Services 363
21.2 數據格式 365
21.2.1 XML 365
21.2.2 HTML 366
21.2.3 JavaScript Object Notation 367
21.3 XML例子 369
21.3.1 XML例子檔案 369
21.3.2 從XML中抽取數據 371
21.3.3 生成XML文檔 378
21.4 SOAP例子 384
21.4.1 使用“Web服務查詢”步驟 385
21.4.2 直接訪問 SOAP服務 386
21.5 JSON例子 389
21.5.1 Freebase項目 389
21.5.2 使用Kettle 抽取Freebase數據 392
21.6 RSS 396
21.6.1 RSS結構 396
21.6.2 Kettle對RSS的支持 398
21.7 小結 403
第22章 Kettle集成 404
22.1 Kettle API 404
22.1.1 LGPL協定 404
22.1.2 Kettle Java API 405
22.2 執行存在的轉換和作業 406
22.2.1 執行一個轉換 406
22.2.2 執行一個作業 407
22.3 應用程式中嵌入Kettle 408
22.3.1 Pentaho 報表 408
22.3.2 把數據放到轉換里 410
22.3.3 動態轉換 413
22.3.4 動態模板 416
22.3.5 動態作業 416
22.3.6 在Kettle里執行動態ETL 419
22.3.7 Result 419
22.3.8 替換元數據 420
22.4 OEM版本和二次發布版本 421
22.4.1 創建PDI的OEM版本 421
22.4.2 Kettle的二次發布(Forking) 422
22.5 小結 423
第23章 擴展Kettle 424
23.1 外掛程式架構 424
23.1.1 外掛程式類型 425
23.1.2 架構 425
23.1.3 前提 425
23.2 轉換步驟外掛程式 428
23.2.1 StepMetaInterface 428
23.2.2 StepDataInterface 434
23.2.3 StepDialogInterface 434
23.2.4 StepInterface 440
23.3 用戶自定義 Java 類步驟 444
23.3.1 傳遞元數據 444
23.3.2 訪問輸入和欄位 445
23.3.3 代碼片段 445
23.3.4 例子 445
23.4 作業項外掛程式 446
23.4.1 JobEntryInterface 446
23.4.2 JobEntryDialogInterface 448
23.5 分區外掛程式 448
23.6 資源庫外掛程式 450
23.7 資料庫類型外掛程式 450
23.8 小結 451
附錄A Kettle生態群 452
附錄B Kettle 企業版特性 456
附錄C 內置的變數和屬性參考 457
第1章 ETL入門2
1.1 OLTP和數據倉庫對比 2
1.2 ETL是什麼 3
1.2.1 ETL解決方案的演化過程 4
1.2.2 ETL基本構成 5
1.3 ETL、ELT和EII 6
1.3.1 ELT 6
1.3.2 EII:虛擬數據整合 7
1.4 數據整合面臨的挑戰 8
1.4.1 方法論:敏捷BI 9
1.4.2 ETL設計 10
1.4.3 獲取數據 10
1.4.4 數據質量 12
1.5 ETL工具的功能 13
1.5.1 連線 13
1.5.2 平台獨立 14
1.5.3 數據規模 14
1.5.4 設計靈活性 14
1.5.5 復用性 15
1.5.6 擴展性 15
1.5.7 數據轉換 15
1.5.8 測試和調試 16
1.5.9 血統和影響分析 16
1.5.10 日誌和審計 16
1.6 小結 17
第2章 Kettle基本概念18
2.1 設計原則 18
2.2 Kettle設計模組 19
2.2.1 轉換 19
2.2.2 作業 23
2.2.3 轉換或作業的元數據 28
2.2.4 資料庫連線 28
2.2.5 工具 31
2.2.6 資源庫 31
2.2.7 虛擬檔案系統 31
2.3 參數和變數 32
2.3.1 定義變數 32
2.3.2 命名參數 33
2.3.3 使用變數 33
2.4 可視化編程 34
2.4.1 開始 34
2.4.2 創建新的步驟 35
2.4.3 放在一起 36
2.5 小結 38
第3章 安裝和配置39
3.1 Kettle軟體概覽 39
3.1.1 集成開發環境:Spoon 40
3.1.2 命令行啟動:Kitchen和Pan 42
3.1.3 作業伺服器:Carte 42
3.1.4 Encr.bat和encr.sh 42
3.2 安裝 43
3.2.1 Java環境 43
3.2.2 安裝 Kettle 43
3.3 配置 46
3.3.1 配置檔案和.kettle目錄 46
3.3.2 用於啟動Kettle程式的shell腳本 51
3.3.3 管理 JDBC 驅動 52
3.4 小結 53
第4章 ETL示例解決方案——Sakila54
4.1 Sakila 54
4.1.1 sakila示例資料庫 55
4.1.2 租賃業務的星型模型 57
4.2 預備知識和一些基礎的Spoon技巧 60
4.2.1 安裝ETL解決方案 60
4.2.2 Spoon使用 60
4.3 ETL示例解決方案 61
4.3.1 生成靜態維度 62
4.3.2 循環載入 64
4.4 小結 80
第二部分:ETL
第5章 ETL子系統82
5.1 34種子系統介紹 82
5.1.1 抽取 83
5.1.2 清洗和更正數據 84
5.1.3 數據發布 86
5.1.4 管理ETL環境 89
5.2 小結 91
第6章 數據抽取92
6.1 Kettle數據抽取概覽 92
6.1.1 檔案抽取 93
6.1.2 資料庫抽取 97
6.1.3 Web數據抽取 98
6.1.4 基於流的和實時的抽取 99
6.2 處理ERP和CRM系統 100
6.2.1 ERP 挑戰 100
6.2.2 Kettle ERP外掛程式 101
6.2.3 處理SAP數據 101
6.2.4 ERP和CDC 問題 104
6.3 數據剖析 105
6.4 CDC:變更數據捕獲 110
6.4.1 基於源數據的CDC 111
6.4.2 基於觸發器的CDC 113
6.4.3 基於快照的CDC 113
6.4.4 基於日誌的CDC 116
6.4.5 哪個CDC方案更適合你 117
6.5 發布數據 117
6.6 小結 118
第7章 清洗和校驗 119
7.1 數據清洗 120
7.1.1 數據清洗步驟 121
7.1.2 使用參照表 123
7.1.3 數據校驗 127
7.2 錯誤處理 130
7.2.1 處理過程錯誤 131
7.2.2 轉換錯誤 132
7.2.3 處理數據(校驗)錯誤 133
7.3 審計數據和過程質量 136
7.4 數據排重 137
7.4.1 去除完全重複的數據 137
7.4.2 不完全重複問題 138
7.4.3 設計排除重複記錄的轉換 139
7.5 腳本 142
7.5.1 公式 143
7.5.2 Java腳本 143
7.5.3 用戶自定義Java表達式 144
7.5.4 正則表達式 145
7.6 小結 146
第8章 處理維度表 147
8.1 管理各種鍵 148
8.1.1 管理業務鍵 148
8.1.2 生成代理鍵 149
8.2 載入維度表 154
8.2.1 雪花維度表 154
8.2.2 星型維度表 159
8.3 緩慢變更維度 161
8.3.1 緩慢變更維類型 161
8.3.2 類型1的緩慢變更維 161
8.3.3 類型2的緩慢變更維 163
8.3.4 其他類型的緩慢變更維 167
8.4 更多維度 168
8.4.1 生成維(Generated Dimensions) 168
8.4.2 雜項維度(Junk Dimensions) 169
8.4.3 遞歸層次 170
8.5 小結 171
第9章 載入事實表 172
9.1 批量載入 173
9.1.1 STDIN和FIFO 173
9.1.2 Kettle批量載入 174
9.1.3 批量載入一般要考慮的問題 176
9.2 維度查詢 176
9.2.1 維護參照完整性 176
9.2.2 代理鍵管道 177
9.2.3 遲到數據 179
9.3 處理事實表 182
9.3.1 周期快照和累積快照 182
9.3.2 面向狀態的事實表 183
9.3.3 載入周期快照表 185
9.3.4 載入累積快照表 185
9.3.5 載入面向狀態事實表 186
9.3.6 載入聚集表 186
9.4 小結 187
第10章 處理OLAP數據 188
10.1 OLAP的價值和挑戰 189
10.1.1 OLAP 存儲類型 190
10.1.2 OLAP在系統中的位置 191
10.1.3 Kettle OLAP選項 191
10.2 Mondrian 192
10.3 XML/A服務 194
10.4 Palo 197
10.4.1 建立Palo 連線 198
10.4.2 Palo 架構 199
10.4.3 讀Palo數據 200
10.4.4 寫Palo數據 202
10.5 小結 204
第三部分:管理和部署
第11章 ETL開發生命期 206
11.1 解決方案設計 206
11.1.1 好習慣和壞習慣 206
11.1.2 ETL流設計 209
11.1.3 可重用性和可維護性 209
11.2 敏捷開發 210
11.3 測試和調試 214
11.3.1 測試活動 214
11.3.2 ETL測試 215
11.3.3 調試 218
11.4 解決方案文檔化 220
11.4.1 為什麼實際情況下文檔很少 220
11.4.2 Kettle的文檔功能 221
11.4.3 生成文檔 222
11.5 小結 223
第12章 調度和監控 224
12.1 調度 224
12.1.1 作業系統級調度 225
12.1.2 使用Pentaho 內置的調度程式 228
12.2 監控 232
12.2.1 日誌 232
12.2.2 郵件通知 234
12.3 小結 237
第13章 版本和移植 238
13.1 版本控制系統 238
13.1.1 基於檔案的版本控制系統 239
13.1.2 內容管理系統 240
13.2 Kettle 元數據 240
13.2.1 Kettle XML 元數據 241
13.2.2 Kettle 資源庫元數據 242
13.3 管理資源庫 244
13.3.1 導出和導入資源庫 244
13.3.2 資源庫升級 245
13.4 版本移植系統 245
13.4.1 管理XML檔案 245
13.4.2 管理資源庫 246
13.4.3 解決方案參數化 246
13.5 小結 248
第14章 血統和審計 249
14.1 批量血統抽取 250
14.2 血統 251
14.2.1 血統信息 251
14.2.2 影響分析信息 252
14.3 日誌和操作元數據 254
14.3.1 日誌基礎 254
14.3.2 日誌架構 255
14.3.3 日誌表 257
14.4 小結 262
第四部分:性能和擴展性
第15章 性能調優 264
15.1 轉換性能:找到最弱連線 264
15.1.1 通過簡化找到性能瓶頸 265
15.1.2 通過度量值找到性能瓶頸 266
15.1.3 複製數據行 267
15.2 提高轉換性能 269
15.2.1 提高讀文本檔案的性能 269
15.2.2 寫文本檔案時使用延遲轉換 271
15.2.3 提高資料庫性能 272
15.2.4 數據排序 275
15.2.5 減少CPU消耗 276
15.3 提高作業性能 280
15.3.1 作業里的循環 280
15.3.2 資料庫連線池 281
15.4 小結 281
第16章 並行、集群和分區 283
16.1 多執行緒 283
16.1.1 數據行分發 284
16.1.2 記錄行合併 285
16.1.3 記錄行再分發 285
16.1.4 數據流水線 286
16.1.5 多執行緒的問題 287
16.1.6 作業中的並行執行 289
16.2 使用Carte子伺服器 289
16.2.1 配置檔案 289
16.2.2 定義子伺服器 290
16.2.3 遠程執行 291
16.2.4 監視子伺服器 291
16.2.5 Carte安全 291
16.2.6 服務 292
16.3 集群轉換 293
16.3.1 定義一個集群模式 293
16.3.2 設計集群轉換 294
16.3.3 執行和監控 295
16.3.4 元數據轉換 296
16.4 分區 298
16.4.1 定義分區模式 299
16.4.2 分區的目標 300
16.4.3 實現分區 300
16.4.4 內部變數 301
16.4.5 資料庫分區 301
16.4.6 集群轉換中的分區 302
16.5 小結 302
第17章 雲計算中的動態集群 303
17.1 動態集群 303
17.1.1 建立動態集群 304
17.1.2 使用動態集群 306
17.2 雲計算 306
17.3 EC2 307
17.3.1 如何使用EC2 307
17.3.2 成本 307
17.3.3 自定義AMI 307
17.3.4 打包新AMI 310
17.3.5 中止AMI 310
17.3.6 運行主節點 310
17.3.7 運行子節點 311
17.3.8 使用EC2 集群 312
17.3.9 監控 313
17.3.10 輕量原則和持久性 314
17.4 小結 314
第18章 實時數據整合 315
18.1 實時ETL介紹 315
18.1.1 實時處理面臨的挑戰 316
18.1.2 需求 316
18.2 基於流的轉換 317
18.2.1 一個基於流的轉換實例 318
18.2.2 調試 321
18.2.3 第三方軟體和實時整合 321
18.2.4 Java 訊息服務 322
18.3 小結 324
第五部分:高級主題
第19章 Data Vault管理 326
19.1 Data Vault 模型介紹 327
19.2 你是否需要Data Vault 327
19.3 Data Vault的組成部分 328
19.3.1 中心表 328
19.3.2 連結表 329
19.3.3 附屬表 329
19.3.4 Data Vault 特點 331
19.3.5 構建 Data Vault 模型 331
19.4 將Sakila的例子轉換成Data Vault 模型 331
19.4.1 Sakila中心表 331
19.4.2 Sakila 連結表 332
19.4.3 Sakila 附屬表 333
19.5 載入Data Vault 模型:簡單的ETL解決
方案 334
19.5.1 安裝Sakila Data Vault 335
19.5.2 安裝ETL方案 335
19.5.3 創建一個資料庫賬戶 335
19.5.4 ETL解決方案的例子 335
19.5.5 載入 Data Vault 表 341
19.6 從Data Vault 模型更新數據集市 341
19.6.1 ETL解決方案例子 342
19.6.2 dim_actor 轉換 342
19.6.3 dim_customer 轉換 343
19.6.4 dim_film 轉換 346
19.6.5 dim_film_actor_bridge 轉換 347
19.6.6 fact_rental 轉換 347
19.6.7 載入星型模型里的所有表 349
19.7 小結 349
第20章 處理複雜數據格式 350
20.1 非關係型和非表格型的數據格式 350
20.2 非結構化的表格型數據 351
20.2.1 處理多值欄位 351
20.2.2 處理重複的欄位組 352
20.3 半結構化和非結構化數據 353
20.4 鍵/值對 358
20.5 小結 362
第21章 Web Services 363
21.1 Web 頁面和Web Services 363
21.2 數據格式 365
21.2.1 XML 365
21.2.2 HTML 366
21.2.3 JavaScript Object Notation 367
21.3 XML例子 369
21.3.1 XML例子檔案 369
21.3.2 從XML中抽取數據 371
21.3.3 生成XML文檔 378
21.4 SOAP例子 384
21.4.1 使用“Web服務查詢”步驟 385
21.4.2 直接訪問 SOAP服務 386
21.5 JSON例子 389
21.5.1 Freebase項目 389
21.5.2 使用Kettle 抽取Freebase數據 392
21.6 RSS 396
21.6.1 RSS結構 396
21.6.2 Kettle對RSS的支持 398
21.7 小結 403
第22章 Kettle集成 404
22.1 Kettle API 404
22.1.1 LGPL協定 404
22.1.2 Kettle Java API 405
22.2 執行存在的轉換和作業 406
22.2.1 執行一個轉換 406
22.2.2 執行一個作業 407
22.3 應用程式中嵌入Kettle 408
22.3.1 Pentaho 報表 408
22.3.2 把數據放到轉換里 410
22.3.3 動態轉換 413
22.3.4 動態模板 416
22.3.5 動態作業 416
22.3.6 在Kettle里執行動態ETL 419
22.3.7 Result 419
22.3.8 替換元數據 420
22.4 OEM版本和二次發布版本 421
22.4.1 創建PDI的OEM版本 421
22.4.2 Kettle的二次發布(Forking) 422
22.5 小結 423
第23章 擴展Kettle 424
23.1 外掛程式架構 424
23.1.1 外掛程式類型 425
23.1.2 架構 425
23.1.3 前提 425
23.2 轉換步驟外掛程式 428
23.2.1 StepMetaInterface 428
23.2.2 StepDataInterface 434
23.2.3 StepDialogInterface 434
23.2.4 StepInterface 440
23.3 用戶自定義 Java 類步驟 444
23.3.1 傳遞元數據 444
23.3.2 訪問輸入和欄位 445
23.3.3 代碼片段 445
23.3.4 例子 445
23.4 作業項外掛程式 446
23.4.1 JobEntryInterface 446
23.4.2 JobEntryDialogInterface 448
23.5 分區外掛程式 448
23.6 資源庫外掛程式 450
23.7 資料庫類型外掛程式 450
23.8 小結 451
附錄A Kettle生態群 452
附錄B Kettle 企業版特性 456
附錄C 內置的變數和屬性參考 457