Wie werden Daten mit Azure Cosmos DB global verteilt?How to distribute data globally with Azure Cosmos DB

Azure ist ubiquitär: Es ist in über 50 geografischen Regionen auf der ganzen Welt präsent und breitet sich kontinuierlich weiter aus.Azure is ubiquitous - it has a global footprint across 50+ geographical regions and is continuously expanding. Die weltweite Präsenz von Azure ermöglicht den Entwicklern unter anderem die problemlose Erstellung, Bereitstellung und Verwaltung global verteilter Anwendungen.With its global presence, one of the differentiated capabilities Azure offers to its developers is the ability to build, deploy, and manage globally distributed applications easily.

Azure Cosmos DB ist ein global verteilter Datenbankdienst von Microsoft mit mehreren Modellen für unternehmenskritische Anwendungen.Azure Cosmos DB is Microsoft's globally distributed, multi-model database service for mission-critical applications. Azure Cosmos DB bietet sofort einsetzbare globale Verteilung, flexible Skalierung von Durchsatz und Speicher weltweit, Wartezeiten im einstelligen Millisekundenbereich beim 99. Perzentil, fünf wohldefinierte Konsistenzmodelle sowie garantierte Hochverfügbarkeit, gestützt durch branchenführende, umfassende Vereinbarungen zum Servicelevel (SLAs, Service Level Agreements).Azure Cosmos DB provides turnkey global distribution, elastic scaling of throughput and storage worldwide, single-digit millisecond latencies at the 99th percentile, five well-defined consistency models, and guaranteed high availability, all backed by industry-leading comprehensive SLAs. Azure Cosmos DB indiziert automatisch alle Ihre Daten, sodass Sie sich nicht mit der Schema- oder Indexverwaltung befassen müssen.Azure Cosmos DB automatically indexes all your data without requiring you to deal with schema or index management. Dieser Dienst für mehrere Datenmodelle unterstützt Dokumente, Schlüssel-Wert-Paare, Diagramme und spaltenbasierte Daten.It is a multi-model service and supports document, key-value, graph, and column-family data models. Als ursprünglich aus der Cloud entstandener Dienst wurde Azure Cosmos DB von Grund auf für Mehrinstanzenfähigkeit und globale Verteilung konzipiert.As a natively born in the cloud service, Azure Cosmos DB is carefully engineered with multi-tenancy and global distribution from the ground up.

Azure Cosmos DB-Container, partitioniert und auf drei Regionen verteilt

Ein einzelner Azure Cosmos DB-Container, partitioniert und auf mehrere Azure-Regionen verteiltA single Azure Cosmos DB container partitioned and distributed across multiple Azure regions

Bei der Entwicklung von Azure Cosmos DB haben wir gelernt, dass die globale Verteilung nicht als Anhängsel behandelt werden darf.As we have learned while building Azure Cosmos DB, adding global distribution cannot be an afterthought. Und sie kann nicht einfach auf ein Datenbanksystem mit einem einzelnen Standort aufgesetzt werden.It cannot be "bolted-on" atop a "single site" database system. Die Funktionen einer global verteilten Datenbank gehen über die herkömmliche geografische Notfallwiederherstellung (Geographical Disaster Recovery, Geo-DR) von Datenbanken mit nur einem Standort hinaus.The capabilities offered by a globally distributed database span beyond that of traditional geographical disaster recovery (Geo-DR) offered by "single-site" databases. Bei Datenbanken mit nur einem Standort und Geo-DR-Funktion handelt es sich um eine echte Untermenge weltweit verteilter Datenbanken.Single site databases offering Geo-DR capability are a strict subset of globally distributed databases.

Dank der sofort einsatzbereiten globalen Verteilung von Azure Cosmos DB müssen Entwickler kein eigenes Replikationsgerüst erstellen – weder in Form des Lambda-Musters (Beispiel: AWS DynamoDB-Replikation) über das Datenbankprotokoll noch durch doppelte Schreibvorgänge in mehreren Regionen.With Azure Cosmos DB's turnkey global distribution, developers do not have to build their own replication scaffolding by employing either the Lambda pattern (for example, AWS DynamoDB replication) over the database log or by performing "double writes" across multiple regions. Diese Verfahren werden nicht empfohlen, da ihre Korrektheit nicht gewährleistet werden kann und keine vernünftigen SLAs bereitgestellt werden können.We do not recommend these approaches, since it is impossible to ensure correctness of such approaches and provide sound SLAs.

Dieser Artikel enthält eine Übersicht über die Azure Cosmos DB-Funktionen für die globale Verteilung.In this article, we provide an overview of Azure Cosmos DB's global distribution capabilities. Außerdem beschreiben wir hier das einzigartige Konzept von Azure Cosmos DB für die Bereitstellung umfassender SLAs.We also describe Azure Cosmos DB's unique approach to providing comprehensive SLAs.

Aktivieren der sofort einsatzbereiten globalen VerteilungEnabling turnkey global distribution

Folgende Funktionen von Azure Cosmos DB ermöglichen die problemlose Erstellung weltweit verteilter Anwendungen.Azure Cosmos DB provides the following capabilities to enable you to easily write globally distributed applications. Diese Funktionen stehen über die ressourcenanbieterbasierten REST-APIs von Azure Cosmos DB sowie über das Azure-Portal zur Verfügung.These capabilities are available via the Azure Cosmos DB's resource provider-based REST APIs as well as the Azure portal.

Sehen Sie sich das folgende Video an, um das schlüsselfertige Feature für die globale Verteilung in Azure Cosmos DB in Aktion zu sehen.Watch the following video to see the turnkey global distribution feature in Azure Cosmos DB in action.

Ubiquitäre regionale PräsenzUbiquitous regional presence

