數據庫ACID和CAP原則

1 單機場景

單臺物理機(服務器、主機)中的關係型數據庫遵循ACID原則,對應關係如下表:

序號 原則 描述
1 原子性(Atomicity) 事務所有操作要麼全部完成,要麼全部不完成,一榮俱榮,一損俱損
2 一致性(Consistency) 事務開始或結束時,數據庫狀態一致(中間狀態的數據對外不可見,只有最初狀態和最終狀態的數據對外可見),保證操作前和操作後數據結構一致,監控數據的中間狀態,若有錯誤,則立即回滾
3 隔離性(Isolation) 多個事務操作,互不干擾,事務鎖保證事務的隔離,可能會出現死鎖
4 持久性(Durability) 事務完成之後,無法回滾

一致性在前,原子性在後,事務進行時,首先由一致性監控操作過程中數據是否一致,若數據結構發生變化,則進行回滾,這時原子性保證了數據回滾到初始狀態。

2 分佈式場景

分佈式場景,數據分佈在多臺物理機(服務器、主機)中,數據庫遵循CAP原則,對應關係如下表:

序號 原則 描述
1 一致性(Consistency) 數據一致更新,所有機器數據的變動同步進行
2 可用性(Availability) 高可用性,多臺物理機集羣中部分機器故障,其餘部分物理機是否能正常響應客戶端讀寫請求
3 分區容錯性(Partition tolerance) 分區爲網絡分區(如上海和北京的網絡區),容錯性只多臺物理機容忍網絡通信故障的能力,多臺物理機間通信不能在時限內達成數據一致,說明物理機通訊異常(出現網絡分區),必須在C和A之間進行選擇

3 CAP放棄原則

序號 放棄 描述
1 C 放棄實時一致性,即數據的一致性時間變長,部分物理機數據先變化,其餘物理機一段時間後變化,但最終多臺物理機數據是一致的
2 A 放棄高可用,任一單臺物理機發生故障,整體物理機集羣全部不對外提供數據讀寫服務
3 P 放棄分區容錯性,當網絡分區異常時無法保證多臺物理機數據的一致

4 CAP選擇

序號 方案 數據庫 說明
1 CA RDBMS 保證數據強一致性和高可用性,但網絡分區故障時,數據服務不可用
2 CP MongoDB、HBase、Redis 保證數據強一致性和網絡故障容災,但,任意物理機故障時,數據不可用
3 AP CouchDB、Cassandra、DynamoDB、Riak 保證數據網絡故障可用和物理機故障容災,但犧牲數據實時一致性

5 BASE

BASE理論是權衡強一致性和高可用的結果,介紹如下表:

序號 屬性 描述
1 基本可用(Basically Available) 系統出現了不可預知個故障,但是仍可用,此時響應速度變慢、功能縮水,但可正常工作
2 軟狀態(Soft State) 允許物理機數據存在中間狀態,允許多物理機數據時延
3 最終一致性(Eventually Consistent) 多物理機中的數據一致存在時間間隔,但時延期之後,物理機集羣數據完全一致

5 小結

  • 理論上分佈式過程中不存在同時滿足CAP三個特性的分佈式集羣;
  • BASE理論對CAP中一致性和可用性的權衡,即使無法做到強一致性,但每個應用可以根據自身業務特點,採用適當的方式使系統達到最終一致性;
  • 不同的場景需要不同的搭配方案,如CA,CP,AP;
  • 對於機器數量龐大,時常出現網絡故障,可用性是必要的,因此使用AP,對於數據強一致的場景(如銀行、證券)需要權衡CA和CP,當網絡故障時,CA原則的數據完全不可用,CP原則部分可用;當機器部分故障時,CA原則數據可用,CP原則的數據完全不可用;

【參考文獻】
[1]https://wenku.baidu.com/view/d2ae9c43571252d380eb6294dd88d0d233d43c21.html?from=search
[2]https://www.cnblogs.com/autointerface/p/11959711.html
[3]https://wenku.baidu.com/view/d245c9b6ec630b1c59eef8c75fbfc77da369971b.html?from=search
[4]https://www.cnblogs.com/frank2015/p/9554180.html
[5]http://blog.sina.com.cn/s/blog_53e5177d0102x8k6.html
[6]https://baijiahao.baidu.com/s?id=1634401106583534524&wfr=spider&for=pc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章