資料一致性通常指關聯資料之間的邏輯關係是否正確且完整,而資料儲存的一致性模型則可以認為是儲存系統和資料使用者之間的一種約定,如果使用者遵循這種約定,則可以得到系統所承諾的存取結果。
常用的一致性模型有:
a、嚴格一致性:
##讀出的資料始終為最近寫入的資料。這種一致性只有全域時鐘存在時才有可能,在分散式網路環境不可能實現。b、順序一致性:
所有使用者以相同的順序看到對相同資料的操作,但是該順序不一定是即時的。c、因果一致性:
只有存在因果關係的寫入操作才要求所有使用者以相同的次序看到,對於無因果關係的寫入則並行進行,無次序保證。因果一致性可以看做對順序一致性表現的一種最佳化,但在實作時必須建立與維護因果依賴圖,是相當困難的。d、管道一致性:
在因果一致性模型上的進一步弱化,要求由某一個使用者完成的寫入操作可以被其他所有的使用者依照順序的感知到,而從不同使用者來的寫入操作則無需保證順序,就像一個一個的管道一樣。相對來說比較容易實現。e、弱一致性:
只要求對共享資料結構的存取保證順序一致性。對於同步變數的操作具有順序一致性,是全域可見的,且只有當沒有寫入作業等待處理時才可進行,以確保對於臨界區域的存取順序進行。在同步時點,所有使用者可以看到相同的資料。f、釋放一致性:
弱一致性無法區分使用者是要進入臨界區還是要出臨界區, 釋放一致性使用兩個不同的操作語句進行了區分。需要寫入時使用者acquire該對象,寫完後release,acquire-release之間形成了一個臨界區,提供 釋放一致性也就意味著當release操作發生後,所有使用者應該可以看到該操作。g、最終一致性:
當沒有新更新的情況下,更新最終會透過網路傳播到所有副本點,所有副本點最終會一致,也就是說使用者在最終某個時間點前的中間過程中無法保證看到的是新寫入的資料。可以採用最終一致性模型有一個關鍵要求:讀出陳舊資料是可以接受的。h、增量一致性:
系統會在delta時間內達到一致。這段時間內會存在一個不一致的窗口,該窗口可能是因為log shipping的過程導致。 以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !以上是數據的一致性是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!