Anforderungseinheiten in Azure Cosmos DB

GILT FÜR: SQL-API Cassandra-API Gremlin-API Tabellen-API Azure Cosmos DB-API für MongoDB

Azure Cosmos DB unterstützt viele APIs wie z.B. SQL, MongoDB, Cassandra, Gremlin und Tabelle. Jede API verfügt über einen eigenen Satz von Datenbankvorgängen. Diese Vorgänge reichen von einfachen Lese- und Schreibvorgängen für Datenpunkte bis hin zu komplexen Abfragen. Jeder Datenbankvorgang beansprucht je nach Komplexität eine bestimmte Menge an Systemressourcen.

Die Kosten sämtlicher Datenbankvorgänge werden von Azure Cosmos DB normalisiert und in Anforderungseinheiten (Request Units, RUs) ausgedrückt. Anforderungseinheiten stellen praktisch die „Währung“ zur Abstrahierung von Systemressourcen wie CPU, IOPS und Arbeitsspeicher dar, die zum Ausführen der von Azure Cosmos DB unterstützten Datenbankvorgänge erforderlich sind.

Die Kosten für einen Punktlesevorgang (das Abrufen eines einzelnen Elements anhand seiner ID und seines Partitionsschlüsselwerts) für ein Element von 1 KB betragen 1 Anforderungseinheit (oder 1 RU). Allen anderen Datenbankvorgängen werden analog dazu ebenfalls Kosten in RUs zugewiesen. Unabhängig davon, welche API Sie für die Interaktion mit Ihrem Azure Cosmos-Container verwenden, werden die Kosten immer in RUs gemessen. Unabhängig davon, ob es sich bei dem Datenbankvorgang um einen Schreib-, Lese- oder Abfragevorgang handelt, werden die Kosten immer in RUs gemessen.

Die folgende Abbildung zeigt eine Übersicht über RUs:

Database operations consume Request Units

Zur Verwaltung und Planung der Kapazität stellt Azure Cosmos DB sicher, dass die Anzahl von RUs für einen bestimmten Datenbankvorgang und ein bestimmtes Dataset deterministisch ist. Sie können den Antwortheader untersuchen, um die von einem Datenbankvorgang genutzte Anzahl von RUs zu ermitteln. Wenn Sie mit den Faktoren, die sich auf die Gebühren für RUs auswirken, sowie mit den Durchsatzanforderungen Ihrer Anwendung vertraut sind, können Sie Ihre Anwendung kostengünstig ausführen.

Die Art des Azure Cosmos-Kontos, das Sie verwenden, bestimmt die Art, auf die verbrauchte RUs in Rechnung gestellt werden. Für die Erstellung eines Kontos gibt es drei Modi:

  1. Bereitgestellter Durchsatz: In diesem Modus wird die Anzahl von Anforderungseinheiten für Ihre Anwendung auf Sekundenbasis (in Schritten von jeweils 100 RUs pro Sekunde) bereitgestellt. Um den bereitgestellten Durchsatz für Ihre Anwendung zu skalieren, können Sie die Anzahl der RUs jederzeit in Schritten von 100 RUs erhöhen oder verringern. Sie können Ihre Änderungen entweder programmgesteuert oder über das Azure-Portal vornehmen. Die Anzahl der bereitgestellten RUs pro Sekunde wird auf Stundenbasis abgerechnet. Weitere Informationen finden Sie im Artikel Bereitgestellter Durchsatz.

    Durchsatz kann in zwei Granularitäten bereitgestellt werden:

  2. Serverloser Modus: In diesem Modus müssen Sie beim Erstellen von Ressourcen in Ihrem Azure Cosmos-Konto keinen Durchsatz bereitstellen. Am Ende des Abrechnungszeitraums wird Ihnen die Anzahl der Anforderungseinheiten in Rechnung gestellt, die von den Datenbankvorgängen genutzt wurden. Weitere Informationen finden Sie im Artikel Serverloser Durchsatz.

  3. Autoskalierungsmodus:In diesem Modus können Sie den Durchsatz (RU/s) Ihrer Datenbank oder Ihres Containers automatisch und sofort anhand der Nutzung skalieren, ohne die Verfügbarkeit, die Latenz, den Durchsatz oder die Leistung der Workload zu beeinträchtigen. Dieser Modus eignet sich gut für unternehmenskritische Workloads, die über variable oder unvorhersehbare Datenverkehrsmuster verfügen und SLAs für hohe Leistung und Skalierung erfordern. Weitere Informationen finden Sie im Artikel Durchsatz mit Autoskalierung.

