在 Azure Cosmos DB 中选择 API

适用于: SQL API Cassandra API Gremlin API 表 API Azure Cosmos DB API for MongoDB

Azure Cosmos DB 是一种用于新式应用开发的完全托管的 NoSQL 数据库。 Azure Cosmos DB 提供自动管理、更新和修补,使你无需进行数据库管理。 它还通过经济高效的无服务器和自动缩放选项处理容量管理,这些选项可响应应用程序的需求,使容量与需求相匹配。

Azure Cosmos DB 中的 API

Azure Cosmos DB 提供多个数据库 API,包括 Core (SQL) API、MongoDB API、Cassandra API、Gremlin API 和表 API。 借助这些 API,可以使用文档、键-值、图和列系列数据模型来为真实数据建模。 应用程序可以通过这些 API 将 Azure Cosmos DB 视为如同其他各种数据库技术一样,并消除管理和缩放方法所产生的开销。 借助这些 API,Azure Cosmos DB 可帮助你使用过去你在数据建模和查询时所用的生态系统、工具与技能。

所有 API 都提供存储和吞吐量的自动缩放、灵活性及性能保证。 不存在最好的 API,你可以选择其中任何一个 API 来生成应用程序。 本文将帮助你根据工作负载和团队要求选择 API。

选择 API 时的注意事项

Core (SQL) API 已原生随附在 Azure Cosmos DB 中。

适用于 MongoDB、Cassandra、Gremlin 和表的 API 实现开源数据库引擎的线路协议。 如果满足以下条件,则这些 API 最适用:

  • 你有现有的 MongoDB、Cassandra 或 Gremlin 应用程序。
  • 你不想要重新编写整个数据访问层。
  • 你要为数据库使用开源开发人员生态系统、客户端驱动程序、专业技术和资源。
  • 你要利用重要的 Azure Cosmos DB 功能和特性(例如多区域分发、存储和吞吐量弹性缩放、高性能、低延迟、运行事务工作负载和分析工作负载的功能),并使用完全托管的平台。
  • 你要在多云环境中开发现代化应用。

可以使用这些 API 生成新应用程序,或迁移现有数据。 若要运行迁移的应用,请更改应用程序的连接字符串,然后像往常一样继续运行即可。 迁移现有应用时,请确保评估这些 API 的功能支持。

必须根据工作负载选择符合你的要求的 API。 下图显示的流程图说明了在生成新应用或将现有应用迁移到 Azure Cosmos DB 时如何选择适当的 API:

用于在 Azure Cosmos DB 中选择 API 的决策树。

Core (SQL) API

此 API 以文档格式存储数据。 它提供最佳的端到端体验,因为我们可以完全控制接口、服务和 SDK 客户端库。 为 Azure Cosmos DB 推出的任何新功能首先会在 SQL API 帐户中提供。 Azure Cosmos DB SQL API 帐户支持使用结构化查询语言 (SQL) 语法来查询项,这是用户最熟悉的且最流行的 JSON 对象查询语言之一。 若要了解详细信息,请参阅 SQL 查询入门一文。

如果你要从 Oracle、DynamoDB、HBase 等其他数据库进行迁移,并想要使用现代化技术来生成应用,则 SQL API 是建议的选项。 SQL API 支持分析,并在操作工作负载与分析工作负载之间提供性能隔离。

针对迁移到适用于 Core(SQL) 的 API 的容量规划

尝试为从现有数据库群集迁移到 Azure Cosmos DB SQL API 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。 * 若只知道现有分片和复制数据库群集中的 vCore 和服务器数量,请阅读使用 vCore 或 vCPU 估算请求单位 * 若知道当前数据库工作负载的典型请求速率,请阅读使用 Azure Cosmos DB 容量计划工具估算请求单位

适用于 MongoDB 的 API

此 API 通过 BSON 格式将数据存储在文档结构中。 它与 MongoDB 线路协议兼容;但是,它不使用任何本机 MongoDB 相关的代码。 如果你想要使用更广泛的 MongoDB 生态系统和技能,同时又想顺利地使用缩放、高可用性、异地复制、多个写入位置、自动和透明分片管理、在操作存储与分析存储之间进行透明复制等 Azure Cosmos DB 功能,则此 API 是不错的选择。

