Partitionierung und horizontale Skalierung in Azure Cosmos DBPartitioning and horizontal scaling in Azure Cosmos DB

In diesem Artikel wird die Beziehung zwischen logischen und physischen Partitionen erörtert.This article explains the relationship between logical and physical partitions. Außerdem werden bewährte Methoden für die Partitionierung erläutert. Und Sie erhalten eine detaillierte Übersicht über die Funktionsweise der horizontalen Skalierung in Azure Cosmos DB.It also discusses best practices for partitioning and gives an in-depth view at how horizontal scaling works in Azure Cosmos DB. Sie müssen diese internen Details nicht unbedingt verstehen, um Ihren Partitionsschlüssel auswählen zu können, aber wir haben sie angeführt, damit Sie Klarheit über die Funktionsweise von Azure Cosmos DB haben.It's not necessary to understand these internal details to select your partition key but we have covered them so you have clarity for how Azure Cosmos DB works.

Logische PartitionenLogical partitions

Eine logische Partition besteht aus einer Gruppe von Elementen mit demselben Partitionsschlüssel.A logical partition consists of a set of items that have the same partition key. Beispielsweise enthalten alle Elemente in einem Container mit Daten über Nahrungsmittel eine foodGroup-Eigenschaft.For example, in a container that contains data about food nutrition, all items contain a foodGroup property. Sie können foodGroup als Partitionsschlüssel für den Container verwenden.You can use foodGroup as the partition key for the container. Elementgruppen mit bestimmten Werten für foodGroup (z. B. Beef Products, Baked Products und Sausages and Luncheon Meats) bilden eindeutige logische Partitionen.Groups of items that have specific values for foodGroup, such as Beef Products,Baked Products, and Sausages and Luncheon Meats, form distinct logical partitions. Sie müssen sich keine Gedanken über das Löschen einer logischen Partition machen, wenn die zugrunde liegenden Daten gelöscht werden.You don't have to worry about deleting a logical partition when the underlying data is deleted.

Eine logische Partition definiert auch den Bereich für Datenbanktransaktionen.A logical partition also defines the scope of database transactions. Sie können Elemente in einer logischen Partition mithilfe einer Transaktion mit Momentaufnahmeisolation aktualisieren.You can update items within a logical partition by using a transaction with snapshot isolation. Wenn einem Container neue Elemente hinzugefügt werden, werden neue logische Partitionen transparent vom System erstellt.When new items are added to a container, new logical partitions are transparently created by the system.

Es besteht keine Beschränkung für die Anzahl von logischen Partitionen in Ihrem Container.There is no limit to the number of logical partitions in your container. Jede logische Partition kann bis zu 20 GB Daten speichern.Each logical partition can store up to 20GB of data. Durch eine sinnvolle Auswahl des Partitionsschlüssels ergeben sich viele mögliche Werte.Good partition key choices have a wide range of possible values. Beispielsweise können in einem Container, in dem alle Elemente eine foodGroup-Eigenschaft aufweisen, die Daten innerhalb der logischen Partition Beef Products auf bis zu 20 GB anwachsen.For example, in a container where all items contain a foodGroupproperty, the data within the Beef Products logical partition can grow up to 20GB. Durch Auswählen eines Partitionsschlüssels mit einer Vielzahl möglicher Werte können Sie sicherstellen, dass der Container skaliert werden kann.Selecting a partition key with a wide range of possible values ensures that the container is able to scale.

Physische PartitionenPhysical partitions

Ein Azure Cosmos-Container wird skaliert, indem Daten und Durchsatz auf physische Partitionen verteilt werden.An Azure Cosmos container is scaled by distributing data and throughput across physical partitions. Intern wird mindestens eine logische Partition einer einzelnen physischen Partition zugeordnet.Internally, one or more logical partitions are mapped to a single physical partition. Die meisten kleinen Cosmos-Container verfügen über viele logische Partitionen, benötigen aber nur eine einzige physische Partition.Most small Cosmos containers have many logical partitions but only require a single physical partition. Im Gegensatz zu logischen Partitionen sind physische Partitionen eine interne Implementierung des Systems, und sie werden vollständig von Azure Cosmos DB verwaltet.Unlike logical partitions, physical partitions are an internal implementation of the system and they are entirely managed by Azure Cosmos DB.

Die Anzahl der physischen Partitionen in Ihrem Cosmos-Container hängt von folgenden Faktoren ab:The number of physical partitions in your Cosmos container depends on the following:

  • Der Menge des bereitgestellten Durchsatzes (jede einzelne physische Partition kann einen Durchsatz von bis zu 10.000 Anforderungseinheiten pro Sekunde bereitstellen)Amount of provisioned throughput (each individual physical partition can provide a throughput of up to 10,000 request units per second)
  • Dem gesamten Datenspeicher (jede einzelne physische Partition kann bis zu 50 GB speichern)Total data storage (each individual physical partition can store up to 50GB)

Es besteht keine Beschränkung für die Gesamtanzahl von physischen Partitionen in Ihrem Container.There is no limit to the total number of physical partitions in your container. Wenn der bereitgestellte Durchsatz oder die Datengröße zunimmt, erstellt Azure Cosmos DB automatisch neue physische Partitionen, indem die vorhandenen aufgeteilt werden.As your provisioned throughput or data size grows, Azure Cosmos DB will automatically create new physical partitions by splitting existing ones. Die Aufteilung physischer Partitionen hat keine Auswirkungen auf die Verfügbarkeit Ihrer Anwendung.Physical partition splits do not impact your application's availability. Nach der Aufteilung einer physischen Partition bleiben alle Daten innerhalb einer einzelnen logischen Partition weiterhin auf derselben physischen Partition gespeichert.After the physical partition split, all data within a single logical partition will still be stored on the same physical partition. Bei der Aufteilung physischer Partitionen wird einfach eine neue Zuordnung der logischen Partitionen zu physischen Partitionen erstellt.A physical partition split simply creates a new mapping of logical partitions to physical partitions.

