Acid

你能從 ACID 中刪除一致性嗎?

  • March 24, 2014

在他的“數據庫系統簡介”一書中,CJDate 寫了一個關於 ACID 原則的章節,稱為“Dropping ACID”。在本章中,他將正確性(一致性)稱為“本質上毫無意義”,而其他原則至多稱為“迫切需要”。

這本書是 2004 年出版的,無論我在網際網路上的任何地方,我都將 ACID 原則視為 RDBMS 應用程序程式的指導方針。這是否意味著 Date 對 ACID 的想法沒有被接受?或者從理論的角度來看,ACID 不像閱讀有關數據庫程式的 Internet 文件時那樣強制性?

我希望我的問題有意義並且在正確的論壇中。

書的內容

作者從非常理論的角度分析了ACID的概念。

關鍵部分可能是本章最後一段的第一句話:

總的來說,我們得出的結論是,從實用的角度來看,交易概念比從理論的角度來看更重要。

另一個重要部分是他介紹了“多重賦值”運算符(第 487 頁),他將其用作解決實際 DBMS 通過支持事務處理的一些問題的解決方案。此操作似乎不適用於MySQLOracleMSSQL。(可以用一個查詢更新多個表。)

他的陳述是:如果我們有這個多重賦值運算符,就不需要對約束進行延遲檢查,並且應該立即應用,而不是在事務結束時應用。後者導致 ACID 的C無用,因為數據庫總是一致的(如果 C 代表一致性)或者它的正確性是不可執行的(如果 C 代表正確性)。

關於的解決方案,他聲稱這應該意味著所有事務都應該完全不知道其他事務可能正在執行。這很可能是不可行的。他進一步指出,大多數 DBMS 都提供“隔離級別”設置,從而破壞了這一概念的基礎。

如果支持嵌套事務,他所寫的持久性只能適用於最外層事務。

根據他的說法,只需要交易,因為需要交易。如果多重賦值運算符可作為原子使用,則不需要原子事務。

帶走什麼

這是關於 ACID 概念的非常基本的討論。不判斷他的批評是否正確,有一個基於事務的 DBMS 活生生的景觀。

CJ Date 自己寫道:“我們現在對這項研究所基於的一些假設有了更好的理解”。這意味著它是基本方面之一,在動態 DBMS 中不能輕易改變。刪除事務並推入原子多重賦值運算符,沒有企業會想要更新它的架構,因為這是很多變化。

因此,您已經閱讀了一個理論章節,該章節宣稱如何從概念上改進 DBMS 的屬性,這將從根本上消除一些問題。但僅僅因為某些東西可能更優越,它不會立即在實踐中使用。

你基本上已經到達了一個純粹理論觀點的人與實際世界之間的邊界,在這個世界中,不僅僅是理論,而是一個必須環繞的現有世界。

引用自:https://dba.stackexchange.com/questions/61628