我想了解在使用會話一致性時DocumentDB提供的確切保證。DocumentDB上的會話保證
是否有可能爲以下情況發生(讓我們假設A,B,C,d相同文檔的所有值)
會話1 W(A)W(B)
會話2 .................. W(c)W(d)
第3節.................. ............... R(b)R(c)
第4節............................................. ........... R(c)R(b)
I換句話說,是跨會話順序寫入的(在這種情況下,b發生在c或c發生在b之前,因此C3或C4中的一個會違反單調讀取)?
應用更新a,b,c,d(假設它們全部由會話一致性制定)的順序是什麼?
C1,C2等代表什麼?他們是不同的「客戶」?會話一致性意味着對於給定的會話,數據庫將顯示一致,準備好您自己的寫入/單調。但是,從另一個環節來看,它們可能完全出現故障。在你的例子中,你在寫入之後進行讀取,所以這可能不適用,但是如果你在讀取之後寫入,你可以使用Etag樂觀併發功能來確定文件沒有在兩者之間更新。另外,如果將所有讀取和寫入操作合併到存儲過程中,則它們完全是ACID事務處理。 –
是的,代表不同的客戶。最新的更新順序是否有任何保證? (假設在我展示的內容之後沒有更新的更新,最終狀態是d還是b?)。 我不確定我對etags有什麼看法。 etags具有強大的一致性,但寫入是異步發生的。說,我讀了r(a)然後想寫w(c),並不能保證寫(b)正在傳輸中,並且會在我的讀(a)和寫(b)之間應用,對嗎? (當我第一次申請w(b)時,文件仍然有價值,所以etag檢查不會失敗)。 – user1018513
「說,我讀了r(a)然後想寫w(c),但不能保證寫(b)在傳輸中,並且會在我讀(a)和寫(b)之間應用,對不對?如果在讀取(a)和寫入(c)之間發生寫入(b)並使用Etags,則可以保證寫入(c)將失敗。 –