有关适用于Azure Cosmos DB 的 Azure Synapse Link 的常见问题

适用对象: NoSQL MongoDB Gremlin

Azure Synapse Link for Azure Cosmos DB 在 Azure Cosmos DB 和 Azure Synapse Analytics 之间建立紧密的集成。 它使客户能够通过与事务工作负荷的完全性能隔离且无需 ETL 管道对其操作数据运行准实时分析。 本文解答有关 Synapse Link for Azure Cosmos DB 的常见问题。

常见问题解答

Azure Cosmos DB API for NoSQL 和 Azure Cosmos DB API for MongoDB 支持 Azure Synapse Link。 对 Azure Cosmos DB API for Gremlin 的支持目前处于预览阶段。

是的,对于多区域 Azure Cosmos DB 帐户,存储在分析存储中的数据也是多区域分布的。 分析存储还将存在于你具有事务存储的所有区域中。 无论是单一写入区域还是多个写入区域,都可以从最近的本地区域提供从 Azure Synapse Analytics 执行的分析查询。

为多区域帐户启用 Azure Synapse Link 后,在客户选择用于事务异地复制的所有区域中都会创建分析存储。 基础数据针对事务存储中的吞吐量和事务一致性进行了优化。

所有 Azure Cosmos DB 区域中是否都支持分析存储?

是的。

目前,在帐户级别启用 Synapse Link 功能后,无法禁用它。 如果在帐户级别启用了 Synapse Link 功能,但没有启用了分析存储的容器,则不会产生计费影响。

如果需要关闭该功能,请删除并重新创建新的 Azure Cosmos DB 帐户,根据需要迁移数据。

分析存储是否对 Azure Cosmos DB 事务性 SLA 有一些影响?

不,没有影响。

是的,对 API for MongoDB 和 API for NoSQL 数据库帐户都有影响。 对 MongoDB 帐户使用 CLI 或 PowerShell。

需要“参与者”角色才能在帐户级别启用 Synapse Link。

Azure Cosmos DB 分析存储

我是否可以在现有容器上启用分析存储?

是的。 目前可以使用 Azure 门户、Azure CLI、PowerShell 或 Azure Cosmos DB SDK 为现有 API for NoSQL 容器启用分析存储。 还可以将 Azure CLI 或 PowerShell 用于现有 API for MongoDB 集合。

是否可以使用 Azure 数据资源管理器查看分析存储文件?

否。 分析存储保留在 Cosmos DB 内部订阅中的存储帐户中。 客户无权访问此存储帐户,必须使用 Azure Synapse 运行时来读取数据。

是否可以在 Azure Cosmos DB 容器上启用分析存储?

是的,可以使用 PowerShell 或 CLI 在 API for NoSQL 容器和 API for MongoDB 集合中禁用分析存储。 目前该操作无法撤消。

具有自动缩放预配吞吐量的 Azure Cosmos DB 容器是否支持分析存储?

是的,可以在具有自动缩放预配吞吐量的容器上启用分析存储。

是否会影响 Azure Cosmos DB 事务存储预配 RU?

Azure Cosmos DB 保证事务和分析工作负荷之间的性能隔离。 在容器上启用分析存储时,不会影响 Azure Cosmos DB RU/s。 分析存储的事务(读取和写入)和存储成本单独收费。 有关更多详细信息,请参阅 Azure Cosmos DB 分析存储的定价

是否可以限制对 Azure Cosmos DB 分析存储的网络访问?

可以,你可以配置托管的专用终结点并限制分析存储对 Azure Synapse 托管虚拟网络的网络访问。 托管的专用终结点建立与分析存储的专用链接。

可以将事务存储和分析存储专用终结点同时添加到 Azure Synapse Analytics 工作区中的同一 Azure Cosmos DB 帐户。 如果只想运行分析查询,则可能只想在 Synapse Analytics 工作区中启用分析专用终结点。

能否将客户管理的密钥用于 Azure Cosmos DB 分析存储?

可以采用自动且透明的方式使用相同的客户管理密钥无缝地跨事务存储和分析存储加密数据。 若要在分析存储中使用客户管理的密钥,需在 Azure Key Vault 访问策略中使用由 Azure Cosmos DB 帐户的系统分配的托管标识。 然后,你应能够在帐户上启用分析存储。 单击此处了解更多信息。

对事务存储的删除和更新操作是否反映在分析存储中?

是的,对事务存储中的数据的删除和更新会反映在分析存储中。 可以在容器上配置生存时间 (TTL) 以包括历史数据,以便分析存储保留满足分析 TTL 条件的项的所有版本。 有关更多详细信息,请参阅分析 TTL 概述

我是否可以从 Azure Synapse Analytics 以外的分析引擎连接到分析存储?

只能使用 Azure Synapse Analytics 提供的各种运行时来访问和运行针对分析存储的查询。 可以使用以下对象查询和分析分析存储:

  • 完全支持 Scala、Python、SparkSQL 和 C# 的 Synapse Spark。 Synapse Spark 是数据工程和科学方案的核心
  • 采用 T-SQL 语言且支持熟悉的 BI 工具(例如 Power BI Premium 等)的无服务器 SQL 池

我是否可以从预配的 Synapse SQL 连接到分析存储?

目前,无法从预配的 Synapse SQL 访问分析存储。

我是否可以将 Synapse 中的查询聚合结果写回到分析存储?

否,分析存储是只读的。

从事务存储到分析存储的自动同步复制是异步的还是同步的,以及有哪些延迟?

自动同步延迟通常在 2 分钟内。 如果共享吞吐量数据库拥有大量容器,则单个容器的自动同步延迟可能会更高,最长可能达 5 分钟。

是否有事务存储中的项不会自动传播到分析存储的方案?

