具有会话一致性保证顺序的 Cosmos DB 是否

Does CosmosDB with sessions consistency garantuee ordering

来自 Microsoft documentation 我不完全理解使用会话一致性的 CosmosDB 是否保证没有乱序写入。以下引述使它看起来与一致性前缀具有相同的保证:

The reads are guaranteed to honor the consistent-prefix (assuming a single “writer” session), ...

尽管从页面下方的棒球示例来看,reader 似乎可以返回完全随机的顺序,类似于最终一致性。除了 Azure 门户上显示的图像似乎隐含地暗示与作者相同的顺序之外,我也无法从其他在线来源找到明确的答案。

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

我的证据来自这个link:

  • 当一致性级别设置为有界陈旧时,Cosmos DB 保证客户端总是读取前一个的值 写,滞后受陈旧性限制 window.
  • 当一致性级别设置为强时,陈旧度window为 相当于零,保证客户阅读最新 写入操作的提交值。
  • 其余三个一致性级别,陈旧度window为 很大程度上取决于你的工作量。例如,如果没有 对数据库的写操作,最终的读操作, 会话,或一致的前缀一致性级别可能会产生 与强一致性级别的读操作结果相同。

如上所述,如果您选择 Session Consistency Level,陈旧性 window 取决于您的实际工作量。所以,如果你确实关心读取顺序,我建议你使用有界陈旧甚至强一致性级别。

(我来自 Cosmos DB 团队)

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

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

Session: Within a single client session reads are guaranteed to honor the consistent-prefix (assuming a single “writer” session), monotonic reads, monotonic writes, read-your-writes, and write-follows-reads guarantees. Clients outside of the session performing writes will see eventual consistency.