Es werden stetig neue Regionen online geschaltet, um die geografische Präsenz von Azure zu erweitern.Azure is constantly growing its geographical presence by bringing new regions online. Azure Cosmos DB ist als Basisdienst in Azure klassifiziert und ist standardmäßig in allen neuen Azure-Regionen verfügbar.Azure Cosmos DB is classified as a foundational service in Azure and is available in all new Azure regions by default. Dadurch können Sie Ihrem Azure Cosmos DB-Datenbankkonto eine geografische Region zuordnen, sobald die neue Azure-Region den Betrieb aufnimmt.This allows you to associate a geographical region with your Azure Cosmos DB database account as soon as Azure opens the new region for business.

Zuordnen einer unbegrenzten Anzahl von Regionen zu Ihrem Azure Cosmos DB-DatenbankkontoAssociating an unlimited number of regions with your Azure Cosmos DB database account

Mit Azure Cosmos DB können Sie Ihrem Azure Cosmos DB-Datenbankkonto eine beliebige Anzahl von Azure-Regionen zuordnen.Azure Cosmos DB allows you to associate any number of Azure regions with your Azure Cosmos DB database account. Mit Ausnahme von Geofencing-Einschränkungen (China, Deutschland...) gibt es hinsichtlich der Anzahl von Regionen, die Sie Ihrem Azure Cosmos DB-Datenbankkonto zuordnen können, keinerlei Einschränkungen.Outside of geo-fencing restrictions (for example, China, Germany), there are no limitations on the number of regions that can be associated with your Azure Cosmos DB database account. Die folgende Abbildung zeigt ein Datenbankkonto, das sich über 25 Azure-Regionen erstreckt.The following figure shows a database account configured to span across 25 Azure regions.

Azure Cosmos DB-Datenbankkonto, das sich über 25 Azure-Regionen erstreckt

Azure Cosmos DB-Datenbankkonto eines Mandanten, das sich über 25 Azure-Regionen erstrecktA tenant's Azure Cosmos DB database account spanning 25 Azure regions

Richtlinienbasiertes GeofencingPolicy-based geo-fencing

Azure Cosmos DB ist zur Unterstützung von richtlinienbasiertem Geofencing konzipiert.Azure Cosmos DB is designed to support policy-based geo-fencing. Geofencing – eine wichtige Komponente zur Einhaltung von Einschränkungen in den Bereichen Datengovernance und Compliance – kann verhindern, dass Ihrem Konto eine bestimmte Region zugeordnet wird.Geo-fencing is an important component to ensure data governance and compliance restrictions and may prevent associating a specific region with your account. Geofencing kann beispielsweise verwendet werden, um die globale Verteilung auf die Bereiche innerhalb einer unabhängigen Cloud (China, Deutschland...) oder innerhalb der Besteuerungsgrenzen einer Regierung (beispielsweise Australien) zu beschränken.Examples of geo-fencing include (but are not limited to) scoping global distribution to the regions within a sovereign cloud (for example, China and Germany) or within a government taxation boundary (for example, Australia). Die Richtlinien werden mithilfe der Metadaten Ihres Azure-Abonnements gesteuert.The policies are controlled using the metadata of your Azure subscription.

Dynamisches Hinzufügen und Entfernen von RegionenDynamically add and remove regions

Mit Azure Cosmos DB können Sie jederzeit Regionen zu Ihrem Datenbankkonto hinzufügen (zuordnen) oder daraus entfernen (Zuordnung aufheben), wie in der vorherigen Abbildung zu sehen.Azure Cosmos DB allows you to add (associate) or remove (dissociate) regions from your database account at any point in time (see preceding figure). Durch die parallele Replikation von Daten über Partitionen hinweg stellt Azure Cosmos DB sicher, dass eine neue Region innerhalb von 30 Minuten überall auf der Welt verfügbar ist (vorausgesetzt, Ihre Daten überschreiten nicht die Größe von 100 TB).By virtue of parallel replication of data across partitions, Azure Cosmos DB ensures that when a new region gets added, it is available for operations within 30 minutes anywhere in the world (assuming your data is 100 TBs or less).

FailoverprioritätenFailover priorities

Mit Azure Cosmos DB können Sie bei Ausfällen die exakte Reihenfolge von regionalen Failovern steuern, indem Sie eine Priorität mehreren, dem Datenbankkonto zugeordneten Regionen zuordnen, wie in der folgenden Abbildung zu sehen.To control exact sequence of regional failovers in cases of an outage, Azure Cosmos DB enables you to associate a priority with various regions associated with the database account (see the figure below). Azure Cosmos DB stellt sicher, dass bei der automatischen Failoversequenz die von Ihnen angegebene Prioritätenreihenfolge eingehalten wird.Azure Cosmos DB ensures that the automatic failover sequence occurs in the priority order you specified. Weitere Informationen zu regionalen Failovern finden Sie unter Automatisches regionales Failover für die Geschäftskontinuität in Azure Cosmos DB.For more information about regional failovers, see Automatic regional failovers for business continuity in Azure Cosmos DB.

Konfigurieren von Failoverprioritäten mit Azure Cosmos DB

Ein Azure Cosmos DB-Mandant kann die Reihenfolge der Failoverpriorität (rechter Bereich) für Regionen konfigurieren, die einem Datenbankkonto zugeordnet sind.A tenant of Azure Cosmos DB can configure the failover priority order (right pane) for regions associated with a database account

Mehrere klar definierte Konsistenzmodelle für global verteilte DatenbankenMultiple, well-defined consistency models for globally distributed databases

Azure Cosmos DB unterstützt mehrere klar definierte, intuitive und praktische Konsistenzmodelle, die durch SLAs gesichert werden.Azure Cosmos DB supports multiple well-defined, intuitive, and practical consistency models backed by SLAs. In Abhängigkeit von der Workload/den Szenarien können Sie aus den verfügbaren Optionen ein bestimmtes Konsistenzmodell auswählen.You can choose a specific consistency model (from the available list of options) depending on the workload/scenarios.

