NoSQL數據庫:數據的一致性
讀取一致性
-
強一致性
在任何時間訪問集群中任一結點,得到的數據結果一致; -
用戶一致性
對同一用戶,訪問集群期間得到的數據一致;
解決用戶一致性:使用粘性會話,將會話綁定到特定結點來處理;
這樣會降低負載均衡器的性能; -
最終一致性
集群中各結點間由於數據同步不及時造成暫時的數據不一致,但數據同步完成后,最終具有一致性;
更新一致性
- 悲觀方式
使用寫鎖 大幅降低系統響應能力 可能導致死鎖
- 樂觀方式
先讓沖突發生,再檢測順序 自動合並的處理方式極具“領域特定”問題
放寬“一致性約束”
- CAP定理
一致性(Consistency)、可用性(Availability)和分區耐受性(Partition tolerance),3個屬性只可能同時滿足2個;
分區耐受性的解釋:集群因通信故障而划分為多個時仍然可用
- CA系統
單服務器 集群中出現”分區“,就不可用
- PA/PC
集群出現”分區“時,需要在”一致性“ 和“可用性”間權衡 一般會犧牲部分一致性(eg:使用最終一致性),保證可用性
放寬“持久性”約束
更嚴格的持久性,意味着更多的性能損失;
- 犧牲“持久性”換取更好的性能
- 復制“持久性”故障
主節點故障,未同步到從節點的數據丟失 主節點恢復,故障期間更新的數據沖突 解決方案:針對單個請求指定其所需的持久性
附思維導圖
參考
Posted by: 大CC | 30JUN,2014
博客:blog.me115.com [訂閱]
微博:新浪微博