3
據我所知,CouchDb從不會覆蓋記錄,而是用新的_rev創建一個新文檔。在這種情況下會發生什麼?CouchDb和數據寫入
- 用戶A讀取文件
- 用戶B讀取相同的文件
- 用戶A更新文檔
- 用戶B更新文檔
不是用戶在失去了A的變化這種情況?
據我所知,CouchDb從不會覆蓋記錄,而是用新的_rev創建一個新文檔。在這種情況下會發生什麼?CouchDb和數據寫入
不是用戶在失去了A的變化這種情況?
不,用戶B會得到409錯誤,因爲轉速將不再匹配。對於用戶B提交他們的文檔,他們將需要重新獲取文檔,以便他們可以獲得最新的文檔修訂。
這稱爲樂觀鎖定,旨在專門防止您看到的問題。
沒有什麼能夠阻止用戶B跺腳用戶A的文檔,但現在他們更需要重新讀取文檔並使用新的_rev參數。
可以允許用戶B的更改,以便至少B的客戶端可以成功地以一次往返的方式存儲更新。但是這會在一些客戶端軟件必須解決的CouchDB中導致*衝突。但是,正如威爾所說,在大多數情況下,人們會提早失敗,並讓B(或B的軟件)重新運行查詢 – JasonSmith 2011-05-18 00:29:16