创建启用了分析存储的容器

已完成

在 Azure Cosmos DB 帐户中启用 Azure Synapse Link 后,可以创建或更新支持分析存储的容器。

分析存储是与基于行的操作存储相同的容器中的基于列的存储。 自动同步过程将操作存储中的更改同步到分析存储,可以在其中进行查询,而不会在操作存储中产生处理开销。

分析存储架构类型

当操作存储中的数据同步到分析存储时,架构会动态更新,以反映正在同步的文档的结构。 此动态架构维护的特定行为取决于针对 Azure Cosmos DB 帐户配置的分析存储架构类型。 支持两种类型的架构表示形式:

  • 明确定义:Azure Cosmos DB for NoSQL 帐户的默认架构类型。
  • 完全保真:Azure Cosmos DB for MongoDB 帐户的默认(且仅支持)的架构类型。

分析存储从操作存储接收 JSON 数据,并将其组织为基于列的结构。 在明确定义的架构中,JSON 字段的第一个非 null 匹配项决定了该字段的数据类型。 与所分配数据类型不兼容的字段的后续匹配项不会引入到分析存储中。

例如,请对以下两个 JSON 文档进行思考:

{"productID": 123, "productName": "Widget"}
{"productID": "124", "productName": "Wotsit"}

第一个文档确定 productID 字段是数(整数)值。 遇到第二个文档时,其 productID 字段具有字符串值,因此不会导入到分析存储中。 文档及其其余字段被导入,但不兼容的字段被删除。 以下列表示分析存储中的数据:

productID productName
123 小组件
Wotsit

在完全保真架构中,数据类型将追加到字段的每个实例,并根据需要创建新列,这使得分析存储能够包含字段的多个匹配项,每个字段具有不同的数据类型,如下表所示:

productID.int32 productName.string productID.string
123 小组件
Wotsit 124

注意

有关详细信息,请参阅什么是 Azure Cosmos DB 分析存储?

在容器中启用分析存储支持

可以在创建新容器时或为现有容器启用分析存储支持。 若要启用分析存储支持,可以使用Azure 门户,也可以从命令行或脚本中使用 Azure CLI 或 Azure PowerShell。

使用 Azure 门户

若要在 Azure 门户中创建新容器时启用分析存储支持,请为“分析存储”选择“启用”选项,如下所示:

Screenshot showing the Analytical Store option when creating a new container in the Azure portal.

或者,可以在 Cosmos DB 帐户页面的“集成”部分的“Azure Synapse Link”页中为现有容器启用分析存储支持,如下所示:

Screenshot showing the Azure Synapse Link page in the Azure portal, with an existing container selected and the Enable Synapse Link on your container button enabled.

使用 Azure CLI

若要使用 Azure CLI 在 Azure Cosmos DB for NoSQL 容器中启用分析存储支持,请使用 --analytical-storage-ttl 参数运行 az cosmosdb sql container create 命令(用于创建新容器)或 az cosmosdb sql container update 命令(用于配置现有容器),从而为分析数据分配保留时间。 将 -analytical-storage-ttl 参数指定为 -1 可永久保留分析数据。 例如,以下命令创建名为 my-container 的新容器,其中包含分析存储支持。

az cosmosdb sql container create --resource-group my-rg --account-name my-cosmos-db --database-name my-db --name my-container --partition-key-path "/productID" --analytical-storage-ttl -1

对于 Azure Cosmos DB for MongoDB 帐户,可以使用 --analytical-storage-ttl 参数运行 az cosmosdb mongodb collection createaz cosmosdb mongodb collection update 命令。 对于 Azure Cosmos DB for Apache Gremlin 帐户,使用 --analytical-storage-ttl 参数运行 az cosmosdb gremlin graph createaz cosmosdb gremlin graph update 命令。

使用 Azure PowerShell

若要使用 Azure PowerShell 在 Azure Cosmos DB for NoSQL 容器中启用分析存储支持,请使用 -AnalyticalStorageTtl 参数运行 New-AzCosmosDBSqlContainer cmdlet(用于创建新容器)或 Update-AzCosmosDBSqlContainer cmdlet(用于配置现有容器),从而为分析数据分配保留时间。 将 -AnalyticalStorageTtl 参数指定为 -1 可永久保留分析数据。 例如,以下命令创建名为 my-container 的新容器,其中包含分析存储支持。

New-AzCosmosDBSqlContainer -ResourceGroupName "my-rg" -AccountName "my-cosmos-db" -DatabaseName "my-db" -Name "my-container" -PartitionKeyKind "hash" -PartitionKeyPath "/productID" -AnalyticalStorageTtl -1

对于 Azure Cosmos DB for MongoDB API 帐户,使用 -AnalyticalStorageTtl 参数运行 New-AzCosmosDBMongoDBCollectionUpdate-AzCosmosDBMongoDBCollection cmdlet。

启用分析存储支持的注意事项

如果不删除容器,就无法禁用分析存储支持。 将分析存储 TTL 值设置为 0 或 null 将不再从操作存储中同步新项目并删除已从分析存储中同步的项目,从而有效地禁用分析存储。 将此值设置为 0 后,无法在容器中重新启用分析存储支持。