什麼是數據庫的ACID測試?

        鑽石顯然是十分貴重的東西,正因爲貴重,所以我們會嚴肅的區分真品和膺品。確定鑽石是真是假的一個簡單而(至少在電影裏)流行的測試是讓它在一片玻璃上滾。因爲鑽石是衆所周知最堅硬的材料,真正的鑽石很容易切割玻璃表面;而贗品,尤其是用玻璃本身製作的贗品,則無法做到。
        對軟件開發人員來說,數據庫也有這麼貴重。如果使用數據庫的話,需要確保它安全存儲數據並允許您將來檢索數據。您還希望數據庫允許多個程序使用數據庫而不會相互干擾。爲了演示,假設您擁有一個銀行。銀行的數據庫必須具備下列功能:
    • 安全存儲合適的數據
    • 快速檢索合適的數據
    • 支持多個並行的用戶會話
        這些任務可以合稱爲 ACID 測試;ACID 是 Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)和 Durability(持久性)的縮略詞。 
 
        原子性 指數據庫操作可以組合到一起,當作單個單元處理。 

        一致性 保證此單個單元(或事務)中的所有操作要麼都成功執行,要麼都不執行。換句話說,數據庫不能處於未完成狀態。要了解這些特徵爲何如此重要,可考慮這樣一個銀行事務:即錢從儲蓄帳戶轉到支票帳戶。如果在將錢從儲蓄帳戶減去之後、加到支票帳戶之前,轉帳處理失敗,那麼您就會變窮,而銀行將會有一個憤怒的(前)客戶!原子性使得這兩個操作 —— 從儲蓄帳戶減錢和向支票帳戶加錢 —— 被當作單個事務進行處理。一致性保證事務中的這兩個操作同時成功或同時失敗。這樣,您的錢就不會丟失了。

        隔離性 指獨立的數據庫事務集合以不相互衝突的方式執行。仍使用這個銀行類比,考慮兩個客戶同時在帳戶之間轉移資金。數據庫必須分別跟蹤兩個轉帳;否則,資金可能進入錯誤的帳戶,而銀行可能得多兩個憤怒的(前)客戶。

        持久性 保證數據庫是安全的,不會異常終止。當電源斷電時,如果電視或計算機不工作,這可能是小麻煩,但同樣的事情對於數據庫來說就不一樣了。如果銀行計算機在轉移資金時掉電,導致交易丟失,您就不會是個快樂的客戶了。持久性保證如果數據庫在資金轉移期間異常終止,則當數據庫重新啓動時,它將能夠恢復交易並繼續正常的操作。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章