Verschiedene Konsistenzeinstellungen für global replizierte DatenbankenTunable consistency for globally replicated databases

Mit Azure Cosmos DB können Sie die Standardkonsistenzauswahl programmgesteuert zur Laufzeit für einzelne Anforderungen außer Kraft setzen und lockern.Azure Cosmos DB allows you to programmatically override and relax the default consistency choice on a per request basis at runtime.

Dynamisch konfigurierbare Lese- und SchreibregionenDynamically configurable read and write regions

Mit Azure Cosmos DB können Sie die (der Datenbank zugeordneten) Regionen für „Lesen“, „Schreiben“ oder „Lesen/Schreiben“ konfigurieren.Azure Cosmos DB enables you to configure the regions (associated with the database) for "read", "write" or "read/write" regions.

Elastisches Skalieren des Durchsatzes für Azure-RegionenElastically scaling throughput across Azure regions

Sie können einen Azure Cosmos DB-Container durch programmgesteuertes Bereitstellen eines Durchsatzes elastisch skalieren.You can elastically scale an Azure Cosmos DB container by provisioning throughput programmatically. Der Durchsatz wird auf alle Regionen angewendet, in denen der Azure Cosmos DB-Container verteilt wird.The throughput is applied to all the regions the Azure Cosmos DB container is distributed in.

Geolokale Lese- und SchreibvorgängeGeo-local reads and writes

Der Hauptvorteil einer global verteilten Datenbank besteht in der niedrigen Wartezeit beim weltweiten Datenzugriff.The key benefit of a globally distributed database is that it offers low latency access to data anywhere in the world. Azure Cosmos DB bietet weltweit niedrige Wartezeiten für Lese- und Schreibvorgänge beim 99. Perzentil.Azure Cosmos DB offers low latency reads and writes at the 99th percentile worldwide. Dabei wird sichergestellt, dass alle Lesevorgänge von der nächstgelegenen (lokale) Region bedient werden.It ensures that all reads are served from the closest (local) region. Bei der Verarbeitung einer Leseanforderung wird das lokale Quorum für die Region verwendet, in der der Lesevorgang initiiert wurde.To serve a read request, the quorum local to the region in which the read is issued is used. Gleiches gilt für Schreibvorgänge.The same applies to writes. Ein Schreibvorgang wird erst bestätigt, wenn die Mehrheit der Replikate den Schreibvorgang dauerhaft lokal committet hat, sodass keine Abhängigkeit von der Bestätigung der Schreibvorgänge durch Remotereplikate besteht.A write is acknowledged only after a majority of replicas have durably committed the write locally but without being gated on remote replicas to acknowledge the writes. Anders ausgedrückt: Für das Replikationsprotokoll von Azure Cosmos DB wird davon ausgegangen, dass das Lese- und Schreibquorum immer lokal für die Region gilt, in der die Anforderung initiiert wurde.To put it differently, the replication protocol of Azure Cosmos DB operates under the assumption that the read and write quorums are always local to the region where the request has been issued.

Manuelles FailoverManual failover

Mit Azure Cosmos DB können Sie das Failover eines Datenbankkontos auslösen, um die Eigenschaften der End-to-End-Verfügbarkeit der gesamten Anwendung (außerhalb der Datenbank) zu überprüfen.Azure Cosmos DB allows you to trigger the failover of a database account to validate the end to end availability properties of the entire application (beyond the database). Da sowohl die Sicherheits- und Verfügbarkeitseigenschaften der Fehlererkennung als auch die Wahl einer übergeordneten Instanz garantiert werden, garantiert Azure Cosmos DB, dass bei einem vom Mandanten manuell initiierten Failovervorgang keine Daten verloren gehen.Since both the safety and the liveness properties of the failure detection and leader election are guaranteed, Azure Cosmos DB guarantees zero-data-loss for a tenant-initiated manual failover operation.

Automatisches FailoverAutomatic failover

Azure Cosmos DB unterstützt automatisches Failover bei Ausfällen einer oder mehrerer Regionen.Azure Cosmos DB supports automatic failover during one or more regional outages. Während eines regionalen Failovers erfüllt Azure Cosmos DB weiterhin die SLAs für Leselatenz, Verfügbarkeit, Konsistenz und Durchsatz.During a regional failover, Azure Cosmos DB maintains its read latency, uptime availability, consistency, and throughput SLAs. Azure Cosmos DB bietet eine Obergrenze für die Dauer eines automatischen Failovervorgangs.Azure Cosmos DB provides an upper bound for the duration of an automatic failover operation to complete. Hierbei handelt es sich um das Zeitfenster für potenzielle Datenverluste während eines regionalen Ausfalls.This is the window of potential data loss during a regional outage.

Konzipiert für verschiedene FailovergranularitätenDesigned for different failover granularities

Aktuell werden die automatischen und manuellen Failoverfunktionen mit der Granularität des Datenbankkontos verfügbar gemacht.Currently the automatic and manual failover capabilities are exposed at the granularity of the database account. Intern ist Azure Cosmos DB allerdings für ein präziseres automatisches Failover einer Datenbank, eines Containers oder sogar einer Partition (ein Container mit einer Reihe von Schlüsseln) konzipiert.Note, internally Azure Cosmos DB is designed to offer automatic failover at finer granularity of a database, a container, or even a partition (of a container owning a range of keys).

Multihosting in Azure Cosmos DBMulti-homing in Azure Cosmos DB

