從嚴格意義上來說,理想情況下的一致性模型只有一種就是強一致性模型,但是在真實世界中強一致性是很難被保證的,很多情況下都是弱一致性。主要是基於cap理論,大多數網際網路應用對於可用性有很高的要求,這樣就會適當的降低一致性。
一致性模型主要包括:強一致性、弱一致性、因果一致性、讀你所寫一致性、會話一致性、單調讀一致性以及單調寫一致性。
對於連線到資料庫的所有程序,看到的關於某資料的資料值都是一致的。很好理解,就是對於乙個資料不管有多少個副本,在任意時刻對任意乙個副本訪問得到的結果都是一樣的。
無法保證某個數值做出更新之後,所有針對該值的後續操作都能夠看到新值,而需要一一段時間來保證一致性,在一段時間之後能夠保證後續操作看到的都是新值。
因果一致性發生在程序之間有相互依賴關係的情形下。例如ab兩個程序相互依賴,那麼如果a對某個變數進行更新,他在更新之後會通知b,這時候b看到的就是新值,但是如果還有程序c,那麼c看到的值可能還是舊值。
其是因果一致性的乙個特例,程序a對資料做了更新之後,會立馬給自己傳送乙個通知,所以程序a在之後的操作都是以新值為基礎進行的。
當程序a通過會話與資料庫進行連線時,在同乙個會話中,可以保證讀你所寫一致性。而在不一致視窗內,如果因為系統故障等原因導致會話終止,那麼程序a仍舊可能讀出舊值。
如果乙個程序讀取到資料的某個版本v2的值,那麼系統後續的所有讀操作都不能看到比v2更老的版本的數值。
對於某個程序來說,單調寫一致性可以保證其多次寫操作的序列化。
資料一致性分類
在分布式環境中,一些應用為了提高可靠性和容錯性,通常會將資料備份,同乙份資料存在幾個副本分別儲存在不同的機器。由於分布式環境的複雜性,通常會出現網路 機器故障等情況,導致同乙份資料的各個備份在同一時間可能有多種值,即資料不一致。強一致性 無論更新操作實在哪乙個資料副本執行,之後所有的讀操作都能獲得最...
記憶體一致性模型
cache coherence 本文主要討論的是記憶體一致性問題 memory consistency 和快取一致性 cache coherence 是不同的。在 計算機體系結構 量化方法研究 第五章中,memory consistency是由cache coherence引出的,所以我們就先來說說...
分布式理論 一致性
什麼是分布式一致性 分布式資料一致性,指的是資料在多份副本中儲存時,各副本中的資料是一致的。副本一致性 分布式系統當中,資料往往會有多個副本。如果是一台資料庫處理所有的資料請求,那麼通過acid四原則,基本 可以保證資料的一致性。而多個副本就需要保證資料會有多份拷貝。這就帶來了同步的問題,因為我們幾...