Compartir a través de

有关 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 数据库?

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

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

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

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

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)之间的数字。

安全性

什么是基于角色的访问控制 (RBAC)?

基于角色的访问控制 (RBAC) 是一种基于企业中单个用户的角色来规范对计算机或网络资源的访问的方法。 在 Azure Cosmos DB 中,RBAC 用于向用户和应用程序授予数据平面访问权限。 有关基于角色的访问控制中的各种术语的详细信息,请参阅安全性术语表

如何为 Azure Cosmos DB for NoSQL 启用基于角色的数据访问控制?

使用 Azure Cosmos DB 本机基于角色的访问控制 (RBAC) 功能向用户和应用程序授予数据平面访问权限。 有关详细信息,请参阅授予数据平面基于角色的访问权限

哪些 Azure Cosmos DB API 支持数据平面基于角色的访问控制?

到目前为止,仅支持 NoSQL API。

是否可以从 Azure 门户管理角色定义和角色分配?

尚未提供对角色管理的 Azure 门户支持。

Azure Cosmos DB API for NoSQL 中的哪些 SDK 支持基于角色的访问控制?

目前支持 .NET V3、Java V4、JavaScript V3 和 Python V4.3+ SDK。

Azure Cosmos DB SDK 在过期时是否自动刷新 Microsoft Entra 令牌?

是的。

使用基于角色的访问控制时,可以禁用帐户主/辅助密钥吗?

是的。 有关详细信息,请参阅禁用基于密钥的身份验证