- Transaction(交易)
- 一組共同構成系統狀態一致轉換的動作,且具備原子性與持久性:要嘛所有動作都完成而交易提交,要嘛所有效果都不留存而交易中止。Gray 用 consistency、atomicity、durability 三個性質來定義它,全文從未使用 isolation 這個詞。
- Real action(真實動作)
- 一旦做了就無法撤銷的動作,例如提交本身、吐鈔、或移動飛機襟翼。real 動作必須延後到提交才執行,因此一開始只產生 redo 日誌記錄,等提交決定確立後才由復原系統據以第一次真正執行。
- Compensating transaction(補償交易)
- 在事後另外執行、用來反轉或調整某個已提交交易效果的交易,因為已提交的交易不可撤銷。Gray 的靈感來自契約法,也來自複式簿記:發現錯誤時是加註並補上一筆沖銷分錄,而不是去塗改帳簿。
- Fail-fast module(快速失效模組)
- 會自我檢查的元件,要嘛正確運作,要嘛偵測到自身故障後什麼都不做,絕不默默做錯事。因為系統是由不到約 100 個這種平均故障間隔以月計的模組階層式組成,把它們雙工再配上快速備品,就能得到以世紀計的系統平均故障間隔。
- Time-domain addressing(時間域定址)
- 一種實作風格:物件從不被更新,只被「演進」,位址是名稱加上時間,每個實體持有一串帶有效區間的值。也稱為 version-oriented system;Gray 認為稱之為 immutable object system 並不恰當,因為物件的值確實會隨時間改變。
- DO-UNDO-REDO 協定
- 規定執行一個 protected 動作時,除了做動作本身,還必須產出足以撤銷它與重做它的日誌記錄,而 unprotected 動作與純讀取則不必產生任何記錄。撤銷時沿著該交易串接的日誌記錄往回走;重做則把已提交的動作往前重放到一份舊的穩定副本上,以重建遺失的狀態。
- Restartability(可重啟性)
- 指對一個已經被撤銷或已經被重做的物件再套用一次 UNDO 或 REDO,該物件不會被改變;之所以必要,是因為故障也可能發生在復原處理本身進行的當下。實作上是替磁碟頁面標版本號、替 session 標序號,號碼已符合就直接跳過該操作。
- Two-phase commit(兩階段提交)
- 一種提交協定:協調者先要求每個參與者 prepare,回答同意的參與者就交出單方面中止的權利;若全體同意,協調者廣播 commit,否則交易中止。它的目的是把節點不被允許單方面中止的那段時間壓到最短。
- Save point(保存點)
- 交易宣告的中間狀態,出事時程式與資料可以被重設到這裡,而不必整個中止。Gray 提出 save point 是為了讓進行中的長時間交易能跨越系統重啟,因為重啟時丟掉 100 筆交易只是令人不快,丟掉 10,000 筆則完全無法想像。