CosmosDB是否具有会话一致性garantuee排序

时间:2019-07-10 11:47:32

标签: azure azure-cosmosdb consistency

Microsoft documentation中,我不完全了解使用会话一致性的CosmosDB是否保证没有乱序写入。下面的引用使它看起来像与持久前缀相同的保证:

  

保证读操作会遵循一致的前缀(假设有一个“ writer”会话),...

尽管从棒球示例的最下一页开始,看来读者可以得到完全随机的订单,类似于最终的一致性。除了在Azure门户上显示的图像似乎隐含地暗示与作者相同的顺序外,从其他在线资源中也找不到确定的答案。

2 个答案:

答案 0 :(得分:1)

根据我的研究,我认为会话一致性级别不能保证客户始终读取订单中的值。

我的证据来自link

  • 将一致性级别设置为有限制的陈旧性时,Cosmos DB 保证客户总是读取前一个的值 用滞后时间窗口来限制。
  • 将一致性级别设置为强时,陈旧性窗口为 等于零,并且保证客户端读取最新的 写入操作的承诺价值。
  • 对于其余三个一致性级别,过时窗口为 在很大程度上取决于您的工作量。例如,如果没有 对数据库进行写操作,最终进行读操作, 会话或一致的前缀一致性级别可能会产生 与具有较高一致性级别的读取操作具有相同的结果。

如上所述,如果您选择会话一致性级别,则陈旧性窗口取决于您的实际工作量。因此,如果您确实担心读取顺序,建议您使用有限的陈旧程度或什至强一致性级别。

答案 1 :(得分:1)

(我来自Cosmos DB团队)

使用会话一致性的给定客户端将按顺序查看其自己的写入,但最终一致性(假定使用其他会话令牌)将看到其他客户端的写入。

我们将更新文档以使其更加清晰。新文本将显示如下内容:

  

会话:在单个客户端会话中,保证读取要遵循一致的前缀(假设有一个“ writer”会话),单调读取,单调写入,自写写入和跟随读取的保证。在进行写操作的会话之外的客户端将看到最终的一致性。