文档DB - 具有会话一致性的ETag乐观并发

Dav*_*vre 5 azure azure-cosmosdb

如果我有一个具有会话一致性的DocumentDB数据库,那么使用etags对同一文档的并发写入有什么保证?例如,A和B在不同的会话中运行:

  • 阅读:A - etag:1
  • 阅读:B - etag:1
  • 写:A - etag:1(匹配,etag = 2)
  • 写道:B - etag:1?

假设是:写入:B失败,因为etag是2,但是我没有找到任何关于DocumentDB从服务器上读取etag值的保证的明确文档,例如,它是否可以从辅助副本中读取etag仍然是1,让写:B仍然通过

这个问题DocumentDB上的会话保证在评论中讨论了这个问题,但似乎没有得出结论.


网络文档

来自FAQ https://docs.microsoft.com/en-us/azure/documentdb/documentdb-faq 在此输入图像描述

从示例源(暗示,但未说明,这在所有一致性级别都适用?) https://github.com/Azure/azure-documentdb-dotnet/blob/master/samples/code-samples/DocumentManagement/ Program.cs: 在此输入图像描述

Ara*_* R. 8

DocumentDB团队成员在这里.确认Larry的答复,即对所有一致性级别强制执行使用ETag的条件写入.写请求必须包括ETag(REST中的If-Match标头,.NET中的RequestOptions.AccessCondition).