Azure Cosmos DB: Globales NoSQL
Erkunden Sie die Multi-Modell- und Multi-Region-Architektur von Cosmos DB, verstehen Sie Partitionsschlüssel und wählen Sie die passende Konsistenzebene für die Anforderungen Ihrer Anwendung.
Azure Cosmos DB: Globales NoSQL ist eine kostenlose Azure Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Azure Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.
Was ist Azure Cosmos DB?
Azure Cosmos DB ist der global verteilte NoSQL-Datenbankdienst von Microsoft mit Unterstützung für mehrere Modelle. Er ist darauf ausgelegt, bei jeder Skalierung und überall auf der Welt Lese- und Schreibvorgänge mit einer Latenz im einstelligen Millisekundenbereich bereitzustellen. Im Gegensatz zu herkömmlichen Datenbanken, die auf eine einzelne Region beschränkt sind, kann Cosmos DB Daten transparent gleichzeitig in Dutzende von Azure-Regionen replizieren.
Unterstützung mehrerer APIs
Cosmos DB unterstützt mehrere Datenbank-APIs über einen einzigen Dienst. Sie können die native NoSQL API (JSON-Dokumente), die MongoDB API für Apps, die auf MongoDB-Treibern basieren, die Apache Cassandra API für Wide-Column-Workloads, die Gremlin API für Graphdaten und die Table API für Schlüssel-Wert-Daten verwenden. Jede API stellt die zugrunde liegende Cosmos DB-Engine über eine vertraute Schnittstelle bereit.
Konten, Datenbanken und Container
Die Ressourcenhierarchie von Cosmos DB besteht aus drei Ebenen. Ein Konto ist die Ressource der obersten Ebene und definiert die Liste der Replikationsregionen sowie die Konsistenzebene. Innerhalb eines Kontos erstellen Sie Datenbanken als logische Namespaces. In jeder Datenbank erstellen Sie Container – die Einheit, die Elemente (Dokumente) enthält und auf der der Durchsatz bereitgestellt wird.
# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
--name mycosmosaccount \
--resource-group myRG \
--kind GlobalDocumentDB \
--locations regionName=eastus failoverPriority=0 isZoneRedundant=true
# Create a database
az cosmosdb sql database create \
--account-name mycosmosaccount \
--resource-group myRG \
--name myDatabasePartitionsschlüssel: Grundlage der Skalierung
Ein Partitionsschlüssel ist eine Eigenschaft jedes Elements, die Cosmos DB verwendet, um Daten auf physische Partitionen zu verteilen. Die Wahl des richtigen Partitionsschlüssels ist entscheidend: Er sollte eine hohe Kardinalität aufweisen (viele unterschiedliche Werte), den Schreibdatenverkehr gleichmäßig verteilen und in der Mehrheit Ihrer Abfragen vorkommen. Eine ungeeignete Wahl des Partitionsschlüssels führt zu Hot Partitions, die den Durchsatz drosseln und die Leistung beeinträchtigen.
// Example container with /userId as partition key
// Items in the container:
{
'id': 'order-001',
'userId': 'user-42',
'product': 'Widget',
'total': 29.99
}
// userId distributes orders across partitionsDurchsatz: RU/s-Modell
Cosmos DB berechnet den Durchsatz in Request Units pro Sekunde (RU/s). Eine RU entspricht ungefähr den Kosten für das Lesen eines 1-KB-Dokuments anhand seiner ID. Schreibvorgänge, Abfragen und Löschvorgänge kosten je nach Elementgröße und Indexkomplexität mehr RUs. Sie können RU/s auf Containerebene bereitstellen oder einen Pool für alle Container in einer Datenbank gemeinsam nutzen. Alternativ können Sie in den Autoscale-Modus wechseln, damit Cosmos DB den Durchsatz automatisch skaliert.
# Create a container with 400 RU/s
az cosmosdb sql container create \
--account-name mycosmosaccount \
--resource-group myRG \
--database-name myDatabase \
--name orders \
--partition-key-path '/userId' \
--throughput 400Globale Verteilung
Die leistungsfähigste Funktion von Cosmos DB ist die Möglichkeit, Daten mit wenigen Klicks global zu replizieren. Sie fügen Ihrem Konto Regionen hinzu, und Cosmos DB synchronisiert automatisch alle Schreibvorgänge über sämtliche Regionen hinweg. In einer Konfiguration mit mehreren Schreibregionen (Multi-Master) kann jede Region gleichzeitig Lese- und Schreibvorgänge bedienen. Dadurch wird die Latenz für geografisch verteilte Benutzer minimiert.
# Add a second region to the Cosmos DB account
az cosmosdb update \
--name mycosmosaccount \
--resource-group myRG \
--locations regionName=eastus failoverPriority=0 \
regionName=westeurope failoverPriority=1Fünf Konsistenzebenen
Cosmos DB bietet fünf anpassbare Konsistenzebenen in einem Spektrum von der stärksten bis zur schwächsten: Strong (linearisierbare Lesevorgänge, höchste Latenz), Bounded Staleness (Lesevorgänge hinken Schreibvorgängen innerhalb eines begrenzten Zeitfensters hinterher), Session (Standard – konsistente Lesevorgänge für Ihre eigenen Schreibvorgänge innerhalb einer Sitzung), Consistent Prefix (Lesevorgänge sehen niemals Schreibvorgänge in falscher Reihenfolge) und Eventual (schnellste Lesevorgänge, schwächste Garantien). Wählen Sie die Ebene entsprechend der Toleranz Ihrer Anwendung gegenüber veralteten Daten.
Automatische Indizierung
Standardmäßig indiziert Cosmos DB automatisch jede Eigenschaft jedes Elements, das Sie einfügen, ohne dass Sie zuvor ein Schema definieren müssen. Dadurch sind flexible Ad-hoc-Abfragen ohne Pflege von Indizes möglich. Sie können die Indizierungsrichtlinie anpassen, um nie abgefragte Pfade auszuschließen (und dadurch die Speicherkosten zu senken) oder zusammengesetzte Indizes für ORDER BY-Abfragen über mehrere Eigenschaften hinzuzufügen.
// Custom indexing policy example
{
'indexingMode': 'consistent',
'includedPaths': [{ 'path': '/*' }],
'excludedPaths': [
{ 'path': '/largeTextBlob/?' },
{ 'path': '/_etag/?' }
]
}Change Feed für ereignisgesteuerte Apps
Der Change Feed ist ein sortiertes Protokoll aller Erstellungs- und Aktualisierungsvorgänge in einem Cosmos DB-Container. Anwendungen abonnieren den Change Feed, um nachgelagerte Verarbeitung auszulösen – beispielsweise zum Aktualisieren eines Suchindexes, zum Senden von Benachrichtigungen oder zum Schreiben in eine materialisierte Sicht. Der Change Feed bildet die Grundlage für ereignisgesteuerte Muster und CQRS-Muster in Cosmos DB-Architekturen.
Time-to-Live (TTL) für ablaufende Daten
Cosmos DB unterstützt Time-to-Live (TTL), eine Eigenschaft, die Sie für einen Container oder einzelne Elemente festlegen, um sie nach einer bestimmten Anzahl von Sekunden automatisch zu löschen. Dies ist ideal für Sitzungsdaten, Cacheeinträge, Auditprotokolle mit gesetzlich vorgeschriebenen Aufbewahrungsfristen oder beliebige Daten mit einem bekannten Ablaufzeitpunkt. TTL-Löschvorgänge werden als Hintergrundaufgaben ausgeführt und verbrauchen keinen bereitgestellten RU/s-Durchsatz.
// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
--account-name mycosmosaccount \
--resource-group myRG \
--database-name myDatabase \
--name sessions \
--ttl 3600Preise und serverlose Ebene
Cosmos DB bietet zwei Abrechnungsmodi. Bei Provisioned Throughput zahlen Sie unabhängig von der tatsächlichen Nutzung pro RU/s-Stunde. Dieser Modus eignet sich für konstante, vorhersehbare Workloads. Im Modus Serverless zahlen Sie pro verbrauchter RU und gespeichertem GB, ohne Mindestkosten. Dadurch eignet er sich besonders für Entwicklung, Prototyping und Lastspitzen. Serverless Cosmos DB ist derzeit auf eine einzelne Region beschränkt.
Wissenscheck
Testen Sie Ihr Verständnis der Konzepte aus Microsoft Azure Fundamentals (AZ-900) aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Cosmos DB ist ein global verteilter NoSQL-Dienst mit mehreren Datenmodellen, Partitionsschlüssel bestimmen, wie Daten fragmentiert werden, und müssen sorgfältig gewählt werden, und fünf Konsistenzebenen ermöglichen es Ihnen, Latenz und Aktualität der Daten auszubalancieren. Als Nächstes sehen wir uns die verwalteten Azure-Dienste für Open-Source-Datenbank-Engines an.
Häufig gestellte Fragen
Ist die Lektion „Azure Cosmos DB: Globales NoSQL“ kostenlos?
Ja — der vollständige Text von „Azure Cosmos DB: Globales NoSQL“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Azure Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Azure Cosmos DB: Globales NoSQL“?
Erkunden Sie die Multi-Modell- und Multi-Region-Architektur von Cosmos DB, verstehen Sie Partitionsschlüssel und wählen Sie die passende Konsistenzebene für die Anforderungen Ihrer Anwendung. Du übst Azure Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Azure Fundamentals zu starten?
Keine Vorkenntnisse erforderlich. Azure Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Azure Cosmos DB: Globales NoSQL“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Azure Fundamentals-Lektion Code schreiben und ausführen?
Ja. Jede Azure Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Azure SQL Database
- Azure Cosmos DB: Globales NoSQL
- Azure-Datenbanken für Open-Source-Engines
- Datenbankmigration zu Azure