Azure Cosmos DB ermöglicht die Interaktion mit einer Datenbank über logische (regionsunabhängige) oder physische (regionsspezifische) Endpunkte.Azure Cosmos DB allows you to interact with a database using either logical (region-agnostic) or physical (region-specific) endpoints. Die Verwendung logischer Endpunkte ermöglicht transparentes Multihosting der Anwendung im Falle eines Failovers.Using logical endpoints ensures that the application can transparently be multi-homed in case of a failover. Ein physischer Endpunkt bietet präzise Steuerungsmöglichkeiten für die Anwendung, um Lese- und Schreibvorgänge an bestimmte Regionen umzuleiten.The latter, a physical endpoint, provides fine-grained control to the application to redirect reads and writes to specific regions.

Informationen zum Konfigurieren der Leseeinstellungen für die SQL-API, Tabellen-API und MongoDB-API finden Sie in diesen Artikeln.You can find information on how to configure read preferences for the SQL API, Table API, and MongoDB API in these articles.

Transparente und konsistente Migration von Datenbankschemas und IndizesTransparent and consistent database schema and index migration

Azure Cosmos DB ist vollkommen schemaunabhängig.Azure Cosmos DB is fully schema-agnostic. Dank des einzigartigen Designs der Datenbank-Engine kann Azure Cosmos DB automatisch und synchron sämtliche erfasste Daten indizieren, ohne dass der Benutzer dafür ein Schema oder sekundäre Indizes bereitstellen muss.The unique design of the database engine allows Azure Cosmos DB to automatically and synchronously index all of the data upon ingestion, without requiring any schema or secondary indices from the user. Dadurch können Sie Ihre global verteilte Anwendung schnell durchlaufen, ohne sich Gedanken über die Migration von Datenbankschemas oder Indizes zu machen oder mehrstufige Anwendungsrollouts mit Schemaänderungen zu koordinieren.This enables you to iterate your globally distributed application rapidly without worrying about database schema and index migration or coordinating multi-phase application rollouts of schema changes. Azure Cosmos DB garantiert, dass Änderungen, die Sie explizit an Indizierungsrichtlinien vornehmen, keine Beeinträchtigung der Leistung oder Verfügbarkeit zur Folge haben.Azure Cosmos DB guarantees that any changes to indexing policies explicitly made by you do not result in either performance or availability degradation.

Umfassende, über bloße Hochverfügbarkeit hinausgehende SLAsComprehensive SLAs (beyond high availability)

Als global verteilter Datenbankdienst bietet Azure Cosmos DB klar definierte und umfassende SLAs für Verfügbarkeit, Latenz, Durchsatz und Konsistenz für die global skalierte Datenbank – unabhängig davon, wie viele Regionen der Datenbank zugeordnet sind.As a globally distributed database service, Azure Cosmos DB offers well-defined and comprehensive SLAs for availability, latency, throughput, and consistency for the database running at global scale, regardless of the number of regions associated with the database.

LatenzgarantienLatency guarantees

Der Hauptvorteil eines global verteilten Datenbankdiensts wie Azure Cosmos DB besteht in der niedrigen Latenz beim weltweiten Zugriff auf Ihre Daten.The key benefit of a globally distributed database service like Azure Cosmos DB is to offer low latency access to your data anywhere in the world. Azure Cosmos DB garantiert eine niedrige Wartezeit beim 99. Perzentil für verschiedene Datenbankvorgänge.Azure Cosmos DB offers guaranteed low latency at the 99th percentile for various database operations. Das von Azure Cosmos DB verwendete Replikationsprotokoll sorgt dafür, dass die Datenbankvorgänge (sowohl Lese- als auch Schreibvorgänge) stets in der lokalen Region des Clients ausgeführt werden.The replication protocol that Azure Cosmos DB employs ensures that the database operations (both reads and writes) are always performed in the region local to that of the client. Die Latenz-SLA von Azure Cosmos DB liegt garantiert beim 99. Perzentil für Lesevorgänge, (synchron) indizierte Schreibvorgänge und Abfragen für verschiedene Anforderungs- und Antwortgrößen.The latency SLA of Azure Cosmos DB provides guarantees at the 99th percentile for both reads, (synchronously) indexed writes and queries for various request and response sizes. Die Latenzgarantien für Schreibvorgänge beinhalten permanente Mehrheitsquorum-Commits innerhalb der lokalen Region.The latency guarantees for writes include durable majority quorum commits within the local region.

Zusammenhang zwischen Latenz und KonsistenzLatency's relationship with consistency

Damit ein global verteilter Dienst eine starke Konsistenz in einem global verteilten Setup bietet, muss er die Schreibvorgänge synchron replizieren oder überregionale Lesevorgänge synchron durchführen.For a globally distributed service to offer strong consistency in a globally distributed setup, it needs to synchronously replicate the writes or to synchronously perform cross-region reads. Die Lichtgeschwindigkeit und die Zuverlässigkeit des Fernnetzes erfordern eine starke Konsistenz, die zu längeren Wartezeiten und einer geringeren Verfügbarkeit von Datenbankvorgängen führt.The speed of light and the wide area network reliability dictates that strong consistency will result in higher latencies and reduced availability of database operations. Um also sowohl niedrige Wartezeiten beim 99. Perzentil und eine Verfügbarkeit von 99,99 Prozent für alle Konten mit einzelner Region sowie für alle Konten mit mehreren Regionen und gelockerter Konsistenz als auch eine Verfügbarkeit von 99,999 Prozent für alle Datenbankkonten mit mehreren Regionen bieten zu können, muss der Dienst eine asynchrone Replikation verwenden.Hence, in order to offer guaranteed low latencies at the 99th percentile and 99.99% availability for all single region accounts and all multi-region accounts with relaxed consistency, and 99.999% availability on all multi-region database accounts, the service must employ asynchronous replication. Hierzu muss der Dienst wiederum klar definierte, gelockerte Konsistenzmodelle bieten. Diese sollten im Idealfall zwischen starker Konsistenz (für garantierte niedrige Latenz und hohe Verfügbarkeit) und letztlicher Konsistenz (mit einem intuitiven Programmiermodell) liegen.This in-turn requires that the service must also offer well-defined, relaxed consistency model(s) – weaker than strong (to offer low latency and availability guarantees) and ideally stronger than "eventual" consistency (with an intuitive programming model).

