ACID和CAP的詳盡比較

事務機制ACID和CAP理論是數據管理和分佈式系統中兩個重要的概念,很不巧,這兩個概念中都有相同的“C”代表 "Consistency" 一致性,但是實際上是完全不同的意義,下面是比較兩個概念的不同之處。

什麼是ACID?

  事務的定義和實現一直隨着數據管理的發展在演進,當計算機越來越強大,它們就能夠被用來管理越來越多數據,最終,多個用戶可以在一臺計算機上共享數據,這就導致了一個問題,當一個用戶修改了數據而另外一個還在使用舊數據進行計算過程中,這裏就需要一些機制來保證這種情況不會發生。

  ACID規則原來是在1970被Jim Gray定義,ACID事務解決了很多問題,但是仍然需要和性能做平衡協調,事務越強,性能可能越低,安全可靠性和高性能是一對矛盾。

  一個事務是指對數據庫狀態進行改變的一系列操作變成一個單個序列邏輯元操作,數據庫一般在啓動時會提供事務機制,包括事務啓動 停止 取消或回滾。

  但是上述事務機制並不真的實現“事務”,一個真正事務應該遵循ACID屬性,ACID事務才真正解決事務,包括併發用戶訪問同一個數據表記錄的頭疼問題。

  ACID的定義:

  • Atomic原子性: 一個事務的所有系列操作步驟被看成是一個動作,所有的步驟要麼全部完成要麼一個也不會完成,如果事務過程中任何一點失敗,將要被改變的數據庫記錄就不會被真正被改變。
  • Consistent一致性: 數據庫的約束 級聯和觸發機制Trigger都必須滿足事務的一致性。也就是說,通過各種途徑包括外鍵約束等任何寫入數據庫的數據都是有效的,不能發生表與表之間存在外鍵約束,但是有數據卻違背這種約束性。所有改變數據庫數據的動作事務必須完成,沒有事務會創建一個無效數據狀態,這是不同於CAP理論的一致性"consistency".
  • Isolated隔離性: 主要用於實現併發控制, 隔離能夠確保併發執行的事務能夠順序一個接一個執行,通過隔離,一個未完成事務不會影響另外一個未完成事務。
  • Durable持久性: 一旦一個事務被提交,它應該持久保存,不會因爲和其他操作衝突而取消這個事務。很多人認爲這意味着事務是持久在磁盤上,但是規範沒有特別定義這點。

 

什麼是CAP?

  CAP是分佈式系統中進行平衡的理論,它是由 Eric Brewer發佈在2000年。

  • Consistent一致性: 同樣數據在分佈式系統中所有地方都是被複製成相同。
  • Available可用性: 所有在分佈式系統活躍的節點都能夠處理操作且能響應查詢。
  • Partition Tolerant分區容錯性: 在兩個複製系統之間,如果發生了計劃之外的網絡連接問題,對於這種情況,有一套容錯性設計來保證。

 

  一般情況下CAP理論認爲你不能擁有上述三種中兩種,這是一個實踐總結,當有網絡分區情況下,也就是分佈式系統中,你不能又要有完美一致性和100%的可用性,只能這兩者選擇一個。在單機系統中,你則需要在一致性和延遲性latency之間權衡。

 

CAP和ACID一致性區別

  ACID一致性是有關數據庫規則,如果數據表結構定義一個字段值是唯一的,那麼一致性系統將解決所有操作中導致這個字段值非唯一性的情況,如果帶有一個外鍵的一行記錄被刪除,那麼其外鍵相關記錄也應該被刪除,這就是ACID一致性意思。

  CAP理論的一致性是保證同樣一個數據在所有不同服務器上的拷貝都是相同的,這是一種邏輯保證,而不是物理,因爲光速限制,在不同服務器上這種複製是需要時間的,集羣通過阻止客戶端查看不同節點上還未同步的數據維持邏輯視圖。

  當跨分佈式系統提供ACID時,這兩個概念會混淆在一起,Google’s Spanner system能夠提供分佈式系統的ACID,其包含ACID+CAP設計:

分佈式ACID


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