分散式資料庫中CAP原理(CAP+BASE)
傳統的ACID
1)原子性(Atomicity):
事務裡的所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功。
2)一致性(Consistency):
資料庫要一直處於一致的狀態,事務的執行不會改變資料庫原本的一致性約束。
3)獨立性(Isolation):
指併發的事務之間不會相互影響,一個事務要訪問的資料正在被另一個事務修改,那麼在另一個事務提交之前,看到的資料是未改變的。
4)永續性(Durability):
永續性是指事務提交後,他所做的修改將會永久的儲存在資料庫上,即使出現宕機也不會丟失。
分散式資料庫的CAP
(nosql三個有且只能滿足兩個)
1)強一致性(Consistency)
2)可用性(Availability)
3)分割槽容錯性(Partition tolerance)
CAP理論的核心是:一個分散式系統不可能同時很好的滿足一致性、可用性和分割槽容錯性三個需求
因此,CAP原理將NOSQL資料庫分成了滿足以下原則的三大類:
1)CA -單點叢集,滿足一致性,可用性的系統,通常在可擴充套件性上不太強大。
注:傳統Oracle資料庫
2)CP -滿足一致性、分割槽容錯性的系統,通常效能不是特別高。
注:大多數網站架構的選擇
3)AP -滿足可用性、分割槽容錯性的系統,通常可能對一致性要求低一些。
注:redis、mongodb
BASE
為了解決關係資料庫強一致性引起的問題而引起的可用性降低而提出的解決方案
BASE由三個術語縮寫:
1)基本可用(Basically Available)
2)軟狀態(Soft state)
3)最終一直(Eventually Consistent)
其思想為:通過系統放鬆對某一時刻資料一致性的要求來換取系統整體伸縮性和效能上的改觀。
分散式系統:
由多臺計算機和通訊的軟體元件通過計算機網路連線(本地網路或廣域網)組成。分散式系統是建立在網路之上的軟體系統。正式因為軟體的特性,所以分散式系統具有高度的內聚性和透明性。因此,網路和分散式系統之間的區別更多的在於高層軟體(特別是作業系統),而不是硬體。分散式系統可以應用在不同的平臺上。如:PC、工作站、區域網和廣域網上等。
(簡單來說~)
1)分散式:不同的多臺伺服器上面部署不同的服務模組(工程),他們之間通過 Rpc 或 Rmi 之間通訊和呼叫,對外提供服務和組內協作。
2)叢集: 不同的多臺伺服器上面部署相同的服務模組,通過分散式排程軟體進行統一的排程,對外提供服務和訪問。