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

完了

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

Azure portal で新しいコンテナーを作成する際の [分析ストア] オプションを示すスクリーンショット。

または、次に示すように、Cosmos DB アカウントのページの [統合] セクションの [Azure Synapse Link] ページで、既存のコンテナーの分析ストア サポートを有効にすることもできます。

Azure portal の [Azure Synapse Link] ページを示すスクリーンショット。既存のコンテナーが選択され、[コンテナーで Synapse Link を有効にする] ボタンが有効になっている。

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 に設定した後は、コンテナーで分析ストアのサポートを再度有効にすることはできません。