在這個數位化迅速發展的時代,交易處理成為了確保銀行及其他商業交易準確無誤的關鍵技術。交易處理是將信息處理劃分為單個、不可分割的操作單元,稱為交易。每一個交易都必須完整成功或完整失敗;它絕不能部分完成。假設你在網上書店購買一本書,將信用卡上的資金轉換為書本。如果交易的每一環節都順利,則你將收到書籍,而書店則會收到相應的款項。
然而,如果在此交易的過程中出現任何一個環節失敗,整個交易則會失敗,無論你如何嘗試,最終都無法獲得書籍。
這種確保交換平衡和可預測性的技術便是交易處理。它的核心目標是確保,只有當所有操作成功執行時,數據相關的資源才會被永久更新。透過將一組相關操作整合為一個單元,無論整個交易是成功還是失敗,都能簡化錯誤恢復,讓應用程式更為可靠。
交易處理的系統通常包含了用於執行商業日常交易的計算機硬體及軟件。比如,銷售訂單輸入、航空預定、薪資管理、員工記錄、製造和運輸等系統都是交易處理的重要應用。大多數現代交易處理都是互動式的,因此該術語經常被視為與在線交易處理同義。
交易處理旨在通過確保相互依賴的操作要麼全部成功完成,要麼全部成功取消,以維持系統的一致性。以某個典型的銀行交易為例,將700美元從客戶的儲蓄賬戶轉到支票賬戶,這個交易可以分為兩個基本操作:從儲蓄賬戶扣除700美元,並在支票賬戶中增加700美元。如果一項操作成功而另一項失敗,銀行的賬本將無法平衡。
因此,必須確保要麼兩項操作均成功,要麼兩項操作均失敗,從而杜絕整個銀行數據庫的一致性問題。
當某一交易的一些操作成功時,但在其他操作出現錯誤時,交易處理系統能夠「回滾」所有相關操作,這意味著所有操作都不會真正落實,整個系統會恢復到處於一個之前的已知狀態。當所有交易操作都激情成功地完成時,系統將這個交易「提交」,並將所有更改永久儲存到數據庫中,這時交易將無法回滾。這一過程保護了系統免受可能導致部分完成交易的硬體和軟體錯誤。
在現代交易處理中,交易通常會並行發出。如果多個交易試圖同時訪問同一數據庫的部分,可能會產生衝突。舉例來說,若某個客戶的儲蓄賬戶只有150美元,而他同時嘗試將100美元轉賬給其他人,並將另外100美元轉到自己的支票賬戶,則只有其中一項可以成功。不過,迫使交易按順序處理又會效率低下。因此,並行實現的交易處理系統會被編程為保證最終結果是一個無衝突的結果。
這意味著無論任何交易何時被發出,最終的結果將和以任意順序執行的交易相符合,這給我們帶來了新的挑戰與機會。
在交易處理系統中,核心的可靠性屬性由Jim Gray在1970年代後期提出的ACID標準定義,分別為原子性、一致性、隔離性和持久性。這些原則為交易的成功提供了保障:
隨著企業數位化程度的加深,交易處理系統也在持續推陳出新。傳統的交易處理軟件如IBM的信息管理系統,最早可追溯至1960年代,隨著時間推移,許多新技術已經隨之出現。面對更為複雜的分散式客戶端—服務器模型,企業的交易處理系統需不斷演進。隨著要求日益增加的交易頻次,極端交易處理(XTP)的概念隨之出現。
隨著科技的發展,新的挑戰也在不斷出現。銀行如何繼續確保其交易處理系統的安全性與可靠性,將不失為未來的關鍵課題。我們需要思考,持續的交易發展對我們的經濟系統會產生什麼樣的深遠影響?