1. 程式人生 > 資料庫 >分散式資料庫CAP原理+BASE

分散式資料庫CAP原理+BASE

1:CAP理論核心

CAP理論的核心是:一個分散式系統不可能同時很好的滿足一致性,可用性和分割槽容錯性這三個需求,最多隻能同時較好的滿足兩個。
因此,根據CAP原理將NoSQL資料庫分成了滿足CA原則、滿足CP原則和滿足AP原則三大類:

  • CA:單點叢集,滿足一致性,可用性的系統,通常在可擴充套件性上不太強大。
  • CP:滿足一致性,分割槽容忍必的系統,通常效能不是特別高
  • AP:滿足可用性,分割槽容忍性的系統,通常可能對一致性要求低一些

在這裡插入圖片描述
CAP理論就是說在分散式儲存系統中,最多隻能實現上面的兩點。而由於當前的網路硬體肯定會出現延遲丟包等問題,所以分割槽容忍性是我們必須需要實現的。所以我們只能在一致性和可用性

之間進行權衡,沒有NoSQL系統能同時保證這三點。

  • C:強一致性
  • A:高可用性
  • P:分散式容忍性
  • CA:傳統Oracle資料庫
  • AP:大多數網站架構的選擇
  • CP :Redis、Mongodb
  • 注意:分散式架構的時候必須做出取捨。

2:一致性與可用性抉擇

對於web2.0網站來說,關係資料庫的很多主要特性卻往往無用武之地。

  • 資料庫事務一致性需求:
    很多web實時系統並不要求嚴格的資料庫事務,對讀一致性的要求很低,有些場合對寫一 致性要求 並不高。允許實現最終一致性。
  • 資料庫的寫實時性和讀實時性需求:
    對關係資料庫來說,插入一 條資料之後立刻查詢,是肯定可以讀出來這條資料的,但是對於很多web應用來說,並不要求這麼高的實時性,比方說發一條訊息之後 ,過幾秒乃至十幾秒之後,我的訂閱者才看到這條動態是完全可以接受的。對複雜的SQL查詢,特別是多表關聯查詢的需求
  • 任何大資料量的web系統,都非常忌諱多個大表的關聯查詢,以及複雜的資料分析型別的報表查詢,特別是SNS型別的網站,從需求以及產品設計角度,就避免了這種情況的產生。往往更多的只是單表的主鍵查詢,以及單表的簡單條件分頁查詢,SQL的功能 被極大的弱化了。

3:BASE介紹

BASE就是為了解決關係資料庫強一致性引起的問題而引起的可用性降低而提出的解決方案。

BASE其實是下面三個術語的縮寫:

  • 基本可用(Basically Available)

  • 軟狀態(Soft state)

  • 最終一致(Eventually consistent)

  • BASE的思想是通過讓系統放鬆 對某一時刻資料一致性 的要求來

    換取系統整體伸縮性和效能上改觀。為什麼這麼說呢,緣由就在於大型系統往往由於地域分佈和極高效能的要求,不可能採用分散式事務來完成這些指標,要想獲得這些指標,我們必須採用另外一種方式來完成,這裡BASE就是解決這個問題的辦法