只需更改连接字符串,即可通过适用于 MongoDB 的 API 使用现有的 MongoDB 应用。 可以使用本机 MongoDB 工具(例如 mongodump 和 mongorestore)或 Azure 数据库迁移工具来移动任何现有数据。 MongoDB shell、MongoDB CompassRobo3T 等工具可以像在本机 MongoDB 中那样运行查询和处理数据。

适用于 MongoDB 的 API 与 MongoDB 服务器版本 4.0、3.6 和 3.2 兼容。 建议使用服务器版本 4.0,因为它提供最佳性能和完整功能支持。 有关详细信息,请参阅适用于 MongoDB 的 API 一文。

针对迁移到 API for MongoDB 的容量计划

尝试为从现有数据库群集迁移到 Azure Cosmos DB API for MongoDB 进行容量计划? 可以使用有关现有数据库群集的信息进行容量规划。

Cassandra API

此 API 在面向列的架构中存储数据。 Apache Cassandra 提供高度分布式的水平缩放方法来存储大量数据,并针对面向列的架构提供灵活的方法。 Azure Cosmos DB 中的 Cassandra API 符合这种与分布式 NoSQL 数据库接轨的理念。 Cassandra API 是与 Apache Cassandra 兼容的线路协议。 如果你想要受益于 Azure Cosmos DB 的弹性和完全托管性质,同时仍想要利用大部分原生的 Apache Cassandra 功能、工具和生态系统,应考虑使用 Cassandra API。 这意味着,在使用 Cassandra API 的情况下,无需管理 OS、Java VM、垃圾回收器、读/写性能、节点、群集等。

可以使用 Apache Cassandra 客户端驱动程序连接到 Cassandra API。 通过 Cassandra API,可以使用 Cassandra 查询语言 (CQL)、CQL shell 等工具和熟悉的 Cassandra 客户端驱动程序来与数据交互。 Cassandra API 目前仅支持 OLTP 方案。 借助 Cassandra API,还可以使用 Azure Cosmos DB 的独特功能,例如更改源。 有关详细信息,请参阅 Cassandra API 一文。

Gremlin API

此 API 可让用户发出图查询并将数据存储为边和顶点。 对于涉及动态数据、存在复杂关系的数据、过于复杂以致无法在关系数据库中建模的数据的方案,以及在你想要使用现有 Gremlin 生态系统和技能的情况下,请使用此 API。 Azure Cosmos DB 的 Gremlin API 将图数据库算法的强大功能与高度可缩放的托管基础结构结合在一起。 它针对与缺乏灵活性和关系型方法相关的最常见数据问题提供了独特且灵活的解决方法。 Gremlin API 目前仅支持 OLTP 方案。

Azure Cosmos DB 的 Gremlin API 基于 Apache TinkerPop 图计算框架。 Gremlin API 使用相同的图查询语言来引入和查询数据。 它使用 Azure Cosmos DB 的分区策略从图数据库引擎执行读/写操作。 Gremlin API 为开源 Gremlin 提供线路协议支持,因此你可以使用开源 Gremlin SDK 来生成应用程序。 对于复杂的分析图方案,Azure Cosmos DB Gremlin API 还可与 Apache Spark 和 GraphFrames 配合工作。 有关详细信息,请参阅 Gremlin API 一文。

表 API

此 API 以键/值格式存储数据。 如果你当前正在使用 Azure 表存储,可能会发现在延迟、缩放、吞吐量、多区域分发、索引管理和查询性能方面存在一些限制。 表 API 克服了这些限制;如果你想要利用 Azure Cosmos DB 的优势,建议迁移应用。 表 API 仅支持 OLTP 方案。

为 Azure 表存储编写的应用程序只需经过少量的代码更改即可迁移到表 API,然后便可利用高级功能。 有关详细信息,请参阅表 API 一文。

后续步骤