如果資料庫符合ACID標準, 那意味著什麼?
Context:在電腦科學中,ACID (原子性,一致性,隔離性,耐用性) 是一組資料庫事務的屬性,旨在保證資料有效性,儘管存在錯誤,電源故障和其他意外事件. 在資料庫中,滿足 ACID 屬性的資料庫操作序列 (可以被視為資料上的單個邏輯操作) 被稱為事務. 例如,從一個銀行賬戶轉移到另一個銀行賬戶的資金,即使涉及多次變化,如扣除一個賬戶並抵記另一個賬戶,也是一個交易.  1983年,Andreas Reuter和Theo Härder創造了ACID的縮寫,基於吉姆·格雷的早期工作,在描述交易概念時,他命名了原子性,一致性和耐用性,但不是隔離. 這些四個屬性是交易正規化的主要保證,它影響了資料庫系統的許多發展方面.  根據Gray和Reuter的說法,IBM資訊管理系統早在1973年就支援了ACID交易 (儘管這個縮寫是後來建立的).  原子性 主要文章:原子性 (資料庫系統) 交易通常由多個宣告組成. 原子性保證每筆交易都被視為一個單一的"單位",它要麼完全成功,要麼完全失敗:如果構成交易的任何宣告都無法完成,整個交易將失敗,資料庫將保持不變. 一個原子系統必須保證在每一個情況下的原子性, 包括電源故障,錯誤和崩<unk>. 原子性保證可以防止資料庫的更新只發生部分更新,這可能會比直接拒絕整個系列帶來更大的問題. 因此,該交易無法被其他資料庫客戶端觀察到正在進行. 在某個時刻,它還沒有發生,在下一個時刻,它已經完全發生了 (或者如果交易正在進行中被取消,就什麼都沒有發生).  一致性 主要文章:資料庫系統的一致性 一致性確保一個事務只能將資料庫從一個一致狀態帶到另一個狀態,保留資料庫不變數:任何寫入資料庫的資料必須根據所有定義的規則有效,包括約束,級聯,觸發器和任何組合. 這可以防止資料庫被非法交易破壞. 引用完整性保證了主鍵與外來鍵之間的關係.  隔離 主要文章: 隔離 (資料庫系統) 交易通常同時執行 (例如,多個交易同時讀取和寫入表). 隔離確保交易的併發執行使資料庫處於同樣的狀態,如果這些交易被順序執行,那麼資料庫就會得到相同的狀態. 隔離是併發控制的主要目標;根據所使用的隔離水平,不完整交易的影響可能無法被其他交易看到.  耐久性 主要文章: 耐用性 (資料庫系統) 永續性保證,一旦交易被承諾,即使發生系統故障 (例如,停電或崩<unk>),它也將繼續被承諾. 這通常意味著完成的交易 (或其效應) 記錄在非易失性記憶體中.
簡稱ACID的意思是原子性,一致性,隔離性和耐久性. 原子性意味著行動要麼完全發生,要麼根本沒有發生;沒有部分寫入或只有部分行動完成的情況. 對於資料庫來說,這意味著如果資料在單個事務中被寫入,那麼該事務要麼完全完成,要麼完全失敗,沒有資料留在部分或損壞的狀態. 一致性意味著交易將狀態從一個有效狀態轉移到另一個有效狀態, 無法進入無效狀態. 隔離意味著同一資料庫的多個讀/寫器不會相互干擾,並且可以不用擔心發生另一個動作的影響. 永續性意味著狀態在故障和關機中被保留,例如狀態被永久儲存.