2016-05-19 40 views
1

可否請你給我一個提示是有什麼辦法原子更新使用Java SDK的Couchbase多個文檔?我知道,可以使用文檔嵌入,從而保證需要,但不幸的是,它不適合我。原子更新

在我而言,文檔更新的事實導致了一個事實,它的無效(設置特殊標誌設置爲false)其他需要的文件,並應原子方式執行。

我很欣賞你方的任何幫助或建議。 謝謝!

回答

0

雖然是執行到多個文檔原子的變化沒有內置的方式,你可以使用two-phase commit來達到同樣的效果。請注意,在這種情況下,2PC不提供其他事務功能,如隔離和一致性,只有原子性 - 這正是您要求的。 Java中沒有Couchbase的參考2PC實現,但文檔中有兩個Ruby和PHP。我建議閱讀Couchbase上providing transactional logic的文檔,以深入瞭解如何實現此目的。將示例代碼移植到Java應該相當簡單。

一般來說,要以原子方式在多個文檔上實現一組更改,請依次對每個文檔執行原子寫入,再加上一個臨時「狀態」文檔,以便進程中的每個步驟都是唯一的。通過這種方式,您可以繼續執行同一步驟,或者在出於任何原因導致交易中途中斷時回滾您的更改。

+0

嗨大衛!謝謝您的回答! 看起來很有意思!將盡力調查! 我想,這是迄今爲止最好的努力... 謝謝! –

0

不幸的是,歸結爲一個事務,Couchbase不提供本地事務支持。您可以使用Couchbase實現的原子級別處於單個文檔級別。

我知道有些couchbase用戶在他們的應用性代碼層已經實現手動事務管理,但是這是一個相當複雜的問題,而且也沒有,我知道的公開可用的解決方案。