Azure Cosmos DB stellt sicher, dass kein Lesevorgang erforderlich ist, um Replikate in mehreren Regionen zu kontaktieren und eine spezifische garantierte Konsistenzebene zu erreichen.Azure Cosmos DB ensures that a read operation is not required to contact replicas across multiple regions to deliver a specific consistency level guarantee. Analog dazu wird sichergestellt, dass ein Schreibvorgang beim regionsübergreifenden Replizieren der Daten nicht blockiert wird. (Mit anderen Worten: Schreibvorgänge werden synchron regionsübergreifend repliziert.)Likewise, it ensures that a write operation does not get blocked while the data is being replicated across all regions that is, writes are asynchronously replicated across regions). Für Datenbankkonten mit mehreren Regionen stehen sowohl starke als auch mehrere gelockerte Konsistenzebenen zur Verfügung.For multi-region database accounts both strong as well as multiple relaxed consistency levels are available.

Zusammenhang zwischen Latenz und VerfügbarkeitLatency's relationship with availability

Latenz und Verfügbarkeit sind zwei Seiten einer Medaille.Latency and availability are the two sides of the same coin. Im stabilen Zustand sprechen wir von der Latenz eines Vorgangs, bei Ausfällen und Netzwerkpartitionen verwenden wir den Begriff Verfügbarkeit.Talking about latency of an operation in steady state and availability in the presence of failures and network partitions. Für die Anwendung macht es keinen Unterschied, ob ein Datenbankvorgang langsam ausgeführt wird oder ob die Datenbank nicht verfügbar ist.From the application standpoint, a slow running database operation is indistinguishable from a database that is unavailable.

Zur Unterscheidung zwischen hoher Latenz und Nichtverfügbarkeit bietet Azure Cosmos DB eine absolute Obergrenze für die Latenz verschiedener Datenbankvorgänge.To distinguish high latency from unavailability, Azure Cosmos DB provides an absolute upper bound for latency of various database operations. Übersteigt die Dauer des Datenbankvorgangs die Obergrenze, gibt Azure Cosmos DB einen Timeoutfehler zurück.If the database operation takes longer than the upper bound to complete, Azure Cosmos DB returns a timeout error. Die Verfügbarkeits-SLA von Azure Cosmos DB gewährleistet, dass die Timeouts für die Verfügbarkeits-SLA berücksichtigt werden.The Azure Cosmos DB availability SLA ensures that the timeouts are counted against the availability SLA.

Zusammenhang zwischen Latenz und DurchsatzLatency's relationship with throughput

Bei Azure Cosmos DB müssen Sie sich nicht zwischen Latenz und Durchsatz entscheiden.Azure Cosmos DB does not make you choose between latency and throughput. Die Lösung erfüllt die SLA für Latenz beim 99. Perzentil und bietet gleichzeitig den von Ihnen bereitgestellten Durchsatz.It honors the SLA for both latency at the 99th percentile and delivers the throughput that you have provisioned.

KonsistenzgarantienConsistency guarantees

Das starke Konsistenzmodell ist zwar das Nonplusultra in Sachen Datenprogrammierbarkeit, es wird jedoch teuer durch hohe Wartezeit (im stabilen Zustand) bzw. durch geringere Verfügbarkeit (im Falle eines Ausfalls) erkauft.While the strong consistency model is the gold standard of data programmability, it comes at a steep price of higher latency (in steady state) and reduced availability (in the face of failures).

Azure Cosmos DB bietet ein klar definiertes Programmiermodell, sodass Sie sich mit der Konsistenz der replizierten Daten befassen können.Azure Cosmos DB offers a well-defined programming model for you to reason about replicated data's consistency. Damit Sie auf einfache Weise global verteilte Anwendungen mit Multihosting erstellen können, sind die von Azure Cosmos DB verfügbar gemachten Konsistenzmodelle regionsunabhängig, und es spielt auch keine Rolle, in welcher Region die Lese- und Schreibvorgänge verarbeitet werden.In order to enable you to easily build globally distributed applications with multi-homing capability, the consistency models exposed by Azure Cosmos DB are designed to be region-agnostic and independent from the region from where the reads and writes are being served.

Die Konsistenz-SLA von Azure Cosmos DB garantiert, dass 100 Prozent der Leseanforderungen die Konsistenzgarantie für das von Ihnen festgelegte Konsistenzmodell erfüllen (entweder auf Ebene des Datenbankkontos oder auf Anforderungsebene.)Azure Cosmos DB's consistency SLA guarantees that 100% of read requests will meet the consistency guarantee for the consistency model specified by you (either at the database account or the request level). Bei einer Leseanforderung gilt die Konsistenz-SLA als erfüllt, wenn alle Konsistenzgarantien der Konsistenzebene erfüllt werden.A read request is considered to have met the consistency SLA, if all the consistency guarantees associated with the consistency level are satisfied. Die folgende Tabelle enthält die Konsistenzgarantien für bestimmte Konsistenzmodelle von Azure Cosmos DB.The following table captures the consistency guarantees that correspond to specific consistency models offered by Azure Cosmos DB.