如果容器中的特定项违反了用于分析的定义完善的架构,则不会将其包含在分析存储中。

我是否可以使用与对事务存储中的数据进行分区的不同方式,对分析存储中的数据进行分区?

默认情况下,分析存储不分区。 如果分析查询具有经常使用的筛选器,请使用自定义分区来提高性能。 单击此处了解更多信息。

我是否可以自定义或覆盖在分析存储中将事务数据转换为纵栏格式的方式?

目前,当数据项自动从事务存储传播到分析存储时,无法对其进行转换。 如果你的方案被此限制阻止,请向 Azure Cosmos DB 团队发送电子邮件。

能否使用 Azure Cosmos DB SDK 访问分析存储?

否,无法通过 Azure Cosmos DB SDK 访问分析存储。 需要使用 Azure Synapse Analytics、Spark 或 SQL 无服务器池。

能否使用 Azure Cosmos DB REST API 访问分析存储?

否,无法通过 Azure Cosmos DB REST API 访问分析存储。 需要使用 Azure Synapse Analytics、Spark 或 SQL 无服务器池。

Terraform 是否支持分析存储?

目前 Terraform 不支持分析存储容器。 有关详细信息,请查看 Terraform GitHub 问题

至少需要“操作员”角色才能启用 Synapse Link,以便在容器或集合级别启用分析存储。

分析生存时间 (TTL)

是否在容器和项级别支持分析数据的 TTL?

目前,分析数据的 TTL 只能在容器级别配置,不支持在项级别设置分析 TTL。

在 Azure Cosmos DB 容器上设置容器级别分析 TTL 后,我是否可以在以后将其更改为其他值?

是的,可以将分析 TTL 更新为任何有效的值。 有关分析 TTL 的更多详细信息,请参阅分析 TTL 一文。

某个项在事务存储中超过 TTL 后,我是否可以在分析存储中更新或删除该项?

所有事务更新和删除都将复制到分析存储,但如果已从事务存储中清除该项,则无法在分析存储中更新。 若要了解详细信息,请参阅分析 TTL 一文。

计费

Azure Synapse Link 的计费模型包括使用 Azure Cosmos DB 分析存储和 Synapse 运行时所产生的成本。 若要了解详细信息,请参阅 Azure Cosmos DB 分析存储定价Azure Synapse Analytics 定价文章。

无。 仅当创建已启用分析存储的容器并开始加载数据时,才会产生费用。

安全

对分析存储进行身份验证的方式有哪些?

对分析存储进行身份验证的方式与对事务存储进行身份验证的方式相同。 对于给定的数据库,可以使用主密钥或只读密钥进行身份验证。 可以使用 Azure Synapse Studio 中的链接服务,以避免将 Azure Cosmos DB 密钥粘贴到 Spark 笔记本中。 有权访问工作区的所有用户都可以访问此链接服务。 使用 Synapse 无服务器 SQL 池时,可以通过预先创建并在 OPENROWSET 函数中引用 SQL 凭据来查询 Azure Cosmos DB 分析存储。 如要了解详细信息,请参阅在 Azure Synapse Link 中使用无服务器 SQL 池进行查询一文。

可以,Azure Synapse Link 支持使用 Azure Cosmos DB 帐户的托管标识来配置客户管理的密钥。 可以采用自动且透明的方式使用相同的客户管理密钥无缝地跨事务存储和分析存储加密数据。 若要了解详细信息,请参阅使用 Azure Cosmos DB 帐户的托管标识来配置客户管理的密钥一文。

是的,可以单独控制对事务性和分析存储中的数据的网络访问。 在 Azure Synapse 工作区的托管虚拟网络内,为每个存储使用单独的托管专用终结点进行网络隔离。 如要了解详细信息,请参阅如何为分析存储配置专用终结点一文。

为数据库帐户启用 Azure 专用链接后,我收到错误 403(无法检索一个或多个容器的分析存储并且状态响应状态代码未指示成功:403 [禁止访问])。 发生了什么情况?

通常,403 是由于网络/防火墙设置阻止用户访问特定数据,甚至从门户访问也是如此。 此问题最常见的原因是使用专用终结点启用网络隔离过程的第 1 步尚未通过 Azure CLI 或 PowerShell 执行。 此处提供了更多详细信息。

Synapse 运行时

当前支持的用于访问 Azure Cosmos DB 分析存储的 Synapse 运行时有哪些?

Azure Synapse 运行时 当前支持
Azure Synapse Spark 池 读取、写入(通过事务存储)、表、临时视图
Azure Synapse 无服务器 SQL 池 读取、查看
Azure Synapse SQL 预配 不可用

Spark 表与 SQL 无服务器表同步的方式是否和与 Azure Data Lake 同步的方式相同?

目前此功能不可用。

我是否可以从分析存储执行 Spark 结构化流式处理?

目前,对 Azure Cosmos DB 的 Spark 结构化流式处理支持是使用事务存储的更改源功能实现的,并且尚不受分析存储支持。

是否支持流式处理?

我们不支持从分析存储流式传输数据。

Azure Synapse Studio

在 Azure Synapse Studio 中,如何识别是否连接到启用了分析存储的 Azure Cosmos DB 容器?

使用分析存储启用的 Azure Cosmos DB 容器具有以下图标:

Azure Cosmos DB container enabled with analytical store- icon

事务存储容器使用以下图标表示:

Azure Cosmos DB container enabled with transactional store- icon

如何从 Azure Synapse Studio 传递 Azure Cosmos DB 凭据?

目前,Azure Cosmos DB 凭据是由有权访问 Azure Cosmos DB 数据库的用户在创建链接服务时传递的。 有权访问工作区的其他用户可以访问该存储。

我可以使用 SQL Server Management Studio 查询使用 Synapse 无服务器 SQL 池的分析存储吗?

是的。