索引 / 001 ZH-TW
Transaction Processing: Concepts and Techniques(交易處理:概念與技術) cover

電腦科學

電腦科學

Transaction Processing: Concepts and Techniques(交易處理:概念與技術)

Jim Gray; Andreas Reuter

英文原名: Transaction Processing: Concepts and Techniques

吉姆・葛雷與安德烈亞斯・羅伊特討論如何打造交易處理系統的經典之作。書中先說明具備原子性與持久性的交易背後的觀念,再介紹實現這些性質的技術,從鎖定、日誌到復原與容錯,並附上詳細的虛擬碼與實際系統的介紹。

需要的基礎: 需修過資料庫系統課程與作業系統課程;並假定熟悉並行處理與檔案系統。

難度等級
高級
學術層次
高級
databasestransaction processingconcurrency controlrecoveryfault tolerancemonograph

01 / 導讀

導讀

引用

Gray, J., & Reuter, A. (1992). Transaction Processing: Concepts and Techniques. Morgan Kaufmann.

章節概要

全書共十九章,分為八個部分:交易處理基礎、容錯基礎、面向交易的計算、併發控制、恢復、作為示例資源管理器的交易型檔案系統、系統概覽,以及附錄(參考文獻、資料結構與介面、術語表)。書首有 Bruce Lindsay 所寫的前言和一篇序言。第 1–15 章每章末尾都有習題與答案,其中多數還附有歷史註記。

第一部分:交易處理基礎(第1–2章)

第 1 章“引言”回顧歷史,並追問什麼是交易處理系統,分別從終端使用者、管理員或操作員、應用設計者和資源管理器的角度來看,列出核心服務,以及涵蓋應用開發、資源庫、TP 監控器、資料通訊、資料庫、執行操作、教育與測試的功能清單。第 2 章“電腦科學基本術語”提供後文要用的詞彙:硬體(儲存器、處理器、通訊、體系結構)、地址空間、程序、執行緒、訊息與會話、客戶端與伺服器、命名、認證與授權、檔案與 SQL、軟體效能,以及 LU6.2、OSI-TP 與 X/Open DTP 等交易處理標準。

第二部分:容錯基礎(第3章)

第 3 章“容錯”涉及定義(故障、失效、可用性、可靠性)、對停機事件的實證研究、典型模組失效率、N 重冗餘與快速失效模組等硬體方法,以及為什麼軟體是主要問題。隨後講交易與軟體容錯、用於高可用儲存的程序—訊息—儲存模型、程序與訊息、一般原則,以及題為“系統錯覺”的一則警示故事。

第三部分:面向交易的計算(第4–6章)

第 4 章“交易模型”由原子動作和平面交易出發,依次講控制範圍、描述模型的記號、帶儲存點的交易、鏈式交易、巢狀交易、分散式與多級交易、開放巢狀交易與長交易(包括 saga)以及“奇異”模型。第 5 章概述交易處理監控器:其作用、結構、交易型遠端過程呼叫以及程式設計風格示例。第 6 章“交易處理監控器”進入內部:資源管理器介面、監控器的資料結構、沿交易型 RPC 路徑的導覽、請求與響應佇列、負載均衡、認證與重啟處理。

第四部分:併發控制(第7–8章)

第 7 章“隔離概念”篇幅很長:隔離的依賴模型、隔離定理、隔離度與 SQL、幻象與謂詞鎖、粒度鎖與鍵範圍鎖、加鎖啟發式、巢狀交易加鎖、排程與死鎖,以及託管鎖和樂觀鎖等“奇異”方法。第 8 章“鎖的實現”轉向原子機器指令、訊號量、鎖管理器(名字、佇列、資料結構、內部邏輯、鎖升級、重啟)、死鎖檢測,以及並行交易的加鎖。

第五部分:恢復(第9–12章)

第 9 章“日誌管理器”討論日誌表、序號、公共介面、組提交與謹慎寫等實現細節、重啟邏輯和日誌歸檔。第 10 章“交易管理器概念”涵蓋應用介面和資源管理器介面、DO-UNDO-REDO 協議、值日誌、邏輯日誌與物理邏輯日誌、先寫日誌規則、補償記錄以及兩階段提交。第 11 章“交易管理器結構”依次講正常處理、檢查點、系統重啟、資源管理器失效與歸檔恢復。第 12 章“交易管理器高階專題”講異構提交協調者、非阻塞提交、提交轉移、兩階段提交的最佳化以及遠端站點的災難恢復。

第六部分:交易型檔案系統——一個示例資源管理器(第13–15章)

第 13 章“檔案與緩衝區管理”講作為持久儲存基礎的檔案系統、介質與檔案管理以及緩衝區管理。第 14 章“面向元組的檔案系統”講如何把元組對映到頁、元組的物理表示以及檔案組織(入口順序檔案、鍵序檔案、雜湊檔案、聚簇檔案與分割槽檔案)。第 15 章“訪問路徑”講雜湊與 B 樹,包括它們的同步與恢復,附有 B 樹操作的示例實現,還講可擴充套件雜湊、網格檔案和帶孔磚塊 B 樹。

