如果我有一个具有会话一致性的DocumentDB数据库,那么使用etags对同一文档的并发写入有什么保证?例如,A和B在不同的会话中运行:
假设是:写入:B失败,因为etag是2,但我没有找到任何显式文档,以确保DocumentDB从服务器上读取etag值的位置是什么in,是否可以从etag仍为1的辅助副本中读取,让Write:B仍然通过?
这个问题Session Guarantee on DocumentDB在评论中讨论了这个问题,但似乎没有得出结论。
来自常见问题解答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:
答案 0 :(得分:6)
DocumentDB团队成员。确认Larry的答复,即对所有一致性级别强制执行使用ETag的条件写入。写请求必须包括ETag(REST中的If-Match标头,.NET中的RequestOptions.AccessCondition)。