Azure Cosmos DB でのパーティション分割と水平スケーリングPartitioning and horizontal scaling in Azure Cosmos DB

この記事では、Azure Cosmos DB の物理パーティションと論理パーティションについて説明します。This article explains physical and logical partitions in Azure Cosmos DB. スケーリングとパーティション分割のベスト プラクティスについても説明します。It also discusses best practices for scaling and partitioning.

論理パーティションLogical partitions

論理パーティションは、同じパーティション キーを持つ一連のアイテムで構成されます。A logical partition consists of a set of items that have the same partition key. たとえば、すべてのアイテムに City プロパティが含まれているコンテナーでは、City は、コンテナーのパーティション キーとして使用できます。For example, in a container where all items contain a City property, you can use City as the partition key for the container. LondonParisNYC など、City に特定の値を持つアイテムのグループが、個別の論理パーティションを形成します。Groups of items that have specific values for City, such as London, Paris, and NYC, form distinct logical partitions. 基になるデータを削除するときに、パーティションの削除方法を心配する必要はありません。You don't have to worry about deleting a partition when the underlying data is deleted.

Azure Cosmos DB では、コンテナーがスケーラビリティの基本単位です。In Azure Cosmos DB, a container is the fundamental unit of scalability. コンテナーに追加されたデータと、コンテナーに対してプロビジョニングしたスループットは、一連の論理パーティション全体で自動的に (水平方向に) パーティション分割されます。Data that's added to the container and the throughput that you provision on the container are automatically (horizontally) partitioned across a set of logical partitions. データとスループットは、Azure Cosmos コンテナーに指定したパーティション キーに基づいてパーティション分割されます。Data and throughput are partitioned based on the partition key you specify for the Azure Cosmos container. 詳細については、「Azure Cosmos コンテナーを作成する」を参照してください。For more information, see Create an Azure Cosmos container.

論理パーティションでは、データベース トランザクションのスコープも定義します。A logical partition also defines the scope of database transactions. 論理パーティション内のアイテムは、スナップショット分離が指定されたトランザクションを使用して更新することができます。You can update items within a logical partition by using a transaction with snapshot isolation. コンテナーに新しい項目が追加されると、新しい論理パーティションがシステムによって透過的に作成されます。When new items are added to a container, new logical partitions are transparently created by the system.

物理パーティションPhysical partitions

Azure Cosmos コンテナーは、多数の論理パーティションを超えてデータとスループットを分散することでスケーリングされます。An Azure Cosmos container is scaled by distributing data and throughput across a large number of logical partitions. 内部的には、1 つまたは複数の論理パーティションが、レプリカ セットとも呼ばれる一連のレプリカで構成される物理パーティションにマップされます。Internally, one or more logical partitions are mapped to a physical partition that consists of a set of replicas, also referred to as a replica set. 各レプリカ セットでは、Azure Cosmos データベース エンジンのインスタンスがホストされます。Each replica set hosts an instance of the Azure Cosmos database engine. レプリカ セットにより、物理パーティション内に格納されたデータの耐久性、高可用性、一貫性が確保されます。A replica set makes the data stored within the physical partition durable, highly available, and consistent. 物理パーティションでは、最大量のストレージと要求ユニット (RU) がサポートされます。A physical partition supports the maximum amount of storage and request units (RUs). 物理パーティションを構成する各レプリカは、そのパーティションのストレージ クォータを継承します。Each replica that makes up the physical partition inherits the partition's storage quota. 物理パーティションのすべてのレプリカは、物理パーティションに割り当てられたスループットを一元的にサポートします。All replicas of a physical partition collectively support the throughput that's allocated to the physical partition.

次の図は、グローバルに分散されている物理パーティションに論理パーティションがどのようにマップされているかを示しています。The following image shows how logical partitions are mapped to physical partitions that are distributed globally:

Azure Cosmos DB パーティション分割を示す図

コンテナーに対してプロビジョニングされたスループットは、物理パーティション間で均等に分割されます。Throughput provisioned for a container is divided evenly among physical partitions. スループット要求を均等に分散しないパーティション キーの仕様により、"ホット" パーティションが作成される可能性があります。A partition key design that doesn't distribute the throughput requests evenly might create "hot" partitions. ホット パーティションによって、レート制限が発生し、プロビジョニングされたスループットを効率的に使用できなくなり、コストが高くなる場合があります。Hot partitions might result in rate-limiting and in inefficient use of the provisioned throughput, and higher costs.

論理パーティションとは異なり、物理パーティションはシステムの内部実装です。Unlike logical partitions, physical partitions are an internal implementation of the system. 物理パーティションのサイズ、配置、または数は制御できません。また、論理パーティションと物理パーティションの間のマッピングは制御できません。You can't control the size, placement, or count of physical partitions, and you can't control the mapping between logical partitions and physical partitions. ただし、適切な論理パーティション キーを選択することによって、論理パーティションの数、データ、ワークロード、スループットの分散を制御することができます。However, you can control the number of logical partitions and the distribution of data, workload and throughput by choosing the right logical partition key.

次の手順Next steps