簡(jiǎn)單說(shuō)一說(shuō)數(shù)據(jù)存儲(chǔ)的一致性
數(shù)據(jù)存儲(chǔ)的一致性模型是存儲(chǔ)系統(tǒng)和數(shù)據(jù)使用者之間的約定。一致性有不同程度,大致如下:
1. 強(qiáng)一致性:更新完成后,任何后續(xù)訪問(wèn)都將返回更新過(guò)的值。
2. 弱一致性:系統(tǒng)不保證后續(xù)訪問(wèn)將返回更新過(guò)的值,在那之前要先滿足若干條件。通常條件就是經(jīng)過(guò)一段時(shí)間,也就是不一致窗口。
3. 最終一致性:存儲(chǔ)系統(tǒng)保證如果對(duì)象沒(méi)有新的更新,最終所有訪問(wèn)都將返回最后更新的值。
最終一致性的各種實(shí)體:
1. 因果一致性:如果進(jìn)程A通知進(jìn)程B它已更新了一個(gè)數(shù)據(jù)項(xiàng),那么進(jìn)程B的后續(xù)訪問(wèn)將返回更新后的值,且一次寫入將保證取代前一次寫入。與進(jìn)程A無(wú)因果關(guān)系的進(jìn)程C的訪問(wèn)遵守一般的最終一致性規(guī)則。
2.讀己之所寫一致性:這是一個(gè)重要的模型。當(dāng)進(jìn)程A自己更新一個(gè)數(shù)據(jù)項(xiàng)之后,它總是訪問(wèn)到更新過(guò)的值,絕不會(huì)看到舊值。這是因果一致性模型的一個(gè)特例。
3.會(huì)話一致性:這是上一個(gè)模型的實(shí)用版本,它把訪問(wèn)存儲(chǔ)系統(tǒng)的進(jìn)程放到會(huì)話的上下文中。只要會(huì)話還存在,系統(tǒng)就保證“讀己之所寫”一致性。如果由于某些失敗情形令會(huì)話終止,就要建立新的會(huì)話,而且系統(tǒng)的保證不會(huì)延續(xù)到新的會(huì)話。
4.單調(diào)讀一致性:如果進(jìn)程已經(jīng)看到過(guò)數(shù)據(jù)對(duì)象的某個(gè)值,那么任何后續(xù)訪問(wèn)都不會(huì)返回在那個(gè)值之前的值。
5.單調(diào)寫一致性:系統(tǒng)保證來(lái)自同一個(gè)進(jìn)程的寫操作順序執(zhí)行。要是系統(tǒng)不能保證這種程度的一致性,就非常難以編程了。
關(guān)于數(shù)據(jù)存儲(chǔ)的一致性模型就介紹這么多,希望本文的理論知識(shí)能對(duì)各位在以后的數(shù)據(jù)庫(kù)開發(fā)道路上有所幫助吧,謝謝各位了!
【編輯推薦】