Der für einen Container bereitgestellte Durchsatz wird gleichmäßig auf physische Partitionen aufgeteilt.Throughput provisioned for a container is divided evenly among physical partitions. Ein Partitionsschlüsselentwurf, der die Durchsatzanforderungen nicht gleichmäßig verteilt, kann „heiße“ Partitionen verursachen.A partition key design that doesn't distribute the throughput requests evenly might create "hot" partitions. „Heiße“ Partitionen können zu einer Ratenbegrenzung und einer ineffizienten Nutzung des bereitgestellten Durchsatzes sowie zu höheren Kosten führen.Hot partitions might result in rate-limiting and in inefficient use of the provisioned throughput, and higher costs.

Sie können die physischen Partitionen Ihres Containers im Azure-Portal auf dem Blatt Metriken im Abschnitt Speicher anzeigen:You can see your container's physical partitions in the Storage section of the Metrics blade of the Azure portal:

Anzeigen der Anzahl von physischen Partitionen

In diesem Beispielcontainer, für den wir /foodGroup als Partitionsschlüssel ausgewählt haben, stellt jedes der drei Rechtecke eine physische Partition dar.In this example container where we have chosen /foodGroup as our partition key, each of the three rectangles represents a physical partition. In der Abbildung entspricht der Partitionsschlüsselbereich einer physischen Partition.In the image, partition key range is the same as a physical partition. Die ausgewählte physische Partition enthält drei logische Partitionen: Beef Products, Vegetable and Vegetable Products und Soups, Sauces, and Gravies.The selected physical partition contains three logical partitions: Beef Products, Vegetable and Vegetable Products, and Soups, Sauces, and Gravies.

Wenn wir einen Durchsatz von 18.000 Anforderungseinheiten pro Sekunde (RU/s) bereitstellen, kann jede der drei physischen Partitionen 1/3 des insgesamt bereitgestellten Durchsatzes nutzen.If we provision a throughput of 18,000 request units per second (RU/s), then each of the three physical partition can utilize 1/3 of the total provisioned throughput. Innerhalb der ausgewählten physischen Partition können die logischen Partitionsschlüssel Beef Products, Vegetable and Vegetable Products und Soups, Sauces, and Gravies die 6.000 bereitgestellten RU/s der physischen Partition gemeinsam nutzen.Within the selected physical partition, the logical partition keys Beef Products, Vegetable and Vegetable Products, and Soups, Sauces, and Gravies can, collectively, utilize the physical partition's 6,000 provisioned RU/s. Weil der bereitgestellte Durchsatz gleichmäßig auf die physischen Partitionen Ihres Containers aufgeteilt ist, müssen Sie unbedingt einen Partitionsschlüssel auswählen, der den verbrauchten Durchsatz gleichmäßig aufteilt. Informationen hierzu finden Sie unter Auswählen eines Partitionsschlüssels.Because provisioned throughput is evenly divided across your container's physical partitions, it's important to choose a partition key that evenly distributes throughput consumption by choosing the right logical partition key. Wenn Sie einen Partitionsschlüssel auswählen, der den verbrauchten Durchsatz gleichmäßig auf logische Partitionen verteilt, stellen Sie sicher, dass der Durchsatzverbrauch auf den physischen Partitionen ausgeglichen ist.If you choose a partition key that evenly distributes throughput consumption across logical partitions, you will ensure that throughput consumption across physical partitions is balanced.

ReplikatgruppenReplica sets

Jede physische Partition besteht aus Replikatgruppen.Each physical partition consists of a set of replicas, also referred to as a replica set. Jede Replikatgruppe hostet eine Instanz der Azure Cosmos-Datenbank-Engine.Each replica set hosts an instance of the Azure Cosmos database engine. Eine Replikatgruppe macht die in der physischen Partition gespeicherten Daten dauerhaft, hochverfügbar und konsistent.A replica set makes the data stored within the physical partition durable, highly available, and consistent. Jedes Replikat, aus dem die physische Partition besteht, erbt das Speicherkontingent der Partition.Each replica that makes up the physical partition inherits the partition's storage quota. Alle Replikate einer physischen Partition unterstützen gemeinsam den Durchsatz, der der physischen Partition zugeordnet wurde.All replicas of a physical partition collectively support the throughput that's allocated to the physical partition. Replikatgruppen werden von Azure Cosmos DB automatisch verwaltet.Azure Cosmos DB automatically manages replica sets.

Die meisten kleinen Cosmos-Container benötigen nur eine einzige physische Partition, sie verfügen jedoch trotzdem über mindestens 4 Replikate.Most small Cosmos containers only require a single physical partition but will still have at least 4 replicas.

Die folgende Abbildung zeigt, wie logische Partitionen physischen Partitionen zugeordnet werden, die global verteilt sind:The following image shows how logical partitions are mapped to physical partitions that are distributed globally:

Abbildung zur Veranschaulichung der Azure Cosmos DB-Partitionierung

Nächste SchritteNext steps