azure - 文档数据库 - 具有 session 一致性的 ETag 乐观并发

标签 azure azure-cosmosdb

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

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

假设 Write:B 失败,因为 etag 为 2,但我没有找到任何明确的文档来说明 DocumentDB 从服务器上读取 etag 值的位置有什么保证,如下所示其中,是否可以从 etag 仍为 1 的辅助副本中读取数据,并让 Write:B 仍然通过

这个问题Session Guarantee on DocumentDB在评论中讨论了这个问题,但似乎没有得出结论。

<小时/>

网络文档

摘自常见问题解答https://learn.microsoft.com/en-us/azure/documentdb/documentdb-faq enter image description here

来自示例源(暗示但没有说明,这在所有一致性级别上都成立?)https://github.com/Azure/azure-documentdb-dotnet/blob/master/samples/code-samples/DocumentManagement/Program.cs : enter image description here

最佳答案

此处为 DocumentDB 团队成员。确认 Larry 的答复,即将对所有一致性级别强制执行使用 ETag 的条件写入。写入请求必须包含 ETag(REST 中的 If-Match header ,.NET 中的 RequestOptions.AccessCondition)。

于 2019 年 7 月 29 日编辑,如果帐户配置为多区域写入,则无法保证具有多区域写入器的 ETag,并且您必须通过冲突解决程序解决并发写入问题。与以前一样,ETag 验证仍然适用于单区域写入帐户。

关于azure - 文档数据库 - 具有 session 一致性的 ETag 乐观并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40662399/

相关文章:

Azure Blob 存储文件大小超过使用 ionic 3 应用程序支持的最大文件大小

azure - 获取不带路径的分支名称并设置为变量

azure - Mongo Shell 无法连接到 Cosmos DB

azure - 对于 Azure Cosmos DB,缓存数据库和文档集合对象是否正确?

c# - Cosmos,在 MessageController 中检索对话数据

excel - 如何创建 Azure 文件存储文档的下载链接? PDF 有效,但 XLS 和 DOC 无效

c# - Azure Functions Blob 触发器不会处理所有 Blob

visual-studio - 升级到 Azure SDK 2.6 后无法在 Windows 通用应用程序中加载共享 'project'

entity-framework-core - EF Core CosmosDb 不保存继承层次结构的子属性

database - Azure Cosmos Document DB,可能有关系链接吗?