大きいパーティション キーを持つコンテナーを作成する

適用対象: NoSQL

Azure Cosmos DB では、データの水平方向のスケーリングを実現するために、ハッシュ ベースのパーティション構成が使われます。 2019 年 5 月 3 日より前に作成されたすべての Azure Cosmos DB コンテナーでは、パーティション キーの最初の 101 バイトに基づいてハッシュを計算するハッシュ関数が使われています。 最初の 101 バイトが同じパーティション キーが複数ある場合、それらの論理パーティションは、サービスでは同じ論理パーティションだと見なされます。 これは、パーティション サイズのクォータが正しくない、複数のパーティション キーにわたって一意のインデックスが正しく適用されない、ストレージの分散が不均等になるなどの問題に至る可能性があります。 この問題を解決するため、大きいパーティション キーが導入されました。 Azure Cosmos DB では、値が最大 2 KB の大きいパーティション キーがサポートされるようになっています。

大きいパーティション キーは、拡張バージョンのハッシュ関数を有効にすることでサポートされ、最大 2 KB の大きなパーティション キーから一意のハッシュを生成できます。 ベスト プラクティスとして、この機能をサポートしていない古い Azure Cosmos DB SDK またはアプリケーションのサポートが必要な場合以外は、常に大きなパーティション キーをサポートするコンテナーを構成することをお勧めします。

大きいパーティション キーを作成する (Azure portal)

大きなパーティション キーを作成するには、Azure portal を使用して新しいコンテナーを作成するときに、[パーティション キーは 101 バイトよりも大きい] オプションをオンにします。 大きいパーティション キーを使う必要がない場合、または 1.18 より前の SDK バージョンでアプリケーションを実行する場合は、チェック ボックスをオフにします。

Azure portal を使って大きいパーティション キーを作成する

大きいパーティション キーを作成する (PowerShell)

大きいパーティション キーのサポートを使用してコンテナーを作成するには、次を参照してください。

大きいパーティション キーを作成する (.NET SDK)

.NET SDK を使って大きいパーティション キーを持つコンテナーを作成するには、PartitionKeyDefinitionVersion.V2 プロパティを指定します。 次の例では、PartitionKeyDefinition オブジェクト内で Version プロパティを指定し、それを PartitionKeyDefinitionVersion.V2 に設定する方法を示します。

Note

既定では、.NET SDK V2 を使用して作成されるすべてのコンテナーで、大きなパーティション キーはサポートされません。 既定では、.NET SDK V3 を使用して作成されるすべてのコンテナーで、大きなパーティション キーがサポートされます。

await database.CreateContainerAsync(
    new ContainerProperties(collectionName, $"/longpartitionkey")
    {
        PartitionKeyDefinitionVersion = PartitionKeyDefinitionVersion.V2,
    })

サポートされている SDK バージョン

大きいパーティション キーは、次の最小バージョンの SDK でサポートされています。

SDK の種類 最小バージョン
.NET 1.18
Java Sync 2.4.0
Java Async 2.5.0
REST API x-ms-version 要求ヘッダーを使用する 2017-05-03 より後のバージョン。
Resource Manager テンプレート バージョン 2 (partitionKey オブジェクト内の "version":2 プロパティを使用)。

現在、Power BI と Azure Logic Apps 内に大きなパーティション キーがあるコンテナーは使用できません。 これらのアプリケーションから、大きなパーティション キーなしでコンテナーを使用できます。

次のステップ