KonsistenzmodellConsistency Model KonsistenzmerkmaleConsistency Characteristics SLASLA
STARK (Strong)Strong LinearisierbarLinearizable 100 %100%
Bounded stalenessBounded staleness Monotones Lesen (innerhalb einer Region)Monotonic read (within a region) 100 %100%
Konsistentes PräfixConsistent prefix 100 %100%
Begrenzte Veraltung < K,TStaleness bound < K,T 100 %100%
SitzungSession Lesen eigener SchreibvorgängeRead your own write 100 %100%
Monotones LesenMonotonic read 100 %100%
Konsistentes PräfixConsistent prefix 100 %100%
Konsistentes PräfixConsistent prefix Konsistentes PräfixConsistent prefix 100 %100%

Konsistenzgarantien in Verbindung mit einem bestimmten Konsistenzmodell in Azure Cosmos DBConsistency guarantees associated with a given consistency model in Azure Cosmos DB

Zusammenhang zwischen Konsistenz und VerfügbarkeitConsistency's relationship with availability

Das Unmöglichkeitsergebnis des CAP-Theorems beweist, dass ein System im Falle eines Ausfalls nicht gleichzeitig verfügbar bleiben und linearisierbare Konsistenz bieten kann.The impossibility result of the CAP theorem proves that it is indeed impossible for a system to remain available and offer linearizable consistency in the face of failures. Der Datenbankdienst kann entweder Konsistenz und Partitionen oder Verfügbarkeit und Partitionen bieten. Im ersten Fall wird die Verfügbarkeit zugunsten von linearisierbarer Konsistenz geopfert, im zweiten Fall wird die linearisierbare Konsistenz zugunsten der Verfügbarkeit aufgegeben.The database service must choose to be either CP or AP, where CP systems forgo availability in favor of linearizable consistency while the AP systems forgo linearizable consistency in favor of availability. Azure Cosmos DB verstößt niemals gegen das angeforderte Konsistenzmodell und ist damit formal betrachtet ein System mit Konsistenz und Partitionen.Azure Cosmos DB never violates the requested consistency model, which formally makes it a CP system. In der Praxis ist Konsistenz allerdings keine Alles-oder-Nichts-Option: Es gibt mehrere klar definierte Konsistenzmodelle entlang des Konsistenzspektrums zwischen linearisierbarer und letztlicher Konsistenz.However, in practice consistency is not an all or nothing proposition; there are multiple well-defined consistency models along the consistency spectrum between linearizable and eventual consistency. Azure Cosmos DB nutzt mehrere der gelockerten Konsistenzmodelle mit praktischer Anwendbarkeit und einer intuitiven Verwendung.In Azure Cosmos DB identifies several relaxed consistency models that are applicable to real world scenarios and are intuitive to use. Azure Cosmos DB bietet als Kompromiss zwischen Konsistenz und Verfügbarkeit mehrere gelockerte, aber trotzdem klar definierte Konsistenzmodelle sowie eine Verfügbarkeit von 99,99 Prozent für alle Datenbankkonten mit einzelner Region und eine Leseverfügbarkeit von 99,999 Prozent für alle Datenbankkonten mit mehreren Regionen.Azure Cosmos DB navigates the consistency-availability tradeoffs by offering a multiple relaxed yet well-defined consistency models and a 99.99% availability for all single region database accounts and 99.999% read and write availability for all multi-region database accounts.

Zusammenhang zwischen Konsistenz und LatenzConsistency's relationship with latency

Die umfassendere Variante des CAP-Theorems, auch als PACELC bezeichnet, berücksichtigt auch Kompromisse zwischen Latenz und Konsistenz in einem stabilen Zustand.A more comprehensive variation of CAP theorem is called PACELC, which also accounts for latency and consistency tradeoffs in a steady state. Bei dieser Variante muss sich ein Datenbanksystem in einem stabilen Zustand zwischen Konsistenz und Latenz entscheiden.It states that in a steady state, a database system must choose between consistency, and latency. Mit mehreren gelockerten Konsistenzmodellen (unterstützt durch asynchrone Replikation und Quoren für lokale Lese- und Schreibvorgänge) stellt Azure Cosmos DB sicher, dass es sich bei allen Lese- und Schreibvorgängen um lokale Vorgänge für die Lese- bzw. Schreibregion handelt.With multiple relaxed consistency models (backed by asynchronous replication and local read and write quorums), Azure Cosmos DB ensures that all reads and writes are local to the read and write regions respectively. Dadurch kann Azure Cosmos DB innerhalb der Region eine niedrige Latenz für die bestehenden Konsistenzmodelle garantieren.This allows Azure Cosmos DB to offer low latency guarantees within the region for the given consistency models.

Zusammenhang zwischen Konsistenz und DurchsatzConsistency's relationship with throughput

Da die Implementierung eines bestimmten Konsistenzmodells von der Wahl eines Quorumstyps abhängt, variiert auch der Durchsatz abhängig vom gewählten Konsistenzmodell.Since the implementation of a specific consistency model depends on the choice of a quorum type, throughput also varies based on the choice of a consistency model. So entspricht beispielsweise in Azure Cosmos DB die RU-Gebühr für Lesevorgänge mit starker Konsistenz in etwa dem Doppelten der Gebühr für Lesevorgänge mit letztlicher Konsistenz.For instance, in Azure Cosmos DB, the RU charge for strongly consistent reads is roughly double that of eventually consistent reads. In diesem Fall müssen Sie doppelt so viele RUs bereitstellen, um den gleichen Durchsatz zu erzielen.In this case, you will need to provision double the RUs to achieve the same throughput.

Zusammenhang zwischen Konsistenz und Durchsatz

Zusammenhang zwischen Lesekapazitäten für einem bestimmten Konsistenzmodell in Azure Cosmos DBRelationship of read capacity for a specific consistency model in Azure Cosmos DB

DurchsatzgarantienThroughput guarantees