Aspekte zu Anforderungseinheiten

Berücksichtigen Sie die folgenden Faktoren, wenn Sie die Anzahl der für Ihre Workload verbrauchen RUs schätzen:

  • Elementgröße: Je größer ein Element, desto mehr RUs werden beim Lesen oder Schreiben des Elements genutzt.

  • Elementindizierung: Standardmäßig wird jedes Element automatisch indiziert. Wenn Sie einige Elemente in einem Container nicht indizieren, werden weniger RUs genutzt.

  • Anzahl der Elementeigenschaften: Bei Verwendung der standardmäßigen Indizierung für alle Eigenschaften erhöht sich die Anzahl von RUs, die beim Schreiben eines Elements genutzt werden, wenn sich die Anzahl von Elementeigenschaften erhöht.

  • Indizierte Eigenschaften: Eine Indexrichtlinie für jeden Container gibt an, welche Eigenschaften standardmäßig indiziert werden. Zum Verringern der für Schreibvorgänge genutzten RUs begrenzen Sie die Anzahl indizierter Eigenschaften.

  • Datenkonsistenz: Im Vergleich zu anderen, weniger strengen Konsistenzebenen nutzen die Konsistenzebenen „Stark“ und „Begrenzte Veraltung“ bei Lesevorgängen ungefähr zweimal mehr RUs.

  • Lesetypen: Punktlesevorgänge kosten erheblich weniger RUs als Abfragen.

  • Abfragemuster: Die Komplexität einer Abfrage wirkt sich darauf aus, wie viele RUs für einen Vorgang verbraucht werden. Faktoren, die die Kosten von Abfragevorgängen beeinflussen:

    • Die Anzahl der Abfrageergebnisse
    • Die Anzahl der Prädikate
    • Die Art der Prädikate
    • Die Anzahl der benutzerdefinierten Funktionen
    • Die Größe der Quelldaten
    • Die Größe des Resultsets
    • Projektionen

    Die gleiche Abfrage mit den gleichen Daten beansprucht bei wiederholter Ausführung immer die gleiche Anzahl von RUs.

  • Skriptnutzung: Bei gespeicherten Prozeduren und Triggern hängt die Nutzung von RUs genau wie bei Abfragen von der Komplexität der ausgeführten Vorgänge ab. Sehen Sie sich beim Entwickeln Ihrer Anwendung den Request-Charge-Header an, um zu ermitteln, wie viele RUs der jeweilige Vorgang erfordert.

Anforderungseinheiten und mehrere Regionen

Wenn Sie R RUs in einem Cosmos-Container (oder einer Datenbank) bereitstellen, stellt Cosmos DB sicher, dass in jeder Region, die mit Ihrem Cosmos-Konto verknüpft ist, R RUs verfügbar sind. Sie können RUs nicht selektiv einer bestimmten Region zuweisen. Die in einem Cosmos-Container (oder einer Datenbank) bereitgestellten RUs werden in allen mit Ihrem Cosmos-Konto verbundenen Regionen bereitgestellt.

Angenommen, ein Cosmos-Container ist mit R RUs konfiguriert, und es gibt N Regionen, die dem Cosmos-Konto zugeordnet sind, dann beträgt die Gesamtzahl von im Container verfügbaren RUs = R x N.

Die Wahl des Konsistenzmodells wirkt sich auch auf den Durchsatz aus. Für die eher gelockerten Konsistenzebenen (Sitzung, Präfixkonsistenz und letztliche Konsistenz) können Sie den etwa zweifachen Lesedurchsatz im Vergleich zu höheren Konsistenzebenen (begrenzte Veraltung oder starke Konsistenz) erzielen.

Nächste Schritte