这是关于DocumentDB的新问题。我们希望将DocumentDB用于我们的应用程序。我们有多个用户更改存储在DocumentDB中的数据。我们怎样才能确保一个用户不会覆盖另一个用户的更改?
答案 0 :(得分:16)
DocumentDB具有乐观并发,并且每个文档都有ETag
。如果在执行写操作时ETag已更改,则写入失败(如果ETag更改,则表示其他人修改了文档)。在这种情况下,您需要重新阅读并重新修改相关文档。
有关详细信息,请参阅常见问题here。
答案 1 :(得分:-5)
DocumentDB不能防止并发。如果您在现有文档上发布新版本的文档,则会覆盖旧文档。如果可以防止并发写入,则必须使用文档的时间戳。 documentDB中的每个文档都有最后一个操作的时间戳。
在每次更新时,您都可以检查要更新的文档的时间戳是否等于您检索的文档或更改的时间戳。如果已更改,则用户没有最新版本,您可以取消更新。
最好的方法是创建一个存储过程,这样你就可以将这个逻辑放在一个存储过程中,并使你的应用程序不可知。