Mit Azure Cosmos DB lässt sich der Durchsatz (ebenso wie der Speicher) elastisch, über eine beliebige Anzahl an Regionen und bedarfsgerecht skalieren.Azure Cosmos DB allows you to scale throughput (as well as, storage), elastically across any number of regions depending on your needs or demand.

Azure Cosmos DB – verteilte und partitionierte Container

Ein einzelner Azure Cosmos DB-Container, der horizontal (über drei Ressourcenpartitionen innerhalb einer Region) partitioniert und dann global über drei Azure-Regionen verteilt istA single Azure Cosmos DB container horizontally partitioned (across three resource partitions within a region) and then globally distributed across three Azure regions

Ein Azure Cosmos DB-Container wird auf der Grundlage von zwei Dimensionen (i) innerhalb einer Region und (ii) regionsübergreifend verteilt.An Azure Cosmos DB container gets distributed in two dimensions (i) within a region and (ii) across regions. Das geht so:Here's how:

  • Lokale Verteilung: Innerhalb einer einzelnen Region wird ein Azure Cosmos DB-Container mithilfe von Ressourcenpartitionen horizontal hochskaliert.Local distribution: Within a single region, an Azure Cosmos DB container is horizontally scaled out in terms of resource partitions. Jede Ressourcenpartition verwaltet einen Satz von Schlüsseln und ist stark konsistent und hochverfügbar, da sie physisch durch vier Replikate repräsentiert wird, die auch Replikatgruppe genannt werden. Zudem verwaltet sie die Zustandsautomatreplikation zwischen diesen Replikaten.Each resource partition manages a set of keys and is strongly consistent and highly available being physically represented by four replicas also called a replica-set and state machine replication among those replicas. Azure Cosmos DB ist ein vollständig ressourcengesteuertes System, in dem eine Ressourcenpartition für die Bereitstellung ihres Durchsatzanteils am Budget der zugeteilten Systemressourcen verantwortlich ist.Azure Cosmos DB is a fully resource-governed system, where a resource partition is responsible to deliver its share of throughput for the budget of system resources allocated to it. Die Skalierung eines Azure Cosmos DB-Containers erfolgt für die Benutzer im Hintergrund.The scaling of an Azure Cosmos DB container is transparent to the users. Azure Cosmos DB verwaltet die Ressourcenpartitionen, teilt sie auf und führt sie bei Bedarf zusammen, wenn sich die Speicher- und Durchsatzanforderungen ändern.Azure Cosmos DB manages the resource partitions and splits and merges them as needed as storage and throughput requirements change.
  • Globale Verteilung: Bei einer Datenbank für mehrere Regionen wird jede der Ressourcenpartitionen dann auf diese Regionen verteilt.Global distribution: If it is a multi-region database, each of the resource partitions is then distributed across those regions. Ressourcenpartitionen, die in verschiedenen Regionen den gleichen Satz von Schlüsseln besitzen, bilden eine Partitionsgruppe, wie in der vorherigen Abbildung zu sehen.Resource partitions owning the same set of keys across various regions form partition set (see preceding figure). Ressourcenpartitionen innerhalb einer Partitionsgruppe werden mittels Zustandsautomatreplikation über mehrere Regionen hinweg koordiniert, die mit der Datenbank verbunden sind.Resource partitions within a partition set are coordinated using state machine replication across multiple regions associated with the database. Je nach konfigurierter Konsistenzebene werden die Ressourcenpartitionen innerhalb einer Partitionsgruppe dynamisch unter Verwendung verschiedener Topologien (Stern, Verkettung, Baumstruktur usw.) konfiguriert.Depending on the consistency level configured, the resource partitions within a partition set are configured dynamically using different topologies (for example, star, daisy-chain, tree etc.).

Dank extrem reaktionsschneller Partitionsverwaltung, Lastenausgleich und strenger Ressourcengovernance können Sie den Durchsatz mit Azure Cosmos DB für eine Azure Cosmos DB-Sammlung elastisch über mehrere Azure-Regionen hinweg skalieren.By virtue of a highly responsive partition management, load balancing and strict resource governance, Azure Cosmos DB allows you to elastically scale throughput across multiple Azure regions associated with an Azure Cosmos DB container or database. Die Änderung des bereitgestellten Durchsatzes ist ein Runtimevorgang in Azure Cosmos DB.Changing provisioned throughput is a runtime operation in Azure Cosmos DB. Ähnlich wie bei anderen Datenbankvorgängen garantiert Azure Cosmos DB die absolute Obergrenze der Wartezeit für Ihre Anforderung, den bereitgestellten Durchsatz zu ändern.Similar to other database operations, Azure Cosmos DB guarantees the absolute upper bound on latency for your request to change provisioned throughput. Als Beispiel zeigt die folgende Abbildung den Container eines Kunden mit elastisch bereitgestelltem Durchsatz nach Bedarf (im Bereich zwischen einer Million und zehn Millionen Anforderungen/Sek. für zwei Regionen).For example, the following figure shows a customer's container with elastically provisioned throughput (ranging from 1M-10M requests/sec across two regions) based on the demand.

Azure Cosmos DB – elastisch bereitgestellter Durchsatz

Container eines Kunden mit elastisch bereitgestelltem Durchsatz (variiert zwischen einer Million und zehn Millionen Anforderungen/Sek.)A customer's container with elastically provisioned throughput (varying from 1M-10M requests/sec)

Zusammenhang zwischen Durchsatz und KonsistenzThroughput's relationship with consistency

Eine identische Beschreibung finden Sie unter Zusammenhang zwischen Konsistenz und Durchsatz.It is the same as described in Consistency's relationship with throughput.

Zusammenhang zwischen Durchsatz und VerfügbarkeitThroughput's relationship with availability

