天天看點

ACID, CAP理論

1、資料庫的基本理論ACID

原子性(Atomic)。整個事務中的所有操作要麼全部完成,要麼全部不完成,不可能停滞在中間某個環節。事務在執行過程中發生錯誤,會被復原(Rollback)到事務開始前的狀态,就像這個事務從來沒有執行過一樣。

一緻性(Consistent)。在事務開始之前和事務結束以後,資料庫的完整性限制沒有被破壞。

隔離性(Isolated)。隔離狀态執行事務,使它們好像是在給定時間内系統執行的唯一操作。如果有兩個事務,運作在相同的時間内,執行相同的功能,事務的隔離性将確定每一事務在系統中認為隻有該事務在使用系統。這種屬性有時稱為串行化,為了防止事務操作間的混淆,必須串行化或序列化請求,使得在同一時間僅有一個請求用于同一資料。

持久性(Durable)。在事務完成以後,該事務對資料庫所作的更改便持久地儲存在資料庫之中,并不會被復原。

對于ACID的實作方式主要有兩個,一個是日志式的方式(Write ahead logging),幾乎所有的資料庫系統(MySQL、Oracle等)都基于日志的方式。另外一種是Shadow paging,代表的資料庫主要是SQLite,Android或者iOS APP開發的話應該會比較了解,但大型的資料庫都不會用到。

ACID, CAP理論

圖1 事務隔離性一覽

2、分布式資料庫的CAP理論

一緻性(C)。分布式系統中所有資料備份在同一時刻的值是否相同。

可用性(A)。當叢集中一部分節點故障後,叢集整體是否還能響應用戶端的讀寫請求(可用性不僅包括讀,還有寫)。

分區容忍性(P)。叢集中的某些節點無法聯系後,叢集整體是否還能繼續進行服務。

ACID, CAP理論

圖2 CAP三大定律

繼續閱讀