事務處理
事務處理 Transaction Processing
通常在
資料庫系統中,
事務是工作的離散單位。例如,一個資料庫事務可以是修改一個用戶的帳戶平衡或庫存項的寫操作。在線上事務處理系統(OLTP)實時地採集處理與事務相連的數據以及共享資料庫和其它檔案的地位的變化。在在線上事務處理中,事務是被立即執行的,這與批處理相反,一批事務被存儲一段時間,然後再被執行。大多數批處理(例如賬目交換)是在夜間進行的。OLTP的結果可以在這個資料庫中立即獲得,這裡假設這些
事務可以完成。
在線上事務處理以實時的方式發生。民航定票系統和銀行ATM機是
在線上事務處理系統的例子。
類型
語句 它在某時完成對一個資料庫進行的處理。
工作單元 它包括在一個資料庫上執行的多條語句。
工作分散式單元 它包括在多個資料庫上執行的多條語句,其中在一個時間,每個資料庫上執行一條語句。
分散式請求 在多個資料庫上執行的多條語句,其中,在一個時間,每個資料庫上有多條語句執行。
在單一用戶、單一資料庫環境下執行
事務是簡單的,這是因為沒有衝突問題或對資料庫間同步的需求。在分散式環境下,維護多個資料庫的完整性是另外一種問題。傳統上,大多數
在線上事務處理系統在
大型計算機系統上實現,這是由於它的操作的複雜性,以及需要快速輸入/輸出、禁止和管理的原因。如果一個
事務必須在多個場地進行修改,那么就需要管理機制來防止重寫數據並提供同步。其他的需求包括具有卷回失效
事務的能力、提供安全性特徵,以及如果需要,提供
數據恢復的能力。這是通過一個事務處理監督器來處理的。這個監督器保證了
事務是完全完成的或是進行卷回的,因而就可以保證資料庫狀態的正確性。
在一個分散式環境下,寫操作經常並行地在多個
資料庫伺服器上發生。這樣的並發
事務處理需要一個“卷回”機制,以保證在一次寫操作中系統失效的情況下,仍保證資料庫的完整性。
事務要么一起確認,要么放棄。如果一個或多個與
事務有關的系統回響不一致,這意味著系統或通信可能出現了故障,因而就會放棄一個事務。
可以看出,當多個用戶試圖同時改變數據的同一塊時,就出現了衝突問題。另外,對多個資料庫的寫入操作必須進行同步處理,並且必須保證這個寫入已經確實被所有的資料庫處理完畢了。需要一個監督程式來保證數據的完整性。對在分散式環境下的事務處理有四種需求,聯合起來稱為“ACID”。
ACID
原子性(atomicity)定義工作的獨立單元。如果一個
事務是分布的,所有影響分離地點數據的子事務都必須象一個事務那樣被一起執行。為了保持在多個地點數據的一致性,需要使用下面就將介紹的雙階段認可過程。
一致性(consistency) 一致性基本上是一種資料庫從一個狀態變到同等的另一個狀態的需求。
事務監督器必須檢驗所有被影響的數據都是一致的。
孤立性(isolation)
事務必須被孤立地執行直到完成,執行期間不受到其它事務的影響。
持續性(durability) 這個性質是與
事務的最終確認一起進行的。一旦一個
事務被檢驗為對所有受影響的系統都是正確的,它就被認可並且不再需要卷回。
雙階段提交
Two-Phase Commit雙階段提交
事務處理的特徵是,當事務沒有完成時(例如,由於沒有足夠的資金或缺少擔保,或由於電源失效或通信鏈路失效而沒有完成時),具有卷回這個事務的能力。一個
事務要么被全執行完畢,要么被卷回,於是在被卷回時它又返回了這個事務前的狀態。
事務監督器是一個監督執行過程的程式。當用戶執行一個
事務時,就對資料庫進行了一些改變。如果這個用戶想放棄這個
事務,事務監督器保證所有被影響的資料庫返回它們在這個事務前的狀態。
在分散式環境,
事務處理導致了許多複雜性。用戶可能需要訪問多個不同地點的資料庫,並且同時對多個資料庫進行修改。這些修改必須是相互一致的。例如,如果在一個銀行的多個支行保持了這個銀行的帳戶平衡,而出納對一個顧客的帳戶進行了修改,那么就必須同時在所有地點進行這一改變。如果在這個
事務期間,到任何一個支行辦公室的計算機鏈路失效了,這個事務監督器必須知道這一情況,並通知所有其它支行這個事務沒有完成,並且要求卷回。用
雙階段提交完成這個任務。
雙階段提交不出現故障
雙階段提交是將對數據的寫入分解為兩個階段,每個階段結束都有一個完成的驗證。在下面的步驟中假設在這個
事務中不出現故障:
6.當
事務監督器從所有
資料庫系統接收到數據已經被成功地驗證的回響後,它完成這個事務。
如果這個事務監督器在步驟3和5,從所有
資料庫系統沒有聽到所需回響,這個事務監督器警告系統卷回它們的事務。
公用事務處理系統
下面是一些事務監督器產品,它們可用於不同的分散式環境中:
Encina,它是Transarc公司(Pittsburgh,Pennsylvania)的產品,是一種通過提供
事務起始和終止、
雙階段提交、意外事件處理、恢復和放棄操作,來保證穿越多個平台的數據和資料庫的完整性的在線上事務監督器。EncinaTP監督器是一種基於開放軟體基金會的分散式計算環境的監督器。主要廠商如IBM和Hewlett-Packard計畫使用Encina。
Tuxedo,它是UNIX系統實驗室(Summit,New Jersey)的產品,可以用於協調網路上的修改。它可以在不同系統上
並發運行進程,它可以分布工作負載,並且如果一個系統失效了,還可以保證這個處理進行下去。它最初是AT&T開發的,並由Novell的UNIX系統組推向市場。它在許多不同的計算機系統上運行,並被一些客戶支持,這些客戶包括DOS、OS/2,以及Windows作業系統。
IBM顧客控制系統
IBM顧客控制系統(CICS),是一種在IBM
主機系統上運行的TP監督器。這是一種得到廣泛使用的事務處理系統。它支持分散式環境,並包括一個
事務管理器和事務監督器。CICS為它的AIX/6000實現使用Encina功能。
相關條目
Connectionless and Connection-Oriented Transactions
無連線和面向連線事務;Encina;Tuxedo。