天天看點

ACID與CAP定理ACID:RMDB的4個基本要素CAP定理

ACID:RMDB的4個基本要素

        ACID,指資料庫事務正确執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一緻性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支援事務(Transaction)的資料庫系統,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證資料的正确性,交易過程極可能達不到交易方的要求。    

原子性

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

一緻性

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

隔離性

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

持久性

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

由于一項操作通常會包含許多子操作,而這些子操作可能會因為硬體的損壞或其他因素産生問題,要正确實作ACID并不容易。ACID建議資料庫将所有需要更新 以及修改的資料一次操作完畢,但實際上并不可行。

目前主要有兩種方式實作ACID:第一種是Write ahead logging,也就是日志式的方式。第二種是Shadow paging。

CAP定理

        CAP定理指在設計分布式系統時,一緻性(Consistent)、可用性(Availability)、Partition Tolerance(分區容忍性)三個屬性不可能同時滿足,該定理也叫做布魯爾定理。CAP定理明确了分布式系統所能實作系統的局限性,目前網際網路中的很多分布式系統是基于首要滿足可用性和分區容忍性而設計的

  • 一緻性(C):在分布式系統*中的所有資料備份,在同一時刻是否同樣的值。(等同于所有節點通路同一份最新的資料副本)
  • 可用性(A):在叢集中一部分節點故障後,叢集整體是否還能響應用戶端的讀寫請求。(對資料更新具備高可用性)
  • 分區容忍性(P):以實際效果而言,分區相當于對通信的時限要求。系統如果不能在時限内達成資料一緻性,就意味着發生了分區的情況,必須就目前操作在C和A之間做出選擇。

        在一系列的研究結果裡發現,在較大型的分布式系統中,由于網絡分隔,一緻性與可用性不能同時滿足,這意味着這三個要素隻能同時實作兩個,不可能三者兼顧;放寬一緻性的要求會提升系統的可用性,提升一緻性意味着系統需要犧牲一定的可用性。

不同程式針對CAP的支援

  • zookeeper滿足CP:在進行資料的同步時(C一緻性 Leader-follower),不允許用戶端讀寫,程式堵塞。zookeeper稱為強一緻性!!
  • 注冊中心如Eureka,滿足AP:  3台 當機兩台 Eureka還剩一台也可以運作

根據 CAP 原理将 NoSQL 資料庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:

  • CA - 單點叢集,滿足一緻性,可用性的系統,通常在可擴充性上不太強大。
  • CP - 滿足一緻性,分區容忍性的系統,通常性能不是特别高。
  • AP - 滿足可用性,分區容忍性的系統,通常可能對一緻性要求低一些。
ACID與CAP定理ACID:RMDB的4個基本要素CAP定理

繼續閱讀