Bei Änderungen am bereitgestellten Durchsatz hält Azure Cosmos DB seine Hochverfügbarkeit weiter aufrecht.Azure Cosmos DB continues to maintain its high availability when changes are made to provisioned throughput. Azure Cosmos DB bietet eine transparente Ressourcenpartitionsverwaltung (und führt Aufteilungs-, Zusammenführungs- und Klonvorgänge aus) und stellt sicher, dass die Vorgänge weder die Leistung noch die Verfügbarkeit beeinträchtigen, wenn die Anwendung den Durchsatz elastisch erhöht oder verringert.Azure Cosmos DB transparently manages resource partitions (and performs split, merge, and clone operations) and ensures that the operations do not degrade performance or availability, while the application elastically increases or decreases throughput.

VerfügbarkeitsgarantienAvailability guarantees

Azure Cosmos DB bietet eine SLA mit einer Verfügbarkeit von 99,99 Prozent für alle Datenbankkonten mit einer einzelnen Region und für alle Konten mit mehreren Regionen und gelockerter Konsistenz sowie eine Verfügbarkeit von 99,999 Prozent für alle Datenbankkonten mit mehreren Regionen.Azure Cosmos DB offers a 99.99% availability SLA for all single region database accounts and all multi-region accounts with relaxed consistency, and 99.999% availability on all multi-region database accounts. Wie bereits weiter oben beschrieben beinhalten die Verfügbarkeitsgarantien von Azure Cosmos DB eine absolute Latenzobergrenze für jeden Vorgang auf Daten- und Steuerungsebene.As described earlier, Azure Cosmos DB's availability guarantees include an absolute upper bound for latency for every data and control plane operations. Die Verfügbarkeitsgarantien sind unabhängig von der Anzahl von Regionen und der geografischen Entfernung zwischen Regionen.The availability guarantees do not change with the number of regions or the geographical distance between regions. Verfügbarkeitsgarantien gelten unter Berücksichtigung von sowohl manueller als auch automatischer Failover.Availability guarantees are applicable with respect to both manual as well as automatic failovers. Azure Cosmos DB bietet transparente Multihosting-APIs, die sicherstellen, dass Ihre Anwendung logische Endpunkte verwendet und die Anforderungen im Falle eines Failovers transparent an eine neue Region weiterleiten kann.Azure Cosmos DB offers transparent multi-homing APIs that ensure that your application can operate against logical endpoints and can transparently route the requests to a new region in case of a failover. Ihre Anwendung muss bei einem regionalen Failover nicht erneut bereitgestellt werden, und die Verfügbarkeits-SLAs werden jederzeit eingehalten.Your application does not need to be redeployed in case of a regional failover and the availability SLAs are preserved at all times.

Zusammenhang zwischen Verfügbarkeit, Konsistenz, Latenz und DurchsatzAvailability's relationship with consistency, latency, and throughput

Der Zusammenhang zwischen Verfügbarkeit, Konsistenz, Latenz und Durchsatz wird in den Abschnitten Zusammenhang zwischen Konsistenz und Verfügbarkeit, Zusammenhang zwischen Latenz und Verfügbarkeit und Zusammenhang zwischen Durchsatz und Verfügbarkeit beschrieben.Availability’s relationship with consistency, latency, and throughput is described in the sections Consistency's relationship with availability, Latency's relationship with availability and Throughput's relationship with availability.

Kundenorientierte SLA-MetrikenCustomer-facing SLA metrics

Azure Cosmos DB macht die Durchsatz-, Latenz-, Konsistenz- und Verfügbarkeitsmetriken transparent verfügbar.Azure Cosmos DB transparently exposes the throughput, latency, consistency, and availability metrics. Auf diese Metriken kann programmgesteuert und über das Azure-Portal zugegriffen werden, wie in der unten gezeigten Abbildung zu sehen.These metrics are accessible programmatically and via the Azure portal (see the figure below). Mit Azure Application Insights können Sie außerdem Warnungen für verschiedene Schwellenwerte einrichten.You can also set up alerts on various thresholds using Azure Application Insights.

Azure Cosmos DB – für Kunden sichtbare SLA-Metriken

Konsistenz-, Latenz-, Durchsatz- und Verfügbarkeitsmetriken sind transparent für jeden Mandanten verfügbar.Consistency, Latency, Throughput, and Availability metrics are transparently available to each tenant

Nächste SchritteNext steps

ReferenzenReferences

  1. Eric Brewer.Eric Brewer. Towards Robust Distributed SystemsTowards Robust Distributed Systems
  2. Eric Brewer.Eric Brewer. CAP Twelve Years Later – How the rules have changedCAP Twelve Years Later – How the rules have changed
  3. Gilbert, Lynch.Gilbert, Lynch. - Brewer&#39;s Conjecture and Feasibility of Consistent, Available, Partition Tolerant Web Services - Brewer's Conjecture and Feasibility of Consistent, Available, Partition Tolerant Web Services
  4. Daniel Abadi.Daniel Abadi. Consistency Tradeoffs in Modern Distributed Database Systems DesignConsistency Tradeoffs in Modern Distributed Database Systems Design
  5. Martin Kleppmann.Martin Kleppmann. Please stop calling databases CP or APPlease stop calling databases CP or AP
  6. Peter Bailis et al. Probabilistic Bounded Staleness (PBS) for Practical Partial QuorumsPeter Bailis et al. Probabilistic Bounded Staleness (PBS) for Practical Partial Quorums
  7. Naor and Wool.Naor and Wool. Load, Capacity and Availability in Quorum SystemsLoad, Capacity and Availability in Quorum Systems
  8. Herlihy and Wing.Herlihy and Wing. Lineralizability: A correctness condition for concurrent objectsLineralizability: A correctness condition for concurrent objects
  9. Azure Cosmos DB-SLAAzure Cosmos DB SLA