2017-04-21 28 views
1

的documentDb文檔(在https://docs.microsoft.com/en-us/azure/documentdb/documentdb-consistency-levels)在它以下信息:在documentDb最終一致性模型中,「缺少任何進一步的寫入」是什麼意思?

- 最終: 最終一致性保證在沒有任何進一步的寫入,該組內的副本將最終收斂。

什麼是沒有任何進一步的寫入是什麼意思?

比方說我所代表我的寫入操作爲W(X,S1,T1),其中x是記錄/文件,在時間1它更新爲狀態1這裏是我的寫入事件序列:

W(A,s1,t1),W(B,s1,t1),W(B,s2,t2),W(C,s1,t3)其中t1 < t2 < t3 t3-t1 = 100毫秒)。

1)每個記錄A,B,C的變化傳播到其他副本是否獨立開始?如果是這樣,每個記錄是否有一個等待期來檢測給定記錄的更新流?

2)對每個記錄A,B,C的其他副本的更改傳播是否僅在t3之後的某個時間(tn)之後開始(這表示寫入結束)? 3)假設我只有W(A,s1,t1),並且不會爲任何記錄編寫任何更多的事件,通常是需要多長時間才能將記錄A更改傳播到所有副本? (AWS Dynamodb聲稱這是在第二,我沒有找到documentDb任何這樣的要求)

回答

1

DocumentDB中的複製沒有內置的內部延遲。在單個區域配置中,實際上副本之間最多有幾毫秒的時滯。在多區域設置中,關於網絡(「光速」)區域之間的滯後加上一些計算開銷。

文檔說「有一段時間」的原因是因爲此延遲取決於您的拓撲和網絡分區。在網絡分區的情況下,最終的一致性有利於可用性而不是一致性(過時),因此副本可能落後。

DocumentDB的最終一致性保證了讀取一致性的可能性非常高(請參閱http://pbs.cs.berkeley.edu/)。如果你想要更強的保證,你可以選擇一個一致性級別,如Session,BoundedStaleness或Strong。

+0

有關更詳細的討論,請發送電子郵件至[email protected] –

0

的想法是,當你寫一些數據,有一定的時間延遲,直到所有副本都有相同的操作適用於他們。

因此,對於您寫入數據的任何給定時間點,可能有一個或多個副本稍微不同步。

當文檔中提到「沒有任何進一步寫道:,」它只是說,如果你寫完一組文檔,並寫了沒有別的了一段時間,最終所有的副本將在準確相同的狀態。每個副本最終與一致彼此。相反:如果你一直在寫作,並且從未停止寫作,那麼你的個人副本可能會與你剛剛寫到的主人(關於你剛剛寫的最新文件)略有不同步。

TL; DR該文檔只是試圖說明數據如何在寫入後最終保持一致。

+0

我想弄清楚什麼是「一段時間延遲」(假設沒有失敗的地方)。我知道這是一個很難回答的問題,但典型的時間延遲範圍會有所幫助。 – Raghu

相關問題