基于this question我理解在使用If-Match ETag更新DocumentDB中的文档时,如果编写的文档版本较新,则无论选择的一致性级别如何,此更新都将失败。
我认为这也意味着如果我使用较低的一致性级别并获得陈旧的读取,那么尝试使用此读取的ETag执行更新,即使在我开始之前技术上发生了冲突的修改,它也应该失败读?
常见的解决方案是再次重新阅读文档,再次进行修改并再次尝试编写。但是我不明白这是如何与一致性水平一起工作的。我不会再次获得陈旧的读取(即使假设没有进一步的并发写入),或者DocumentDB以某种方式确保在写入失败后获得最新的副本?这会导致大量的重新读取(没有最大尝试次数),直到其中一个读取最新文档?
这也带来了一个相关的次要问题:什么是典型的陈旧性(换句话说,更改传播到所有副本需要多长时间)我可以期望较低的一致性级别(主要是会话一致性)?据我所知,它可能会根据负载,配置等情况发出很多警告,但它是以毫秒,秒,分钟甚至几小时的顺序排列的?
提前感谢您的回答,我非常喜欢学习和使用DocumentDB,但这是我在文档和示例中找不到明确答案的原因。