Compartilhar via

Azure Cosmos DB 和 API for MongoDB 的一致性级别

适用对象: Mongodb

重要

你是否正在寻找一种数据库解决方案,以应对需要高扩展性、99.999% 可用性服务级别协议(SLA)、即时自动扩展和跨多个区域的自动故障转移的场景? 请考虑使用 Azure Cosmos DB for NoSQL

与 Azure Cosmos DB 不同,原生 MongoDB 没有明确定义的一致性保证。 与之相反,本机 MongoDB 允许用户配置下述一致性保证:写入关注、读取关注以及 isMaster 指令 - 目的是将读取操作定向到主副本或辅助副本,以便实现所需的一致性级别。

使用 Azure Cosmos DB 的适用于 MongoDB 的 API 时,MongoDB 驱动程序会将写入区域视为主要副本,所有其他区域为只读副本。 可以选择将哪个与 Azure Cosmos DB 帐户关联的区域作为主要副本。

注意

Azure Cosmos DB 的默认一致性模型是会话。 会话是一种以客户端为中心的一致性模型,它本身不受 Cassandra 或 MongoDB 的支持。 有关要选择的一致性模型的详细信息,请参阅 Azure Cosmos DB 中的一致性级别

在使用 Azure Cosmos DB 的适用于 MongoDB 的 API 时:

  • 写入关注会映射到在 Azure Cosmos DB 帐户上配置的默认一致性级别。

  • Azure Cosmos DB 会将 MongoDB 客户端驱动程序指定的读取关注动态映射到根据读取请求动态配置的某个 Azure Cosmos DB 一致性级别。

  • 可以将与 Azure Cosmos DB 帐户关联的特定区域批注为“主要区域”,方法是将该区域设置为第一个可写区域。

映射一致性级别

下表展示了在使用 Azure Cosmos DB 的 API for MongoDB 时,MongoDB 原生写入/读取关注是如何映射到 Azure Cosmos DB 的一致性级别的:

MongoDB 一致性模型映射

如果您的 Azure Cosmos DB 帐户配置为强一致性以外的一致性级别,可以通过查看 Probabilistically Bounded Staleness (PBS) 指标,了解客户端在您的工作负载中可能获得强一致读取的概率。 此指标在 Azure 门户中公开。 有关详细信息,请参阅 “监测概率有界陈旧性(PBS)”指标

概率界限的陈旧性表明了您的最终一致性有多终极。 通过此指标可深入了解在 Azure Cosmos DB 帐户中获得比目前配置的一致性级别更强一致性的频率。 换句话说,您可以看到在写入和读取区域组合中获得极高一致性读取的概率(时间以毫秒为单位)。

后续步骤

详细了解 Azure Cosmos DB 的多区域分布和一致性级别: