有关 Azure Cosmos DB for NoSQL 的常见问题解答

适用范围: NoSQL

如何开始针对 Azure Cosmos DB for NoSQL 进行开发?

首先必须注册 Azure 订阅。 注册 Azure 订阅后,可将 API for NoSQL 容器添加到 Azure 订阅。

软件开发工具包 (SDK) 适用于 .NET、Python、Node.js、JavaScript 和 Java。 开发人员也可以使用 REST API,从多个平台使用各种语言与 Azure Cosmos DB 资源进行交互。

是否有 Azure Cosmos DB for NoSQL 入门示例?

查看 API for NoSQL 的这些快速入门代码示例和模板:

Azure Cosmos DB for NoSQL 是否支持无架构数据?

是,API for NoSQL 使应用程序可以将任意 JSON 文档存储为项,而不需要架构定义或提示。 通过 Azure Cosmos DB for NoSQL 查询语言便可立即查询数据。

Azure Cosmos DB for NoSQL 是否支持 ACID(原子性、一致性、隔离性、持久性)事务?

是的,API for NoSQL 支持使用 SDK 中的批处理或以 JavaScript 存储过程和触发器形式表示的跨文档事务。 事务以每个容器内的单个分区为范围,且以 ACID 语义执行,也就是“全有或全无”,与其他并发执行的代码和用户请求隔离。 如果发生异常,将回滚整个事务。

如何创建 Azure Cosmos DB for NoSQL 数据库?

可使用下列某个工具创建数据集:

如何配置 Azure Cosmos DB for NoSQL 数据库本级用户和权限?

可以使用某个 Azure Cosmos DB for NoSQL SDK 或 REST API 来创建用户和权限。 有关详细信息,请参阅配置用户和资源令牌。 可以在容器级别以及其下的级别(例如文档级别、附件级别)使用资源令牌来创建权限。 目前不允许在数据库或帐户级别创建权限。

是否可以使用现有的 Microsoft Entra ID 帐户向 Azure Cosmos DB for NoSQL 进行身份验证?

是! Azure Cosmos DB 支持 Microsoft Entra 身份验证来管理服务及其资源(控制平面),以及执行数据、操作和查询(数据平面)。 使用 Azure 基于角色的访问控制功能执行控制平面身份验证。 可以使用预配置内置角色](../../role-based-access-control/built-in-roles.md) 或创建自定义角色。 使用 Azure 基于角色的访问控制,可以管理帐户、数据库、容器和元数据。 控制平面包括操作,其中包括但不限于这些示例。

  • 创建、替换或删除数据库 - 创建、替换或删除容器 - 读取或替换数据库吞吐量 - 读取或替换容器吞吐量 有关详细信息,请参阅 Azure Cosmos DB 控制平面基于角色的访问控制。 数据平面身份验证使用自定义 API 来实现 NoSQL 本机基于角色的访问控制。 使用此本机实现,还可以使用预配置或自定义角色。 使用本机基于角色的访问控制,可以执行查询、管理项或执行其他常见操作。 数据平面包括操作,其中包括但不限于这些示例。
  • 创建、替换、更新或删除项 - 修补项 - 执行查询 有关详细信息,请参阅 Azure Cosmos DB 数据平面基于角色的访问控制

Azure Cosmos DB for NoSQL 是否支持 SQL 查询语言?

结构化查询语言 (SQL) 是一种通常用于查询关系数据的语言。 API for NoSQL 具有派生自 SQL 的自定义 NoSQL 查询语言。 NoSQL 查询语言包括通常与 SQL Server 关联的 SQL 查询语言的子集以及各种特定于 NoSQL 的增强功能。 NoSQL 查询语言通过基于 JavaScript 的用户定义函数 (UDF),提供丰富的分层和关系运算符以及可扩展性。 JSON 语法允许将 JSON 文档模型化为带标签节点的树状,由 Azure Cosmos DB 的自动索引技术及 Azure Cosmos DB 的 SQL 查询方言使用。 有关使用此查询语言的信息,请参阅 NoSQL 查询

Azure Cosmos DB for NoSQL 是否支持 SQL 聚合函数?

API for NoSQL 支持通过聚合函数进行聚合,例如:通过 NoSQL 查询语言进行 COUNTMAXAVGSUM

Azure Cosmos DB for NoSQL 如何提供并发性?

API for NoSQL 通过 HTTP 实体标记或 ETag 支持乐观并发控制 (OCC)。 每项 API for NoSQL 资源都有一个 ETag,并且会在每次更新文档时在服务器上设置此 ETag。 ETag 标头和当前值包含在所有响应消息中。 ETag 可与 If-Match 标头配合使用,让服务器能够决定是否应该更新资源。 If-Match 值是用作检查依据的 ETag 值。 如果 ETag 值与服务器的 ETag 值匹配,就会更新资源。 如果 ETag 不再是最新状态,则服务器会拒绝该操作,并提供“HTTP 412 不满足前提条件”响应代码。 客户端接着必须重新提取资源,以获取该资源当前的 ETag 值。 此外,ETag 可以与 If-None-Match 标头配合使用,以确定是否需要重新提取资源。

大多数 API for NoSQL SDK 包括用于管理乐观并发控制的类。

如何将文档批量插入到 Azure Cosmos DB for NoSQL 中?

使用 .NET SDK 中的批量导入功能或用于 API for NoSQL 的 Java SDK 导入大量数据。 此功能会优化预配的吞吐量,以导入大量数据。

或者,通过 Python 或 Scala,使用 Apache Spark 大规模导入数据。

Azure Cosmos DB for NoSQL 是否支持资源链接高速缓存?

是,因为 Azure Cosmos DB for NoSQL 是 RESTful 服务,而资源链接固定不变,所以可以缓存。 API for NoSQL 客户端可以指定“If-None-Match”标头来读取任何资源,例如文档或容器,然后在服务器版本更改后更新其本地副本。

Azure Cosmos DB for NoSQL 的本地实例是否可用?

是的。 Azure Cosmos DB 模拟器提供对 Azure Cosmos DB 服务的高保真模拟。 它支持与 Azure Cosmos DB 相同的功能,适用于各种 API。 此功能包括支持创建项、查询项、预配容器和缩放容器。 可以使用模拟器的终结点来开发和测试应用程序。 然后,可以通过将连接字符串从模拟器更改为实时服务,以多区域规模将应用程序部署到 Azure。

为什么在门户中使用数据资源管理器时,系统会舍入 Azure Cosmos DB for NoSQL 项中的长浮点值?

此数据资源管理器限制是 JavaScript 的限制。 JavaScript 使用在电气和电子工程师研究所 (IEEE) 754 中指定的双精度浮点格式数字。 此数据类型可以安全地保存介于 (253 - 1) 和 253-1(即 9007199254740991)之间的数字。