目錄
第1章 介紹 1
1.1 基礎知識 1
1.1.1 問題 1
1.1.2 什麼是事務處理 2
1.1.3 事務處理應用程序 3
1.1.4 事務程序的主要功能 4
1.2 TP係統的體係結構 5
1.2.1 麵嚮服務的計算 7
1.2.2 硬件的體係結構 9
1.3 原子性、一緻性、隔離性
和持久性(ACID) 10
1.3.1 原子性 10
1.3.2 一緻性 13
1.3.3 隔離性 14
1.3.4 持久性 14
1.4 兩階段提交 15
1.5 事務處理性能 17
1.5.1 TPC-A和TPC-B基準 18
1.5.2 TPC-C基準 20
1.5.3 TPC-E基準 21
1.6 可用性 22
1.7 係統樣式 24
1.7.1 批處理係統 25
1.7.2 實時係統 26
1.7.3 數據倉庫係統 26
1.7.4 其他係統類型 27
1.7.5 為什麼要設計TP係統 28
1.8 TP係統配置 28
1.9 小結 29
第2章 事務處理抽象 31
2.1 介紹 31
2.2 事務 31
2.2.1 集閤事務括號 32
2.2.2 事務標識符 34
2.2.3 鏈式事務 35
2.2.4 麵嚮對象編程中的
事務括號 35
2.2.5 嵌套事務 37
2.2.6 異常處理 38
2.2.7 保存點 39
2.2.8 使用保存點支持嵌套事務 40
2.3 進程和綫程 41
2.3.1 為什麼需要綫程 41
2.3.2 實現綫程 43
2.4 遠程過程調用 46
2.4.1 事務RPC 48
2.4.2 綁定客戶機和服務器 48
2.4.3 RPC走查 52
2.4.4 RPC的係統特性 54
2.4.5 如何比較RPC係統 57
2.5 共享狀態 57
2.5.1 事務上下文 58
2.5.2 會話 59
2.5.3 無狀態服務器 60
2.5.4 有狀態應用程序 62
2.6 可伸縮性 64
2.6.1 擴展服務器 64
2.6.2 擴展係統 66
2.7 小結 70
2.7.1 事務括號 70
2.7.2 進程和綫程 71
2.7.3 遠程過程調用 71
2.7.4 共享狀態 72
2.7.5 可伸縮性技術 72
第3章 事務處理應用程序體係結構 73
3.1 介紹 73
3.2 應用程序體係結構 74
3.2.1 多層體係結構 75
3.2.2 麵嚮服務的體係結構 77
3.2.3 麵嚮對象設計 77
3.2.4 簡單請求 78
3.3 前端程序 78
3.3.1 前端程序層次 78
3.3.2 使用錶單和菜單收集輸入 79
3.3.3 構造請求 82
3.3.4 記錄 83
3.3.5 Web服務器 83
3.3.6 Web服務器的狀態管理 85
3.3.7 認證與加密 86
3.4 請求控製器 88
3.4.1 指定請求控製器功能 88
3.4.2 事務括號 89
3.4.3 請求完整性 89
3.4.4 進程結構 90
3.4.5 會話結構 91
3.4.6 安全性 91
3.5 事務服務器 91
3.6 事務中間件 93
3.7 數據庫服務器與事務中間件 95
3.8 小結 97
第4章 隊列化的事務處理 99
4.1 為什麼使用隊列 99
4.2 隊列事務處理模型 102
4.2.1 從服務器的角度看排隊 102
4.2.2 從客戶端的角度看排隊 102
4.3 客戶端恢復 104
4.4 處理不可撤消的操作 107
4.5 隊列管理器 108
4.5.1 對隊列消息的操作 109
4.5.2 路由選擇 111
4.5.3 調度器 112
4.6 發布-訂閱 112
4.7 其他麵嚮消息的中間件 113
4.7.1 基於代理的體係結構 114
4.7.2 基於總綫的體係結構 114
4.7.3 比較代理與總綫 115
4.8 隊列式産品和標準 115
4.8.1 IBM的WebSphere MQ 116
4.8.2 Oracle Streams AQ 118
4.9 小結 119
第5章 業務流程管理 121
5.1 介紹 121
5.2 業務流程定義 123
5.3 業務流程的執行 124
5.4 事務特性 126
5.4.1 隔離性 127
5.4.2 原子性 127
5.4.3 持久性 128
5.5 使流程狀態持久 129
5.5.1 使用專用的運行時係統 129
5.5.2 使用隊列請求 130
5.5.3 僞會話 131
5.5.4 使用日誌 132
5.6 業務流程的其他模型 133
5.7 産品和標準 135
5.7.1 Web服務業務流程
執行語言 135
5.7.2 SQL Server服務代理 137
5.8 小結 138
第6章 鎖定 141
6.1 介紹 141
6.1.1 正確性和兩階段規則 142
6.1.2 事務隻通過讀取
寫入來交互 143
6.1.3 保持事務握手 144
6.1.4 自動鎖定 145
6.2 實現 146
6.2.1 鎖管理器 146
6.2.2 鎖的設置和釋放 148
6.2.3 粒度 149
6.2.4 多粒度鎖定 149
6.3 死鎖 150
6.3.1 死鎖預防 151
6.3.2 死鎖檢測 151
6.3.3 選擇犧牲品 152
6.3.4 分布式死鎖檢測 153
6.4 性能 154
6.4.1 鎖轉換 154
6.4.2 鎖抖動 155
6.4.3 鎖定性能的數學模型 158
6.5 熱點 159
6.5.1 延遲操作直到提交 160
6.5.2 樂觀方法 161
6.5.3 批處理 162
6.5.4 分區技術 163
6.6 查詢-更新問題 163
6.6.1 數據倉庫 164
6.6.2 隔離度 164
6.6.3 多版本數據 167
6.6.4 多版本實現的細節 168
6.7 避免幻象 169
6.8 樂觀並發控製 171
6.9 B-樹鎖定 172
6.9.1 B+樹 173
6.9.2 B+樹的插入 174
6.9.3 樹鎖定 176
6.9.4 B-鏈接優化 177
6.10 多粒度鎖定 179
6.11 嵌套事務的鎖定 182
6.12 小結 183
6.13 附錄:基本的可串行
性理論 184
6.13.1 曆史等價 184
6.13.2 可串行性定理 185
6.13.3 兩階段鎖定定理 185
第7章 係統恢復 187
7.1 係統故障的原因 187
7.1.1 強化環境 188
7.1.2 係統管理 189
7.1.3 硬件 189
7.1.4 軟件 190
7.2 係統恢復的模型 190
7.2.1 檢測進程故障 190
7.2.2 客戶端恢復 192
7.2.3 服務器恢復 193
7.2.4 基於檢查點的恢復 193
7.2.5 基於事務的服務器恢復 195
7.2.6 無狀態服務器 195
7.3 數據庫恢復概述 197
7.3.1 故障類型 197
7.3.2 恢復策略 198
7.4 係統模型 198
7.4.1 鎖定假設 198
7.4.2 頁麵粒度操作 200
7.4.3 存儲模型 201
7.4.4 日誌 202
7.5 數據庫恢復管理器 204
7.5.1 實現異常終止 204
7.5.2 實現提交 206
7.6 影式分頁算法 207
7.7 基於日誌的數據庫恢復算法 210
7.7.1 實現提交 210
7.7.2 實現異常終止 211
7.7.3 實現重啓 212
7.8 在基於日誌的算法中
優化重啓操作 214
7.8.1 模糊檢查點技術 214
7.8.2 操作日誌化 215
7.8.3 用戶技巧 219
7.9 媒介恢復 220
7.9.1 鏡像硬盤 220
7.9.2 歸檔 222
7.10 小結 224
第8章 兩階段提交 227
8.1 介紹 227
8.2 兩階段提交協議 228
8.2.1 假設 228
8.2.2 準備就緒 229
8.2.3 協議 229
8.2.4 性能 230
8.2.5 阻塞 231
8.3 故障處理 232
8.4 優化和變化 235
8.4.1 再感染 236
8.4.2 協調轉移 237
8.4.3 階段零 237
8.4.4 推定異常終止 238
8.4.5 隻讀事務 239
8.4.6 閤作終止協議 240
8.5 進程構成 241
8.5.1 獨立事務管理器 241
8.5.2 列入事務中 242
8.5.3 進程樹模型 244
8.6 用戶一覽錶 245
8.7 小結 246
第9章 復製 249
9.1 介紹 249
9.2 復製的服務器 249
9.2.1 主–備份模型 249
9.2.2 復製資源 251
9.2.3 復製具有共享資源的
服務器 252
9.3 在復製數據和更新間同步 252
9.3.1 單副本可串行性 252
9.3.2 復製更新 253
9.3.3 復製請求 255
9.4 單主站主副本復製 256
9.4.1 正常的操作 256
9.4.2 故障和恢復 259
9.4.3 具有多個從副本的
主副本的恢復 261
9.4.4 一緻性、可用性和
分區兼容性 265
9.5 多主副本 266
9.5.1 分區操作可能十分有用 266
9.5.2 多主的更新傳遞 266
9.5.3 非盲更新 268
9.5.4 使用版本矢量檢測
復製衝突 269
9.5.5 衝突解決方案 271
9.5.6 維護版本矢量 271
9.5.7 版本矢量的更新規則 272
9.5.8 簡化的版本矢量更新規則 273
9.5.9 示例迴顧 275
9.5.10 再次討論一緻性、
可用性和分區兼容性 276
9.5.11 Microsoft Sync
Framework 277
9.6 其他復製技術 278
9.7 數據共享係統 278
9.7.1 鎖定 279
9.7.2 高速緩存 279
9.7.3 記入日誌 282
9.8 小結 283
第10章 事務中間件産品和標準 287
10.1 介紹 287
10.1.1 事務中間件的發展趨勢 287
10.1.2 事務中間件編程模型 288
10.1.3 Java EE與
.NET Framework 288
10.2 Web瀏覽器前端程序 289
10.3 .NET Framework 292
10.3.1 開發前端程序 293
10.3.2 開發請求控製器和
事務服務器 295
10.3.3 REST/HTTP支持 300
10.3.4 WCF部署選項 300
10.3.5 使用System.Transactions
進行事務管理 300
10.3.6 顯式編程模型 301
10.3.7 與遺留TP監視器
的集成 303
10.4 Java企業版 303
10.4.1 開發前端程序 305
10.4.2 REST支持 307
10.4.3 開發請求控製器和
事務服務器 307
10.4.4 使用Java進行
事務管理 311
10.4.5 與遺留TP監視器
的集成 314
10.4.6 Spring事務 315
10.5 麵嚮服務的體係結構 317
10.5.1 基於Web服務的SOA 318
10.5.2 基於REST/HTTP
的SOA 320
10.6 持久抽象機製 321
10.6.1 ODBC和JDBC 322
10.6.2 存儲過程 324
10.6.3 JPA 326
10.6.4 ADO .NET和
ADO .NET實體框架 328
10.7 遺留的TP監視器 330
10.7.1 CICS事務服務器 331
10.7.2 IMS 334
10.7.3 Tuxedo 337
10.7.4 ACMS 340
10.7.5 Pathway TS/MP 343
10.8 TP標準 346
10.8.1 Web服務-事務 347
10.8.2 XA接口 349
10.8.3 對象事務服務 350
10.8.4 JTA 351
10.8.5 服務組件體係結構 352
10.8.6 OSGi聯盟 352
10.8.7 高級消息隊列協議 353
10.9 小結 353
第11章 未來的發展趨勢 357
11.1 介紹 357
11.2 雲計算 357
11.3 可伸縮分布式計算 359
11.4 存儲技術 361
11.5 流和事件處理 362
11.6 小結 362
縮略語錶 365
參考文獻說明 373
參考文獻 381
· · · · · · (
收起)