Einführung zum bereitgestellten Durchsatz in Azure Cosmos DB
GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle
Mit Azure Cosmos DB können Sie bereitgestellten Durchsatz für Ihre Datenbanken und Container festlegen. Es gibt zwei Arten von bereitgestelltem Durchsatz: Standard (manuell) oder automatische Skalierung. In diesem Artikel erhalten Sie einen Überblick über die Funktionsweise des bereitgestellten Durchsatzes.
Eine Azure Cosmos DB-Datenbank ist eine Verwaltungseinheit für eine Gruppe von Containern. Eine Datenbank besteht aus einem Satz von schemaunabhängigen Containern. Ein Azure Cosmos DB-Container ist die Skalierungseinheit für Durchsatz und Speicher. Ein Container wird horizontal über eine Gruppe von Computern innerhalb einer Azure-Region partitioniert und auf alle Azure-Regionen verteilt, die Ihrem Azure Cosmos DB-Konto zugeordnet sind.
Mit Azure Cosmos DB können Sie Durchsatz in zwei Größen bereitstellen:
- Azure Cosmos DB-Container
- Azure Cosmos DB-Datenbanken
Festlegen des Durchsatzes für einen Container
Der für einen Azure Cosmos DB-Container bereitgestellte Durchsatz ist ausschließlich für diesen Container reserviert. Der Container erhält den bereitgestellten Durchsatz durchgängig. Der bereitgestellte Durchsatz für einen Container wird finanziell durch SLAs gesichert. Informationen zum Konfigurieren des standardmäßigen (manuellen) Durchsatzes für einen Container finden Sie unter Bereitstellen von Durchsatz für einen Azure Cosmos DB-Container. Informationen zum Konfigurieren des automatisch skalierten Durchsatzes für einen Container finden Sie unter Bereitstellen von automatisch skaliertem Durchsatz.
Das Festlegen von bereitgestelltem Durchsatz für einen Container ist die am häufigsten genutzte Option. Sie können den Durchsatz für einen Container elastisch skalieren, indem Sie mithilfe von Anforderungseinheiten (Request Units, RUs) eine beliebige Menge an Durchsatz bereitstellen.
Der für einen Container vorgesehene Durchsatz wird gleichmäßig auf die physischen Partitionen verteilt, und unter der Annahme eines guten Partitionsschlüssels, der die logischen Partitionen gleichmäßig auf die physischen Partitionen verteilt, wird der Durchsatz auch gleichmäßig auf alle logischen Partitionen des Containers verteilt. Es ist nicht möglich, den Durchsatz für logische Partitionen selektiv anzugeben. Da mindestens eine logische Partition eines Containers auf einer physischen Partition gehostet wird, gehören die physischen Partitionen ausschließlich zu dem Container und unterstützen den Durchsatz für den Container.
Wenn die Workload in einer logischen Partition mehr als den Durchsatz verbraucht, der der zugrunde liegenden physischen Partition zugewiesen wurde, werden Ihre Vorgänge möglicherweise ratenbegrenzt. Eine sogenannte heiße Partition tritt auf, wenn eine logische Partition unverhältnismäßig mehr Anforderungen als andere Partitionsschlüsselwerte aufweist.
Bei einer Ratenbegrenzung können Sie entweder den bereitgestellten Durchsatz für den gesamten Container erhöhen oder die Vorgänge wiederholen. Sie sollten auch sicherstellen, dass Sie einen Partitionsschlüssel auswählen, mit dem das Speicher- und Anforderungsvolumen gleichmäßig verteilt wird. Weitere Informationen zum Partitionieren finden Sie unter Partitionierung und horizontale Skalierung in Azure Cosmos DB.
Es wird empfohlen, den Durchsatz auf Containerebene zu konfigurieren, wenn Sie eine vorhersagbare Leistung für den Container benötigen.
Die folgende Abbildung zeigt, wie eine physische Partition eine bzw. mehrere logische Partitionen eines Containers hostet:
Festlegen des Durchsatzes für eine Datenbank
Wenn Sie Durchsatz für eine Azure Cosmos DB-Datenbank bereitstellen, wird der Durchsatz von allen Containern in der Datenbank gemeinsam genutzt (auch als gemeinsam genutzte Datenbankcontainer bezeichnet). Ausnahme: Sie haben einen bereitgestellten Durchsatz für bestimmte Container in der Datenbank angegeben. Die gemeinsame Nutzung des auf Datenbankebene bereitgestellten Durchsatzes durch die Container entspricht dem Hosten einer Datenbank in einem Computercluster. Da alle Container in einer Datenbank die auf einem Computer verfügbaren Ressourcen gemeinsam nutzen, erhalten Sie natürlich keine vorhersagbare Leistung für einen bestimmten Container. Informationen zum Konfigurieren des bereitgestellten Durchsatzes für eine Datenbank finden Sie unter Bereitstellen von Durchsatz für eine Azure Cosmos DB-Datenbank. Informationen zum Konfigurieren des automatisch skalierten Durchsatzes für eine Datenbank finden Sie unter Bereitstellen von automatisch skaliertem Durchsatz.
Da alle Container in der Datenbank den bereitgestellten Durchsatz gemeinsam nutzen, garantiert Azure Cosmos DB keinen vorhersagbaren Durchsatz für einen bestimmten Container in der Datenbank. Der Anteil des Durchsatzes, den ein bestimmter Container erhält, hängt von den folgenden Faktoren ab:
- Anzahl von Containern
- Auswahl der Partitionsschlüssel für verschiedene Container
- Verteilung der Workload auf die verschiedenen logischen Partitionen der Container
Es wird empfohlen, den Durchsatz für eine Datenbank zu konfigurieren, wenn der Durchsatz von mehreren Containern gemeinsam genutzt werden soll, Sie aber keinen spezifischen Durchsatz für bestimmte Container bereitstellen möchten.
In den folgenden Beispielen wird erläutert, wo das Bereitstellen von Durchsatz auf Datenbankebene empfehlenswert ist:
Die gemeinsame Nutzung des für eine Datenbank bereitgestellten Durchsatzes durch eine Gruppe von Containern ist bei mehrinstanzenfähigen Anwendungen nützlich. Jeder Benutzer kann durch einen eigenen Azure Cosmos DB-Container dargestellt werden.
Die gemeinsame Nutzung des bereitgestellten Durchsatzes einer Datenbank durch eine Gruppe von Containern ist nützlich, wenn Sie eine NoSQL-Datenbank (z. B. MongoDB oder Cassandra), die in einem Cluster von virtuellen Computern oder auf lokalen physischen Servern gehostet wird, zu Azure Cosmos DB migrieren. Stellen Sie sich den bereitgestellten Durchsatz, der für Ihre Azure Cosmos DB-Datenbank konfiguriert wurde, als logische Entsprechung (jedoch kostengünstiger und flexibler) zur Computekapazität des MongoDB- oder Cassandra-Clusters vor.
Alle in einer Datenbank erstellten Container mit bereitgestelltem Durchsatz müssen mit einem Partitionsschlüssel erstellt werden. Der einem Container innerhalb einer Datenbank zugeteilte Durchsatz wird jederzeit auf alle logischen Partitionen des Containers verteilt. Wenn Ihre Container den für eine Datenbank konfigurierten bereitgestellten Durchsatz gemeinsam nutzen, können Sie den Durchsatz nicht selektiv einem bestimmten Container oder einer logischen Partition zuordnen.
Wenn die Workload in einer logischen Partition mehr als den Durchsatz verbraucht, der der jeweiligen logischen Partition zugewiesen wurde, werden Ihre Vorgänge begrenzt. Bei einer Ratenbegrenzung können Sie entweder den Durchsatz für die gesamte Datenbank erhöhen oder die Vorgänge wiederholen. Weitere Informationen zur Partitionierung finden Sie unter Logische Partitionen.
Container in einer Datenbank mit gemeinsam genutztem Durchsatz teilen den Durchsatz (RU/s), der dieser Datenbank zugeordnet ist. Mit dem standardmäßig (manuell) bereitgestellten Durchsatz können Sie bis zu 25 Container mit mindestens 400 RU/s für die Datenbank einsetzen. Mit dem automatisch skalierten bereitgestellten Durchsatz können Sie in einer Datenbank bis zu 25 Container mit mindestens 1000 RU/s (Skalierung von 100 bis 1000 RU/s) verwenden.
Hinweis
Im Februar 2020 haben wir eine Änderung eingeführt, die Ihnen maximal 25 Container in einer gemeinsam genutzten Durchsatzdatenbank ermöglicht. So kann containerübergreifend eine bessere gemeinsame Nutzung des Durchsatzes erzielt werden. Nach den ersten 25 Containern können Sie der Datenbank nur dann weitere Container hinzufügen, wenn diese mit dediziertem Durchsatz bereitgestellt werden, der vom gemeinsam genutzten Durchsatz der Datenbank getrennt ist.
Wenn Ihr Azure Cosmos DB-Konto bereits eine Datenbank mit gemeinsam genutztem Durchsatz mit mindestens 25 Containern enthält, sind das Konto und alle anderen Konten im selben Azure-Abonnement von dieser Änderung ausgenommen. Wenn Sie Feedback oder Fragen haben, wenden Sie sich an den Produktsupport.
Wenn Ihre Workloads das Löschen und Wiederherstellen aller Sammlungen in einer Datenbank beinhalten, wird empfohlen, die leere Datenbank zu löschen und vor der Erstellung der Sammlung eine neue Datenbank anzulegen. Die folgende Abbildung zeigt, wie eine physische Partition eine bzw. mehrere logische Partitionen hosten kann, die zu unterschiedlichen Containern innerhalb einer Datenbank gehören:
Festlegen des Durchsatzes für eine Datenbank und einen Container
Sie können die beiden Modelle kombinieren. Es ist erlaubt, Durchsatz sowohl auf Datenbank- als auch auf Containerebene bereitzustellen. Das folgende Beispiel zeigt die Vorgehensweise bei der standardmäßigen (manuellen) Bereitstellung von Durchsatz für eine Azure Cosmos DB-Datenbank und einen Container:
Sie können eine Azure Cosmos DB-Datenbank namens Z mit standardmäßig (manuell) bereitgestelltem Durchsatz von K RUs erstellen.
Als Nächstes erstellen Sie die fünf Container A, B, C, D und E innerhalb der Datenbank. Achten Sie beim Erstellen von Container B darauf, die Option zum Bereitstellen von dediziertem Durchsatz für diesen Containerzu aktivieren, und konfigurieren Sie explizit P RUs des bereitgestellten Durchsatzes für diesen Container. Sie können freigegebenen und dedizierten Durchsatz nur beim Erstellen der Datenbank und des Containers konfigurieren.
Der Durchsatz von „K“ RU/s ist für die vier Container A, C, D und E freigegeben. Die genaue für A, C, D oder E verfügbare Durchsatzmenge variiert. Es gibt keine SLAs für die einzelnen Containerdurchsätze.
Für den Container B wird jederzeit ein Durchsatz von „P“ RU/s sichergestellt. Er wird durch SLAs abgedeckt.
Hinweis
Ein Container mit bereitgestelltem Durchsatz kann nicht in einen gemeinsam genutzten Datendankcontainer konvertiert werden. Umgekehrt kann ein gemeinsam genutzter Datenbankcontainer nicht in einen dedizierten Durchsatz umgewandelt werden. Sie müssen die Daten in einen Container mit der gewünschten Durchsatzeinstellung verschieben. (Bei diesem Prozess helfen die Containerkopieraufträge für die NoSQL-, MongoDB- und Cassandra-APIs.)
Aktualisieren des Durchsatzes für eine Datenbank oder einen Container
Nachdem Sie einen Azure Cosmos DB-Container oder eine Datenbank erstellt haben, können Sie den bereitgestellten Durchsatz aktualisieren. Es gibt keine Beschränkung für den bereitgestellten Maximaldurchsatz, den Sie in der Datenbank oder dem Container konfigurieren können.
Aktuell bereitgestellter Durchsatz
Sie können den bereitgestellten Durchsatz eines Containers oder einer Datenbank im Azure-Portal oder mithilfe der SDKs abrufen:
- Container.ReadThroughputAsync im .NET SDK
- CosmosContainer.readThroughput im Java SDK
Die Antwort dieser Methoden enthält auch den bereitgestellten Mindestdurchsatz für den Container oder die Datenbank:
- ThroughputResponse.MinThroughput im .NET SDK
- ThroughputResponse.getMinThroughput() im Java SDK
Der tatsächliche Mindestwert an RU/s kann je nach Kontokonfiguration variieren. Weitere Informationen finden Sie unter Häufig gestellte Fragen zu Autoscale.
Ändern des bereitgestellten Durchsatzes
Sie können den bereitgestellten Durchsatz eines Containers oder einer Datenbank über das Azure-Portal oder mithilfe der SDKs skalieren:
- Container.ReplaceThroughputAsync im .NET SDK
- CosmosContainer.replaceThroughput im Java SDK
Wenn Sie den bereitgestellten Durchsatz verringern, ist dies bis zum Mindestwert möglich.
Wenn Sie den bereitgestellten Durchsatz erhöhen, erfolgt der Vorgang in den meisten Fällen sofort. Es gibt jedoch Fälle in denen der Zeitaufwand aufgrund der Systemtasks für die Bereitstellung der erforderlichen Ressourcen höher sein kann. In diesem Fall führt der Versuch, den bereitgestellten Durchsatz zu ändern, während dieser Vorgang ausgeführt wird, zu einer HTTP 423-Antwort mit einer Fehlermeldung, die angibt, dass ein anderer Skalierungsvorgang ausgeführt wird.
Weitere Informationen finden Sie im Artikel Bewährte Methoden für das Skalieren des bereitgestellten Durchsatzes (RU/s).
Hinweis
Wenn Sie eine sehr große Erfassungsworkload planen, die einen hohen Zuwachs an bereitgestelltem Durchsatz erfordert, denken Sie daran, dass für den Skalierungsvorgang keine SLA besteht und es – wie im vorherigen Absatz bereits erwähnt – bei einem hohen Zuwachs sehr lange dauern kann. Möglicherweise möchten Sie im Voraus planen und mit der Skalierung beginnen, bevor die Workload startet, und die unten aufgeführten Methoden zum Überprüfen des Fortschritts verwenden.
Sie können den Skalierungsfortschritt programmgesteuert überprüfen, indem Sie den aktuell bereitgestellten Durchsatz lesen und Folgendes verwenden:
- ThroughputResponse.IsReplacePending im .NET SDK
- ThroughputResponse.isReplacePending() im Java SDK
Sie können Azure Monitor-Metriken verwenden, um den Verlauf des bereitgestellten Durchsatzes (RU/s) und des Speichers für eine Ressource anzuzeigen.
Vergleich der Modelle
Diese Tabelle zeigt einen Vergleich zwischen dem standardmäßig (manuell) bereitgestellten Durchsatz in einer Datenbank und in einem Container.
Parameter | Standarddurchsatz (manuell) für eine Datenbank | Standarddurchsatz (manuell) für einen Container | Automatisch skalierter Durchsatz für eine Datenbank | Automatisch skalierter Durchsatz für einen Container |
---|---|---|---|---|
Einstiegspunkt (minimale RU/s) | 400 RU/s. Bis zu 25 Container ohne Mindest-RU/s pro Container | 400 | Automatische Skalierung zwischen 100 und 1000 RU/s Bis zu 25 Container ohne Mindest-RU/s pro Container | Automatische Skalierung zwischen 100 und 1000 RU/s |
RU/s-Minimum pro Container | -- | 400 | -- | Automatische Skalierung zwischen 100 und 1000 RU/s |
Maximale RUs | Unbegrenzt, in der Datenbank | Unbegrenzt, im Container | Unbegrenzt, in der Datenbank | Unbegrenzt, im Container |
RUs zugewiesen oder verfügbar für einen bestimmten Container | Keine Garantien. Die einem bestimmten Container zugewiesenen RUs hängen von den Eigenschaften ab. Bei diesen Eigenschaften kann es sich um die Partitionsschlüssel der Container, die den Durchsatz gemeinsam nutzen, um die Verteilung der Workload oder um die Anzahl von Containern handeln. | Alle RUs, die für den Container konfiguriert wurden, sind ausschließlich für diesen Container reserviert. | Keine Garantien. Die einem bestimmten Container zugewiesenen RUs hängen von den Eigenschaften ab. Bei diesen Eigenschaften kann es sich um die Partitionsschlüssel der Container, die den Durchsatz gemeinsam nutzen, um die Verteilung der Workload oder um die Anzahl von Containern handeln. | Alle RUs, die für den Container konfiguriert wurden, sind ausschließlich für diesen Container reserviert. |
Maximale Speicherkapazität für einen Container | Unbegrenzt. | Unbegrenzt | Unbegrenzt | Unbegrenzt |
Maximaler Durchsatz pro logischer Partition eines Containers | 10.000 RU/s | 10.000 RU/s | 10.000 RU/s | 10.000 RU/s |
Maximale Speicherkapazität (Daten und Index) pro logischer Partition eines Containers | 20 GB | 20 GB | 20 GB | 20 GB |
Nächste Schritte
- Erfahren Sie mehr über logische Partitionen.
- Erfahren Sie mehr über das Bereitstellen von Durchsatz für einen Azure Cosmos DB-Container.
- Erfahren Sie mehr über das Bereitstellen von Durchsatzes für eine Azure Cosmos DB-Datenbank.
- Erfahren Sie mehr über das Bereitstellen von automatisch skaliertem Durchsatz für eine Datenbank oder einen Container in Azure Cosmos DB.
- Versuchen Sie, die Kapazitätsplanung für eine Migration zu Azure Cosmos DB durchzuführen? Sie können Informationen zu Ihrem vorhandenen Datenbankcluster für die Kapazitätsplanung verwenden.
- Wenn Sie nur die Anzahl der virtuellen Kerne und Server in Ihrem vorhandenen Datenbankcluster kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mithilfe von virtuellen Kernen oder virtuellen CPUs
- Wenn Sie die typischen Anforderungsraten für Ihre aktuelle Datenbankworkload kennen, lesen Sie die Informationen zum Schätzen von Anforderungseinheiten mit dem Azure Cosmos DB-Kapazitätsplaner