使用更新处理程序时修订版本发生冲突的可能性有多大?编写强大的更新函数时,我是否应该关注冲突处理代码?
如Document Update Handlers中所述,CouchDB 0.10及更高版本允许按需服务器端文档修改。
更新处理程序可以处理非JSON格式;但其他主要特征是:
我不清楚第三点。在本地执行,更新处理程序运行速度更快,延迟更低。但在争用率较高的情况下,这并不能保证成功更新。 或者更新处理程序是否保证成功更新?
答案 0 :(得分:11)
使用更新处理程序时仍可以进行更新冲突。
由于“往返时间”减少,更新冲突的可能性更低 但不是零。冲突会感觉正常:409响应代码 有了这个JSON:
{"error":"conflict","reason":"Document update conflict."}
我使用document update handler example成功触发了冲突, 并在shell中连续两次运行curl。
curl -v -X PUT \
http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=10 \
& curl -X PUT \
http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=1
其中一个卷曲反应(随机)是201,另一个是409。
更新可能会发生冲突以及验证失败(401 Unauthorized
,
403 Forbidden
等等。)