第七部分:系統概覽(第16章)

第 16 章“交易處理系統概覽”介紹 IMS、CICS 與 LU6.2、Guardian 90、DECdta、含 OSI-TP 與 CCR 的 X/Open DTP,以及其他系統(UTM、ADABAS TPF、Encina 和 Tuxedo)。

第八部分:附錄(第17–19章)

參考文獻、資料結構與介面、術語表,之後是索引。

核心概念

第一、二部分:基礎與容錯

  • 交易處理系統:圍繞交易構建的系統,使用者、管理員、應用設計者和資源管理器看到的面貌各不相同。
  • 可用性與可靠性:容錯設計所依據的定義與失效率模型。
  • 快速失效模組與 N 重冗餘:檢測或遮蔽故障的硬體結構。

第三部分:面向交易的計算

  • 平面、鏈式、巢狀與多級交易:各種交易模型,各自由它對儲存點、範圍和提交所施加的規則界定。
  • Saga 與補償:用補償交易處理長時間執行工作的辦法。
  • TP 監控器與交易型 RPC:組織、排程並把資源管理器掛接到交易上的中介軟體。

第四、五部分:併發控制與恢復

  • 隔離與隔離度:基於依賴關係的隔離定義,以及實踐中使用的較弱級別。
  • 粒度鎖與鍵範圍鎖:在多個層次和鍵範圍上加鎖以防止幻象。
  • 先寫日誌與物理邏輯日誌:使重做和撤銷得以成立的日誌規則。
  • 兩階段提交:使分散式計算具有原子性的協議。

第六至八部分

  • B 樹與雜湊作為訪問路徑:查詢元組所用的結構,及其加鎖與恢復。
  • 系統概覽:對 IMS、CICS、Guardian 90、DECdta 與 X/Open DTP 的比較。

評析

優點

  • 以交易為統一框架。 出版社的介紹稱作者把交易作為統一的概念框架,全書結構也印證了這一點:容錯、交易模型、併發控制與恢復是同一論證的四個部分。
  • 實現層面的深度。 第 8、9、11 章考察鎖管理器、日誌管理器和交易管理器的內部,出版社還提到書中用可編譯的 C 程式碼片段演示演算法。
  • 教學輔助。 第 1–15 章每章末尾都有習題與答案,多數還有歷史註記(目錄中均有列出),使這部長篇論述適於自學。
  • 完整的示例資源管理器。 第六部分構建了交易型檔案系統和 B 樹訪問路徑,展示前面的思想如何落到具體的儲存層。

侷限

  • 系統概覽已過時。 第 16 章介紹的是 20 世紀 90 年代初的產品與標準,如 IMS、CICS、Guardian 90 和 DECdta,沒有更晚的系統。
  • 篇幅與專門化。 十六章正文加上對鎖管理器和日誌管理器的詳細論述,使本書成為一部專題專著;課程通常只會指定部分章節。
  • 預設讀者已有基礎。 第 2 章提供了術語,但後面各部分預設讀者學過資料庫課程,並具備一些作業系統背景。

在課程中的定位

本課程中的其他書籍講的是資料庫系統的整體。Silberschatz、Korth 與 Sudarshan 的 Database System Concepts 和 Elmasri 與 Navathe 的 Fundamentals of Database Systems 是內容廣泛的教材,把交易、併發和恢復作為其中的章節;Ramakrishnan 與 Gehrke 的 Database Management Systems 同樣是一部通用教材。Coronel 與 Morris 以及 Hernandez 的書是講設計與使用的較平易讀物。當那些教材中的某一章引出的問題多於它回答的問題時,就該讀 Gray 與 Reuter。

因此,這是第二階段的書:先讀通用教材中有關交易的章節,再用本書第四、五部分了解鎖、日誌、恢復與兩階段提交的全部細節。

如何使用本書

本書適合資料庫與分散式系統方向的研究生,以及構建或調優儲存引擎、資料庫核心或交易監控器的工程師。讀者應已修過資料庫課程,並瞭解作業系統和併發的基礎知識。

實用讀法:

  • 核心: 第 1 章和第 4 章前幾節(交易的詞彙);第 7 章(隔離)和第 9–11 章(日誌、交易管理器、重啟、兩階段提交)。
  • 面向實現者: 第 8 章(鎖的實現)、第 12 章(高階提交專題)以及第 13–15 章(檔案、緩衝區和 B 樹管理)。
  • 可選: 第 3 章(容錯)、第 5–6 章(TP 監控器),以及第 16 章——宜當作歷史概覽,而不是當前產品的指南。

完成每章末尾的習題並對照答案檢查,把書中的 C 程式碼片段當作可以改寫並執行的範例。