Azure Cosmos DB での階層パーティション キーについてよく寄せられる質問 (プレビュー)

適用対象: SQL API Cassandra API Gremlin API Table API MongoDB 用 Azure Cosmos DB API

階層パーティション キー (サブパーティション分割) を使用すると、パーティション キーに対して最大 3 レベルの階層を構成して、データ分散をさらに最適化し、より高いスケールを実現できます。 この記事では、Azure Cosmos DB の階層パーティション キーに関してよく寄せられる質問に回答します。

論理パーティション キーのサイズに対してストレージ制限はありますか?

はい。 現在の Cosmos DB と同様に、論理パーティションのサイズはまだ 20 GB に制限されています。 ただし、階層パーティション キーでは、論理パーティションがパーティション キー パスの全体になります。 たとえば、TenantId -> UserId でパーティション分割した場合、論理パーティションの例は "Contoso_Alice" になります。 サブパーティション分割を使用すると、パーティション キーの値が "Contoso_Alice" の場所に 20 GB のデータを保持できます。 "Contoso" のデータに対して許可されるストレージの量は、実質的に、20 GB に "Contoso" テナントの一意の UserId の数を掛けたものになります。

物理パーティションのストレージと RU/秒の制限に変更はありますか?

いいえ。 現在の Cosmos DB と同様に、物理パーティションは 50 GB のストレージを保持し、最大 10,000 RU/秒を提供できます。 ただし、階層パーティション キーでは、特定のパーティション キー プレフィックス (TenantId など) のデータが複数の物理パーティションに存在する場合、サブパーティション分割により、1 つの TenantId で達成可能な RU/秒の合計が 10,000 RU/秒を超えることができるようになります。

クエリを実行し、パスの "中間" のパーティション キーのみを指定した場合はどうなりますか?

クエリは引き続きパーティション間クエリになります。 たとえば、TenantId -> UserId でパーティション分割されている場合、クエリで UserId のみを指定すると、このクエリはすべての物理パーティションにファンアウトします。

TenantId -> UserId の例を使用してクエリを効率的にルーティングするには、2 つのオプションがあります。

  • TenantId を指定します。 クエリは、TenantId データを含むすべての物理パーティションに送られます。
  • TenantId と UserId の両方を指定します。 クエリは、TenantId と特定の UserId を含む単一の物理パーティションに送られます。

この機能を使用するには、ドキュメントに新しいプロパティを作成する必要がありますか?

いいえ。 コンテナーの作成時に、使用するパーティション キー パスの階層を指定します。 たとえば、TenantId -> UserId でパーティション分割する場合、これらの値を連結して新しいプロパティを作成する必要はありません。 各ドキュメントに、プロパティ TenantId とプロパティ UserId があることを確認します。 詳細については、サブパーティション分割のコード例を参照してください。

次の手順