1、CAP:
CAP原理:
• Consistency(一致性): 數據一致更新,所有數據變動都是同步的
• Availability(可用性): 好的響應性能
• Partition tolerance(分區耐受性): 可靠性
上面的解釋可能顯得太過抽象,舉例來說在高可用的網站架構中,對於數據基礎提出了以下的要求:
• 分區耐受性
保證數據可持久存儲,在各種情況下都不會出現數據丟失的問題。為了實現數據的持久性,不但需要在寫入的時候保證數據能夠持久存儲,還需要能夠將數據備份一個或多個副本,存放在不同的物理設備上,防止某個存儲設備發生故障時,數據不會丟失。
• 數據一致性
在數據有多份副本的情況下,如果網絡、服務器、軟件出現了故障,會導致部分副本寫入失敗。這就造成了多個副本之間的數據不一致,數據內容沖突。
• 數據可用性
多個副本分別存儲於不同的物理設備的情況下,如果某個設備損壞,就需要從另一個數據存儲設備上訪問數據。如果這個過程不能很快完成,或者在完成的過程中需要停止終端用戶訪問數據,那么在切換存儲設備的這段時間內,數據就是不可訪問的。
CAP原理認為,一個提供數據服務的存儲系統無法同時完美的滿足一致性(Consistency)、數據可用性(Availability)、分區耐受性(Partition Tolerance)這三個條件
2、關系型數據庫和非關系型數據庫
2.1、關系型數據庫(MySQL、PostgreSQL等)問題:
滿足CP,但A不完美
2.2、非關系型數據庫(Redis、MongoDB、HBase等)問題:
滿足AP,但C不完美
3、NewSQL
可以同時滿足CAP
理想下能做到:
支持標准SQL
水平擴容,自動容災
庫表權限控制(讀寫分離)
資源限額
詳細可見NewSQL對比,開源主要由TiDB和CockroachDB
