2009-06-16 113 views
18

我正在爲數據庫的各種ACID屬性尋找一個真實世界的例子。什麼是ACID的真實例子?

+1

這聽起來像家庭作業。 – 2009-06-16 02:49:25

+0

和它沒有編程相關 – 2009-06-16 04:02:34

回答

32
  • 原子性 - 從一個帳戶轉帳到另一涉及從第一賬戶和第二存款操作作出退出操作的交易。如果存款操作失敗,您不希望撤回操作發生。

  • 一致性 - 數據庫跟蹤支票賬戶可能只允許唯一的檢驗數爲每個交易

  • 隔離存在 - 出納找了一個平衡點,必須從涉及併發事務隔離從同一個帳戶退出。只有在取款交易成功並且出納員再次查看餘額時,纔會報告新餘額。

  • 耐久性 - 系統崩潰或任何其他故障不能讓失去交易的結果或數據庫的內容。通常可以通過單獨的事務日誌來實現持久性,這些事務日誌可以「重新創建」來自某個選定時間點的所有事務(如備份)。

(來自現實世界的例子總結勒dorfier的link

2

以任何給定的Perl腳本來操縱關係數據庫中的數據,在其頂部放置一個「BEGIN」,在底部放置一個「COMMIT」,並且您知道perl腳本已經工作,根本不會影響你的數據庫(除非你在mysql上插入DDL語句)。在設計強大的軟件(以及我最喜歡的屬性)時,Atomicity功能非常強大,可以保證這一點。

8

*原子性 - 從用戶的角度來看,一個事務要麼完全完成(即所有相關的數據庫表更新)或根本沒有。如果發生錯誤或中斷,則到該點爲止的所有更改都將被撤消。

•一致性 - 數據庫中的所有完整性條件都與每個事務一起維護,從而將數據庫從一個一致狀態轉換爲另一個一致狀態。

•隔離 - 每個事務都與其他事務隔離,因此每個事務只能訪問屬於一致數據庫狀態的數據。

•耐用性 - 如果事務已完成報告給用戶,則數據庫的結果更改會在後續硬件或軟件故障中存在。

相關問題