大部分關聯式資料庫並不真的支援ACID
大部分關聯式資料庫宣稱與NoSQL的區別是100%支援ACID事務,在現實中,很少有關聯式資料庫包括Oracle能提供正式的ACID保證,即使他們宣傳自己是提供真正ACID。
那麼,誰在撒謊呢?
來自2013年文章When is "ACID" ACID? Rarely. | Peter Bailis認為:
ACID的教科書正式定義隔離是序列化serializability ,即執行一組事務的結果應該相當於這些事務的序列執行,這就意味著每個運算元據庫的事務好像只有它們自己一樣,這能確保資料庫的正確性和一致性,帶有序列化的資料庫(ACID中I)提供了任意讀寫事務並且確保一致性(ACID中的C)或正確性,沒有序列化,ACID(特別是一致性)將無法得到保證。
大部分提供ACID的資料庫並不提供序列化,作者在文章中列出了18種資料庫中預設的只有三個提供序列化(default isolation列),只有9個將序列化作為選項提供(Maximum Isolation列):
那麼,誰在撒謊呢?
來自2013年文章When is "ACID" ACID? Rarely. | Peter Bailis認為:
ACID的教科書正式定義隔離是序列化serializability ,即執行一組事務的結果應該相當於這些事務的序列執行,這就意味著每個運算元據庫的事務好像只有它們自己一樣,這能確保資料庫的正確性和一致性,帶有序列化的資料庫(ACID中I)提供了任意讀寫事務並且確保一致性(ACID中的C)或正確性,沒有序列化,ACID(特別是一致性)將無法得到保證。
大部分提供ACID的資料庫並不提供序列化,作者在文章中列出了18種資料庫中預設的只有三個提供序列化(default isolation列),只有9個將序列化作為選項提供(Maximum Isolation列):
[img index=1]
圖中標註S的表示提供序列化,RC表示read committed; RR表示repeatable read等。
這些關聯式資料庫預設並沒有提供序列化,取而代之的是幾個弱變種,對於一個資料庫來說,沒有理由不支援序列化,我們已經擁有很好的演算法,我們也已經在ACID可擴充套件伸縮方面取得飛躍進步,那麼預設為什麼不提供序列化呢?
一個關鍵原因是效能,序列化隔離級別會限制併發,傳統技術如兩段鎖2PC相比代價又非常昂貴,另外,想同時獲得高可用性和序列化又是不可能的(這些關聯式資料庫即使透過它們現在的弱模型也不能提供高可用性),第三個預設不提供序列化的理由是在弱模型(相對序列化隔離級別低一些的隔離級別)下事務也降低了衝突機率,不太會死鎖。但是,這些好處並不是免費的,在這種弱模型下一致性異常還是不斷呈現上升趨勢。
[該貼被admin於2015-06-28 21:09修改過]
相關文章
- Web Sql 關聯式資料庫WebSQL資料庫
- 關聯式資料庫很快會替代向量資料庫資料庫
- 關聯式資料庫與文件資料庫對比資料庫
- 關聯式資料庫 Query_Execution資料庫
- 事件溯源超越關聯式資料庫 - confluent事件資料庫
- Apache Kafka不是資料庫:資料庫+Kafka=完整ACID - fivetranApacheKafka資料庫
- 事件溯源將顛覆關聯式資料庫! - Remy事件資料庫REM
- 響應式關聯式資料庫處理R2DBC資料庫
- 如何將傳統關聯式資料庫的資料匯入Hadoop?資料庫Hadoop
- 主流關聯式資料庫鎖實現的區別資料庫
- 使用反應式關聯式資料庫連線規範R2DBC操作MySQL資料庫資料庫MySql
- 金融級分散式關聯式資料庫OceanBase 2.2版正式釋出分散式資料庫
- 資料庫系統原理-關聯式資料庫的規範化理論總結資料庫
- 頁面上怎麼從不同資料庫取數並關聯計算?資料庫
- 基於記憶體的關聯式資料庫memsql初探記憶體資料庫SQL
- OceanBase 首席架構師:關聯式資料庫到三代分散式資料庫,我親歷的資料庫演進史架構資料庫分散式
- 陽振坤:分散式技術引領關聯式資料庫發展分散式資料庫
- Java響應式關聯式資料庫多執行緒實現方式Java資料庫執行緒
- 關聯式資料庫的正規化(Normal Form)知識點資料庫ORM
- 海量列式非關聯式資料庫HBase 架構,shell與API資料庫架構API
- MySQL 8.0 在關聯式資料庫方面有這些新特性MySql資料庫
- 資料庫也可以像電腦一樣組裝:使用Kafka建立關聯式資料庫 – Robert Yokota資料庫Kafka
- 匯豐銀行從65個關聯式資料庫遷移到一個全球MongoDB資料庫 - diginomica資料庫MongoDB
- 關聯式資料庫正規化詳解(Normal form,簡稱NF)資料庫ORM
- 寫給關聯式資料庫開發者的 TDengine 入門指南資料庫
- 相比NoSQL,關聯式資料庫為何不適合儲存影像? - RedditSQL資料庫
- 關聯式資料庫SQL面試排名前100道問答題資料庫SQL面試
- 陽振坤:OceanBase如何跨越關聯式資料庫的“死亡之谷”資料庫
- 銀聯分散式資料庫安全設計分散式資料庫
- Redis 事務支援 ACID 麼?Redis
- springboot建立與資料庫關聯模組Spring Boot資料庫
- 帶你瞭解資料庫中事務的ACID特性資料庫
- 使用Vert.x最佳化關聯式資料庫PostgreSQL訪問 | foojay資料庫SQL
- 後端開發中關聯式資料庫的開發管理新思路後端資料庫
- 2022愛分析·事務型關聯式資料庫市場廠商評估報告:萬里資料庫資料庫
- 效能躍升50%!解密自主研發的金融級分散式關聯式資料庫OceanBase 2.0解密分散式資料庫
- 關聯式資料庫大泥球帶來的管理問題和對策 - pathelland資料庫
- 資料庫的關係代數表示式資料庫
- 並推出了關係型資料庫功能來補充其核心NoSQL資料庫功能資料庫SQL