分析ストアが有効なコンテナーを作成する
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 で新しいコンテナーを作成するときに分析ストアのサポートを有効にするには、次に示すように、[分析ストア] に対して [オン] オプションを選択します。
または、次に示すように、Cosmos DB アカウントのページの [統合] セクションの [Azure 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 に設定した後は、コンテナーで分析ストアのサポートを再度有効にすることはできません。