分析ストアが有効なコンテナーを作成する

完了

Azure Cosmos DB アカウントで Azure Synapse Link を有効にしたら、分析ストアをサポートするコンテナーを作成または更新できます。

分析ストアは、行ベースの運用ストアと同じコンテナー内にある列ベースのストアです。 "自動同期" プロセスでは、運用ストアの変更を分析ストアに同期します。そこから、運用ストアで処理オーバーヘッドを発生させることなく、クエリを実行できます。

分析ストアのスキーマの種類

運用ストアのデータが分析ストアに同期されると、スキーマは動的に更新され、同期されているドキュメントの構造が反映されます。 この動的スキーマ メンテナンスの具体的な動作は、Azure Cosmos DB アカウント用に構成された分析ストアのスキーマの種類によって異なります。 次の 2 種類のスキーマ表現がサポートされています。

  • 明確に定義された: Azure Cosmos DB for NoSQL アカウントの既定のスキーマの種類。
  • 完全に忠実な: Azure Cosmos DB for MongoDB アカウントの既定の (また唯一サポートされている) スキーマの種類。

分析ストアは、運用ストアから JSON データを受け取り、列ベースの構造に整理します。 明確に定義されたスキーマでは、JSON フィールドに最初に現れる null 以外の値によって、そのフィールドのデータ型が決定されます。 フィールドの後続の値で割り当てられたデータ型と互換性のないものは、分析ストアに取り込まれません。

たとえば、次の 2 つの JSON ドキュメントについて考えてみます。

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

最初のドキュメントでは、productID フィールドは数 (整数) の値であると判断されます。 2 番目のドキュメントが処理されるとき、その productID フィールドは文字列値を持つため、分析ストアにはインポートされません。 ドキュメントとそのフィールドの残りの部分はインポートされますが、互換性のないフィールドは削除されます。 次の列は、分析ストア内のデータを表します。

productID productName
123 ウィジェット
Wotsit

完全に忠実なスキーマでは、データ型はフィールドの各インスタンスに追加され、必要に応じて新しい列が作成されます。次の表に示すように、分析ストアが 1 つのフィールドに対して複数の出現を含み、それぞれが異なるデータ型を持つことができます。

productID.int32 productName.string productID.string
123 ウィジェット
Wotsit 124

Note

詳細については、「Azure Cosmos DB 分析ストアとは」を参照してください。

コンテナーで分析ストアのサポートを有効にする

新しいコンテナーを作成するとき、または既存のコンテナーに対して、分析ストアのサポートを有効にすることができます。 分析ストアのサポートを有効にするには、Azure portal を使用するか、コマンド ラインまたはスクリプトから Azure CLI または Azure PowerShell を使用できます。

Azure ポータルの使用

Azure portal で新しいコンテナーを作成するときに分析ストアのサポートを有効にするには、次に示すように、[分析ストア] に対して [オン] オプションを選択します。

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 MongoDB コンテナーで分析ストアのサポートを有効にするには、az cosmosdb sql container create コマンド (新しいコンテナーを作成する) または az cosmosdb sql container update コマンド (既存のコンテナーを構成する) を --analytical-storage-ttl パラメーターと共に実行し、分析データの保持時間を割り当てます。 -1-analytical-storage-ttl パラメーターを指定すると、分析データの永続的な保持が有効になります。 たとえば、次のコマンドを実行すると、分析ストアがサポートされた 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 アカウントの場合は、az cosmosdb mongodb collection create または az cosmosdb mongodb collection update コマンドを --analytical-storage-ttl パラメーターと共に使用できます。 Azure Cosmos DB for Apache Gremlin アカウントの場合は、az cosmosdb gremlin graph create または az cosmosdb gremlin graph update コマンドを --analytical-storage-ttl パラメーターと共に使用します。

Azure PowerShell の使用

Azure PowerShell を使用して Azure Cosmos DB for NoSQL コンテナーで分析ストアのサポートを有効にするには、New-AzCosmosDBSqlContainer コマンドレット (新しいコンテナーを作成する) または Update-AzCosmosDBSqlContainer コマンドレット (既存のコンテナーを構成する) を -AnalyticalStorageTtl パラメーターと共に実行し、分析データの保持時間を割り当てます。 -1-AnalyticalStorageTtl パラメーターを指定すると、分析データの永続的な保持が有効になります。 たとえば、次のコマンドを実行すると、分析ストアがサポートされた 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 アカウントの場合は、New-AzCosmosDBMongoDBCollection または Update-AzCosmosDBMongoDBCollection コマンドレットを -AnalyticalStorageTtl パラメーターと共に使用します。

分析ストアのサポートを有効にする場合の考慮事項

分析ストアのサポートは、コンテナーを削除しないと無効にできません。 分析ストアの TTL 値を 0 または null に設定すると、運用ストアから新しい項目が同期されなくなり、既に同期されている項目を分析ストアから削除することで、事実上、分析ストアを無効にすることができます。 この値を 0 に設定した後は、コンテナーで分析ストアのサポートを再度有効にすることはできません。