Transaction Processing

Transaction Processing

在資料庫系統中,事務是工作的離散單位,在線上事務處理系統(OLTP)實時地採集處理與事務相連的數據以及共享資料庫和其它檔案的地位的變化。在在線上事務處理中,事務是被立即執行的,這與批處理相反,一批事務被存儲一段時間,然後再被執行。

Transaction Processing

事務處理 Transaction Processing

介紹

通常在資料庫系統中,事務是工作的離散單位。例如,一個資料庫事務可以是修改一個用戶的帳戶平衡或庫存項的寫操作。在線上事務處理系統(OLTP)實時地採集處理與事務相連的數據以及共享資料庫和其它檔案的地位的變化。在在線上事務處理中,事務是被立即執行的,這與批處理相反,一批事務被存儲一段時間,然後再被執行。大多數批處理(例如帳目交換)是在夜間進行的。OLTP的結果可以在這個資料庫中立即獲得,這裡假設這些事務可以完成。在線上事務處理以實時的方式發生。民航定票系統和銀行ATM機是在線上事務處理系統的例子。

例子

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

相關條目:

Connectionless and Connection-Oriented Transactions無連線和面向連線事務EncinaTuxedo

相關詞條

相關搜尋

熱門詞條

聯絡我們