數據庫系統概念, 7/e (Database System Concepts, 7/e)
內容描述
數據庫領域的殿堂級作品
夯實數據庫理論基礎,修煉數據庫技術內功的必備之選
對深入理解數據庫,深入研究數據庫,深入操作數據庫都具有極強的指導作用!
本書是數據庫系統方面的經典教材之一,其內容由淺入深,既包含了數據庫系統基本概念,又反映了數據庫技術的新進展。
它被國際上許多著名大學所採用,包括斯坦福大學、耶魯大學、得克薩斯大學、康奈爾大學、伊利諾伊大學等。
我國也有多所大學採用本書作為本科生和研究生數據庫課程的教材和主要教學參考書,收到了良好的效果。
第7版保持了前6版的總體風格,同時對內容進行了擴充,對結構進行了調整,
以更好地符合數據庫教學的需求,反映數據庫設計、管理與使用方式的發展和變化。
具體更新內容如下:
廣泛涵蓋了大數據系統的內容,與第6版相比有大量的內容擴充和改進。
增加了區塊鏈數據庫的內容,重點介紹了區塊鏈系統與數據庫系統之間的交互。
對涉及數據庫內部的所有各章進行了修改,以融入固態硬盤、主存數據庫、多核系統和列存儲等當代技術。
對於使用JSON、RDF和SPARQL進行半結構化數據管理做了更多描述。
更新了對於時態數據、數據分析和諸如寫優化的索引等高級索引技術的描述。
為了更好地支持動手實踐,重新組織和更新了一些章節,
包括使用當代的應用開發工具和大數據系統,如Apache Hadoop和Spark。
本書英文版配套網站(http://www.db-book.com)提供的教輔資源包括:
各章的教學課件。
實踐習題的答案。
6章英文在線內容(形式關系查詢語言、高級關系數據庫設計、基於對象的數據庫、XML、信息檢索和PostgreSQL)。
實驗素材(包括大學模式和習題中用到的SQL DDL和樣例數據,
大量實驗練習和相關項目示例,以及關於建立與使用各種數據庫系統和工具的說明)。
最新勘誤表。
目錄大綱
出版者的話
譯者序
前言
關於作者
第1章 引言1
1.1 數據庫系統應用1
1.2 數據庫系統的目標3
1.3 數據視圖6
1.3.1 數據模型6
1.3.2 關系數據模型6
1.3.3 數據抽象7
1.3.4 實例和模式8
1.4 數據庫語言9
1.4.1 數據定義語言9
1.4.2 SQL數據定義語言10
1.4.3 數據操縱語言10
1.4.4 SQL數據操縱語言11
1.4.5 從應用程序訪問數據庫11
1.5 數據庫設計12
1.6 數據庫引擎12
1.6.1 存儲管理器13
1.6.2 查詢處理器14
1.6.3 事務管理14
1.7 數據庫和應用體系結構15
1.8 數據庫用戶和管理員16
1.8.1 數據庫用戶和用戶界面16
1.8.2 數據庫管理員17
1.9 數據庫系統的歷史17
1.10 總結20
術語回顧21
實踐習題22
習題22
工具22
延伸閱讀23
參考文獻23
第一部分 關系語言
第2章 關系模型介紹26
2.1 關系數據庫的結構26
2.2 數據庫模式28
2.3 碼29
2.4 模式圖32
2.5 關系查詢語言32
2.6 關系代數33
2.6.1 選擇運算33
2.6.2 投影運算34
2.6.3 關系運算的復合34
2.6.4 笛卡兒積運算35
2.6.5 連接運算36
2.6.6 集合運算37
2.6.7 賦值運算38
2.6.8 更名運算39
2.6.9 等價查詢40
2.7 總結40
術語回顧41
實踐習題41
習題42
延伸閱讀43
參考文獻44
第3章 SQL介紹45
3.1 SQL查詢語言概覽45
3.2 SQL數據定義46
3.2.1 基本類型46
3.2.2 基本模式定義47
3.3 SQL查詢的基本結構49
3.3.1 單關系查詢49
3.3.2 多關系查詢51
3.4 附加的基本運算55
3.4.1 更名運算55
3.4.2 字符串運算56
3.4.3 select子句中的屬性說明57
3.4.4 排列元組的顯示次序 57
3.4.5 where子句謂詞58
3.5 集合運算58
3.5.1 並運算59
3.5.2 交運算60
3.5.3 差運算60
3.6 空值61
3.7 聚集函數62
3.7.1 基本聚集62
3.7.2 分組聚集63
3.7.3 having子句65
3.7.4 對空值和布爾值的聚集66
3.8 嵌套子查詢67
3.8.1 集合成員資格67
3.8.2 集合比較68
3.8.3 空關系測試69
3.8.4 重復元組存在性測試70
3.8.5 from子句中的子查詢71
3.8.6 with子句72
3.8.7 標量子查詢73
3.8.8 不帶from子句的標量73
3.9 數據庫的修改74
3.9.1 刪除75
3.9.2 插入76
3.9.3 更新77
3.10 總結78
術語回顧79
實踐習題79
習題81
工具83
延伸閱讀84
參考文獻84
第4章 中級SQL85
4.1 連接表達式85
4.1.1 自然連接85
4.1.2 連接條件88
4.1.3 外連接89
4.1.4 連接類型和條件92
4.2 視圖92
4.2.1 視圖定義93
4.2.2 在SQL查詢中使用視圖94
4.2.3 物化視圖95
4.2.4 視圖更新95
4.3 事務97
4.4 完整性約束98
4.4.1 單個關繫上的約束99
4.4.2 非空約束99
4.4.3 唯一性約束100
4.4.4 check子句100
4.4.5 引用完整性100
4.4.6 給約束賦名102
4.4.7 事務中對完整性約束的違反103
4.4.8 復雜check條件與斷言103
4.5 SQL的數據類型與模式105
4.5.1 SQL中的日期和時間類型105
4.5.2 類型轉換和格式化函數105
4.5.3 默認值106
4.5.4 大對象類型107
4.5.5 用戶自定義類型108
4.5.6 生成唯一碼值110
4.5.7 create table的擴展111
4.5.8 模式、目錄與環境111
4.6 SQL中的索引定義112
4.7 授權113
4.7.1 權限的授予與收回114
4.7.2 角色115
4.7.3 視圖的授權116
4.7.4 模式的授權117
4.7.5 權限的轉移117
4.7.6 權限的收回118
4.7.7 行級授權119
4.8 總結119
術語回顧120
實踐習題121
習題122
延伸閱讀123
參考文獻123
第5章 高級SQL125
5.1 使用程序設計語言訪問SQL125
5.1.1 JDBC126
5.1.2 從Python訪問數據庫132
5.1.3 ODBC132
5.1.4 嵌入式SQL134
5.2 函數和過程136
5.2.1 聲明及調用SQL函數和過程136
5.2.2 用於過程和函數的語言結構137
5.2.3 外部語言例程140
5.3 觸發器141
5.3.1 對觸發器的需求141
5.3.2 SQL中的觸發器141
5.3.3 何時不用觸發器144
5.4 遞歸查詢146
5.4.1 使用迭代的傳遞閉包146
5.4.2 SQL中的遞歸148
5.5 高級聚集特性149
5.5.1 排名150
5.5.2 分窗153
5.5.3 旋轉154
5.5.4 上捲和立方體155
5.6 總結158
術語回顧158
實踐習題158
習題160
工具161
延伸閱讀162
第二部分 數據庫設計
第6章 使用E-R模型的數據庫設計164
6.1 設計過程概覽164
6.1.1 設計階段164
6.1.2 設計選擇165
6.2 實體-聯系模型166
6.2.1 實體集166
6.2.2 聯系集167
6.3 復雜屬性169
6.4 映射基數171
6.5 主碼174
6.5.1 實體集174
6.5.2 聯系集175
6.5.3 弱實體集176
6.6 從實體集中刪除冗餘屬性177
6.7 將E-R圖轉換為關系模式180
6.7.1 強實體集的表示180
6.7.2 具有復雜屬性的強實體集的表示180
6.7.3 弱實體集的表示182
6.7.4 聯系集的表示182
6.7.5 模式的冗餘183
6.7.6 模式的合並184
6.8 擴展的E-R特性184
6.8.1 特化185
6.8.2 概化186
6.8.3 屬性繼承186
6.8.4 特化上的約束187
6.8.5 聚集187
6.8.6 轉換為關系模式188
6.9 實體-聯系設計問題190
6.9.1 E-R圖中的常見錯誤190
6.9.2 使用實體集還是屬性191
6.9.3 使用實體集還是聯系集192
6.9.4 二元還是n元聯系集193
6.10 數據建模的可選表示法194
6.10.1 可選的E-R表示法195
6.10.2 統一建模語言196
6.11 數據庫設計的其他方面198
6.11.1 功能要求198
6.11.2 數據流、工作流198
6.11.3 模式演化198
6.12 總結199
術語回顧200
實踐習題200
習題202
工具203
延伸閱讀204
參考文獻204
第7章 關系數據庫設計205
7.1 好的關系設計的特點205
7.1.1 分解206
7.1.2 無損分解207
7.1.3 規範化理論208
7.2 使用函數依賴進行分解208
7.2.1 符號慣例209
7.2.2 碼和函數依賴209
7.2.3 無損分解和函數依賴211
7.3 範式212
7.3.1 Boyce-Codd範式212
7.3.2 第三範式214
7.3.3 BCNF和3NF的比較215
7.3.4 更高級的範式216
7.4 函數依賴理論216
7.4.1 函數依賴集的閉包216
7.4.2 屬性集的閉包218
7.4.3 正則覆蓋219
7.4.4 保持依賴222
7.5 使用函數依賴的分解算法223
7.5.1 BCNF分解223
7.5.2 3NF分解225
7.5.3 3NF算法的正確性226
7.6 使用多值依賴的分解227
7.6.1 多值依賴227
7.6.2 第四範式229
7.6.3 4NF分解229
7.7 更多的範式230
7.8 原子域和第一範式231
7.9 數據庫設計過程232
7.9.1 E-R模型和規範化232
7.9.2 屬性和聯系的命名233
7.9.3 為了性能去規範化234
7.9.4 其他設計問題234
7.10 時態數據建模235
7.11 總結237
術語回顧238
實踐習題239
習題241
延伸閱讀243
參考文獻244
第三部分 應用程序設計和開發
第8章 復雜數據類型246
8.1 半結構化數據246
8.1.1 半結構化數據模型概述246
8.1.2 JSON248
8.1.3 XML249
8.1.4 RDF和知識圖譜251
8.2 面向對象253
8.2.1 對象-關系數據庫系統254
8.2.2 對象-關系映射257
8.3 文本數據257
8.3.1 關鍵字查詢258
8.3.2 相關性排名258
8.3.3 檢索有效性的度量260
8.3.4 結構化數據和知識圖譜上的關鍵字查詢260
8.4 空間數據261
8.4.1 幾何信息表示262
8.4.2 設計數據庫263
8.4.3 地理數據264
8.4.4 空間查詢265
8.5 總結266
術語回顧267
實踐習題268
習題269
延伸閱讀270
參考文獻270
第9章 應用程序開發271
9.1 應用程序和用戶界面271
9.2 Web基礎272
9.2.1 統一資源定位符272
9.2.2 超文本標記語言273
9.2.3 Web服務器和會話275
9.3 servlet277
9.3.1 servlet示例277
9.3.2 servlet會話279
9.3.3 servlet的生命周期280
9.3.4 應用服務器280
9.4 可選擇的服務器端框架280
9.4.1 服務器端腳本280
9.4.2 Web應用框架282
9.4.3 Django框架283
9.5 客戶端代碼和Web服務284
9.5.1 JavaScript284
9.5.2 Web服務288
9.5.3 斷連操作288
9.5.4 移動應用平臺289
9.6 應用程序體系結構290
9.6.1 業務邏輯層291
9.6.2 數據訪問層和對象-關系映射291
9.7 應用程序性能294
9.7.1 通過高速緩存減少開銷295
9.7.2 並行處理296
9.8 應用程序安全性296
9.8.1 SQL註入296
9.8.2 跨站點腳本和請求偽造297
9.8.3 密碼泄露298
9.8.4 應用級認證299
9.8.5 應用級授權300
9.8.6 審計追蹤302
9.8.7 隱私302
9.9 加密及其應用303
9.9.1 加密技術303
9.9.2 數據庫中的加密支持305
9.9.3 加密和認證306
9.10 總結307
術語回顧308
實踐習題309
習題309
項目建議310
工具312
延伸閱讀313
參考文獻313
第四部分 大數據分析
第10章 大數據316
10.1 動機316
10.1.1 大數據的來源和使用317
10.1.2 大數據查詢318
10.2 大數據存儲系統319
10.2.1 分佈式文件系統320
10.2.2 分片322
10.2.3 鍵值存儲系統322
10.2.4 並行和分佈式數據庫325
10.2.5 復制和一致性326
10.3 MapReduce範式327
10.3.1 為什麽要使用MapReduce327
10.3.2 MapReduce示例1:詞匯統計328
10.3.3 MapReduce示例2:日誌處理329
10.3.4 MapReduce任務的並行處理331
10.3.5 Hadoop中的MapReduce332
10.3.6 MapReduce上的SQL334
10.4 超越MapReduce:代數運算335
10.4.1 代數運算的動機335
10.4.2 Spark中的代數運算336
10.5 流數據339
10.5.1 流數據的應用339
10.5.2 流數據查詢341
10.5.3 流上的代數運算343
10.6 圖數據庫345
10.7 總結347
術語回顧347
實踐習題348
習題349
工具349
延伸閱讀350
參考文獻350
第11章 數據分析351
11.1 分析概述351
11.2 數據倉庫352
11.2.1 數據倉庫成分353
11.2.2 多維數據與數據倉庫模式354
11.2.3 數據倉庫的數據庫支持355
11.2.4 數據湖356
11.3 聯機分析處理356
11.3.1 多維數據上的聚集357
11.3.2 交叉表的關系表示360
11.3.3 SQL中的OLAP361
11.3.4 報表和可視化工具364
11.4 數據挖掘365
11.4.1 數據挖掘任務的類型366
11.4.2 分類366
11.4.3 回歸369
11.4.4 關聯規則370
11.4.5 聚類371
11.4.6 文本挖掘372
11.5 總結372
術語回顧373
實踐習題374
習題375
工具375
延伸閱讀376
參考文獻376
第五部分 存儲管理和索引
第12章 物理存儲系統378
12.1 物理存儲介質概述378
12.2 存儲器接口380
12.3 磁盤381
12.3.1 磁盤的物理特性381
12.3.2 磁盤的性能度量383
12.4 快閃內存384
12.5 RAID386
12.5.1 通過冗餘提高可靠性386
12.5.2 通過並行提高性能387
12.5.3 RAID級別387
12.5.4 硬件問題389
12.5.5 RAID級別的選擇390
12.5.6 其他的RAID應用391
12.6 磁盤塊訪問391
12.7 總結393
術語回顧394
實踐習題394
習題395
延伸閱讀395
參考文獻396
第13章 數據存儲結構397
13.1 數據庫存儲架構397
13.2 文件組織398
13.2.1 定長記錄398
13.2.2 變長記錄400
13.2.3 大對象存儲402
13.3 文件中記錄的組織402
13.3.1 堆文件組織403
13.3.2 順序文件組織404
13.3.3 多表聚簇文件組織405
13.3.4 劃分407
13.4 數據字典存儲407
13.5 數據庫緩沖區409
13.5.1 緩沖區管理器409
13.5.2 緩沖區替換策略411
13.5.3 寫操作的重排序與恢復413
13.6 面向列的存儲414
13.7 主存數據庫的存儲組織417
13.8 總結418
術語回顧418
實踐習題419
習題419
延伸閱讀420
參考文獻420
第14章 索引421
14.1 基本概念421
14.2 順序索引422
14.2.1 稠密索引和稀疏索引422
14.2.2 多級索引425
14.2.3 索引更新426
14.2.4 輔助索引427
14.2.5 多碼索引428
14.3 B+樹索引文件428
14.3.1 B+樹的結構429
14.3.2 B+樹的查詢431
14.3.3 B+樹的更新434
14.3.4 B+樹更新的復雜度439
14.3.5 非唯一性搜索碼440
14.4 B+樹擴展441
14.4.1 B+樹文件組織441
14.4.2 輔助索引和記錄重分配442
14.4.3 對字符串的索引443
14.4.4 B+樹索引的批量加載443
14.4.5 B樹索引文件444
14.4.6 快閃內存上的索引445
14.4.7 主存上的索引446
14.5 散列索引447
14.6 多碼訪問449
14.6.1 使用多個單碼索引449
14.6.2 多碼索引449
14.6.3 覆蓋索引450
14.7 索引的創建450
14.8 寫優化索引結構452
14.8.1 LSM樹452
14.8.2 緩沖樹454
14.9 位圖索引455
14.10 時空數據索引456
14.10.1 空間數據索引456
14.10.2 時態數據索引458
14.11 總結459
術語回顧460
實踐習題461
習題463
延伸閱讀463
參考文獻464
第六部分 查詢處理和優化
第15章 查詢處理466
15.1 概述466
15.2 查詢代價的度量468
15.3 選擇運算470
15.3.1 文件掃描的使用和索引的選擇470
15.3.2 涉及比較的選擇472
15.3.3 復雜選擇的實現473
15.4 排序474
15.4.1 外排序-歸並算法474
15.4.2 外排序-歸並的代價分析476
15.5 連接運算476
15.5.1 嵌套-循環連接477
15.5.2 塊嵌套-循環連接477
15.5.3 索引嵌套-循環連接478
15.5.4 歸並-連接479
15.5.5 散列-連接482
15.5.6 復雜連接485
15.5.7 空間數據上的連接486
15.6 其他運算486
15.6.1 去重486
15.6.2 投影487
15.6.3 集合運算487
15.6.4 外連接488
15.6.5 聚集489
15.7 表達式執行489
15.7.1 物化490
15.7.2 流水線490
15.7.3 對於連續流數據的流水線494
15.8 內存中的查詢處理495
15.8.1 高速緩存感知算法495
15.8.2 查詢編譯496
15.8.3 面向列的存儲496
15.9 總結496
術語回顧497
實踐習題498
習題499
延伸閱讀500
參考文獻500
第16章 查詢優化501
16.1 概述501
16.2 關系表達式的轉換503
16.2.1 等價規則504
16.2.2 轉換示例507
16.2.3 連接次序509
16.2.4 等價表達式的枚舉509
16.3 表達式結果的統計信息估計510
16.3.1 目錄信息511
16.3.2 選擇規模估計512
16.3.3 連接規模估計514
16.3.4 其他運算的規模估計516
16.3.5 不同取值個數的估計516
16.4 執行計劃的選擇517
16.4.1 基於代價的連接次序選擇517
16.4.2 採用等價規則的基於代價的優化520
16.4.3 優化中的啟發式方法521
16.4.4 嵌套子查詢的優化523
16.5 物化視圖525
16.5.1 視圖維護526
16.5.2 增量的視圖維護526
16.5.3 查詢優化和物化視圖528
16.5.4 物化視圖和索引選擇529
16.6 查詢優化中的高級主題529
16.6.1 top-K優化529
16.6.2 連接最小化530
16.6.3 更新的優化530
16.6.4 多查詢優化和共享式掃描530
16.6.5 參數化查詢優化531
16.6.6 自適應查詢處理531
16.7 總結532
術語回顧532
實踐習題533
習題535
延伸閱讀536
參考文獻536
第七部分 事務管理
第17章 事務538
17.1 事務的概念538
17.2 一個簡單的事務模型539
17.3 存儲器結構541
17.4 事務的原子性和持久性542
17.5 事務的隔離性543
17.6 可串行化547
17.7 事務的隔離性和原子性550
17.7.1 可恢復調度550
17.7.2 無級聯調度550
17.8 事務的隔離性級別551
17.9 隔離性級別的實現553
17.9.1 鎖553
17.9.2 時間戳554
17.9.3 多版本和快照隔離554
17.10 事務的SQL語句表示555
17.11 總結556
術語回顧557
實踐習題558
習題558
延伸閱讀559
參考文獻559
第18章 並發控制560
18.1 基於鎖的協議560
18.1.1 鎖560
18.1.2 鎖的授予563
18.1.3 兩階段封鎖協議563
18.1.4 封鎖的實現565
18.1.5 基於圖的協議566
18.2 死鎖處理568
18.2.1 死鎖預防568
18.2.2 死鎖檢測與恢復569
18.3 多粒度571
18.4 插入操作、刪除操作與謂詞讀573
18.4.1 刪除573
18.4.2 插入574
18.4.3 謂詞讀和幻象現象574
18.5 基於時間戳的協議576
18.5.1 時間戳576
18.5.2 時間戳排序協議577
18.5.3 Thomas寫規則578
18.6 基於有效性檢查的協議580
18.7 多版本機制581
18.7.1 多版本時間戳排序582
18.7.2 多版本兩階段封鎖583
18.8 快照隔離584
18.8.1 快照隔離中的多版本584
18.8.2 更新事務的有效性檢查步驟585
18.8.3 串行化問題和解決方案586
18.9 實踐中的弱一致性級別589
18.9.1 二級一致性589
18.9.2 游標穩定性589
18.9.3 跨用戶交互的並發控制590
18.10 並發控制的高級主題591
18.10.1 在線索引創建591
18.10.2 索引結構中的並發592
18.10.3 主存數據庫中的並發控制594
18.10.4 長事務596
18.10.5 利用操作的並發控制596
18.10.6 實時事務系統598
18.11 總結599
術語回顧600
實踐習題601
習題603
延伸閱讀604
參考文獻604
第19章 恢復系統606
19.1 故障分類606
19.2 存儲器607
19.2.1 穩定存儲器的實現607
19.2.2 數據訪問608
19.3 恢復與原子性609
19.3.1 日誌記錄610
19.3.2 數據庫修改611
19.3.3 並發控制與恢復611
19.3.4 事務提交612
19.3.5 使用日誌來重做和撤銷事務612
19.3.6 檢查點615
19.4 恢復算法616
19.4.1 事務回滾616
19.4.2 系統崩潰後的恢復616
19.4.3 提交處理的優化618
19.5 緩沖區管理618
19.5.1 日誌記錄緩沖618
19.5.2 數據庫緩沖619
19.5.3 操作系統在緩沖區管理中的作用620
19.5.4 模糊檢查點621
19.6 非易失性存儲器上數據丟失的故障621
19.7 使用遠程備份系統的高可用性622
19.8 鎖的提前釋放與邏輯撤銷操作625
19.8.1 邏輯操作625
19.8.2 邏輯撤銷日誌記錄626
19.8.3 有邏輯撤銷的事務回滾626
19.8.4 邏輯撤銷中的並發問題628
19.9 ARIES629
19.9.1 數據結構629
19.9.2 恢復算法631
19.9.3 其他特性633
19.10 主存數據庫的恢復634
19.11 總結634
術語回顧636
實踐習題637
習題638
延伸閱讀639
參考文獻639
第八部分 並行和分佈式數據庫
第20章 數據庫系統體系結構642
20.1 概述642
20.2 集中式數據庫系統642
20.3 服務器系統體系結構643
20.3.1 事務服務器體系結構644
20.3.2 數據服務器與數據存儲系統646
20.3.3 客戶端高速緩存647
20.4 並行系統648
20.4.1 並行數據庫的動機648
20.4.2 並行系統的性能度量649
20.4.3 互連網絡651
20.4.4 並行數據庫體系結構654
20.4.5 共享內存655
20.4.6 共享磁盤658
20.4.7 無共享659
20.4.8 層次659
20.5 分佈式系統659
20.6 並行和分佈式系統中的事務處理661
20.7 基於雲的服務662
20.7.1 雲服務模型662
20.7.2 雲服務的優缺點665
20.8 總結665
術語回顧666
實踐習題667
習題667
延伸閱讀668
參考文獻668
第21章 並行和分佈式存儲669
21.1 概述669
21.2 數據分區669
21.2.1 分區策略670
21.2.2 分區技術的對比671
21.3 分區中的偏斜處理672
21.3.1 平衡的範圍分區向量673
21.3.2 虛擬節點分區673
21.3.3 動態再分區674
21.4 復制676
21.4.1 副本的位置677
21.4.2 更新與副本的一致性677
21.5 並行索引678
21.6 分佈式文件系統681
21.7 並行的鍵值存儲683
21.7.1 數據表示684
21.7.2 存儲與檢索數據685
21.7.3 對事務的支持687
21.7.4 不使用聲明式查詢的管理688
21.7.5 性能優化689
21.8 總結689
術語回顧690
實踐習題690
習題691
工具691
延伸閱讀692
參考文獻692
第22章 並行和分佈式查詢處理694
22.1 概述694
22.2 並行排序695
22.2.1 範圍分區排序695
22.2.2 並行的外排序-歸並696
22.3 並行連接697
22.3.1 分區連接697
22.3.2 分片-復制連接698
22.3.3 處理並行連接中的偏斜700
22.4 其他運算700
22.4.1 其他關系運算700
22.4.2 map和reduce操作701
22.5 查詢計劃的並行執行703
22.5.1 操作間並行703
22.5.2 交換算子模型705
22.5.3 情況匯總706
22.5.4 查詢計劃中的容錯708
22.6 共享內存體系結構上的查詢處理710
22.7 並行執行的查詢優化711
22.7.1 並行查詢計劃空間712
22.7.2 並行查詢計算的代價712
22.7.3 選擇並行查詢計劃713
22.7.4 數據托管714
22.7.5 物化視圖的並行維護715
22.8 流數據的並行處理716
22.8.1 元組的路由716
22.8.2 流運算的並行處理718
22.8.3 流數據的容錯719
22.9 分佈式查詢處理720
22.9.1 來自多個數據源的數據集成720
22.9.2 模式和數據集成721
22.9.3 跨多個數據源的查詢處理723
22.9.4 分佈式目錄系統726
22.10 總結727
術語回顧728
實踐習題729
習題730
工具731
延伸閱讀731
參考文獻732
第23章 並行和分佈式事務處理734
23.1 分佈式事務734
23.1.1 系統結構735
23.1.2 系統故障模式736
23.2 提交協議736
23.2.1 兩階段提交736
23.2.2 提交期間的阻塞避免740
23.2.3 事務處理的可選模型741
23.3 分佈式數據庫中的並發控制743
23.3.1 封鎖協議744
23.3.2 死鎖處理744
23.3.3 租賃746
23.3.4 基於時間戳的分佈式協議747
23.3.5 時間戳的產生747
23.3.6 分佈式時間戳排序748
23.3.7 分佈式有效性檢查749
23.4 復制750
23.4.1 副本一致性750
23.4.2 使用副本的並發控制751
23.4.3 故障處理753
23.4.4 重構和重組755
23.5 擴展的並發控制協議756
23.5.1 多版本2PL和全局一致性時間戳756
23.5.2 分佈式快照隔離757
23.5.3 聯邦數據庫系統中的並發控制758
23.6 具有弱一致性級別的復制759
23.6.1 用一致性換取可用性759
23.6.2 異步復制760
23.6.3 異步視圖維護762
23.6.4 檢測不一致性更新764
23.6.5 解決沖突的更新765
23.6.6 使用默克爾樹來檢測集合之間的差異766
23.7 協調器的選擇768
23.7.1 備份協調器768
23.7.2 選舉協調器769
23.8 分佈式系統中的共識771
23.8.1 問題概述771
23.8.2 Paxos共識協議772
23.8.3 Raft共識協議774
23.8.4 使用復制狀態機的容錯服務777
23.8.5 使用共識的兩階段提交779
23.9 總結779
術語回顧781
實踐習題781
習題783
延伸閱讀783
參考文獻784
第九部分 附錄
附錄A 詳細的大學模式788
第十部分 中文在線章節一
第24章 高級索引技術
第25章 高級應用開發
第26章 區塊鏈數據庫
索引
第十一部分 英文在線章節二
第27章 形式關系查詢語言
第28章 高級關系數據庫設計
第29章 基於對象的數據庫
第30章 XML
第31章 信息檢索
第32章 PostgreSQL
作者介紹
Abraham Silberschatz
於紐約州立大學石溪分校獲得博士學位,現為耶魯大學計算機科學系Sidney J. Weinberg教授,
曾任貝爾實驗室信息科學研究中心副主任。他是ACM會士、IEEE 會士以及康涅狄格科學與工程學會的成員,獲得了48項專利和24項授權。他還是教科書《操作系統概念》的作者。
Henry F. Korth
於普林斯頓大學獲得博士學位,現為理海大學計算機科學與工程系教授和計算機科學與商業項目聯合主任,