Kurs
Wenn Anwendungen global skaliert werden, greifen herkömmliche Datenbanken oft zu kurz. Azure Cosmos DB, die global verteilte Multi-Modell-Datenbank von Microsoft, bietet Zugriff mit niedriger Latenz, mehrere Konsistenzmodelle und nahtlose Skalierung über Regionen hinweg.
In diesem Leitfaden werden wichtige Konzepte wie Container, Items und SQL-APIs behandelt, die für jeden Cloud-Ingenieur, der mit Azure und Cosmos DB arbeiten möchte, unerlässlich sind. Du erhältst einen praktischen Überblick über die Architektur der Cloud und erfährst, warum sie die erste Wahl für Cloud-native, unternehmenskritische Anwendungen ist.
Was ist Azure Cosmos DB?
Azure Cosmos DB ist eine vollständig verwaltete NoSQL-Datenbank auf Microsoft Azure, die für hohe Verfügbarkeit, geringe Latenz und globale Skalierbarkeit entwickelt wurde. Sie unterstützt mehrere Datenmodelle, darunter Dokument-, Key-Value-, Graph- und Spaltenmodelle, und ist damit flexibel für verschiedene Anwendungen.
Seine größte Stärke ist der weltweite Vertrieb: Mit ein paar Klicks können die Daten über Azure-Regionen hinweg repliziert werden, um einen schnellen, lokalen Zugriff zu ermöglichen.
Entwickler können außerdem aus verschiedenen Konsistenzmodellen wählen, um ein Gleichgewicht zwischen Leistung und Datengenauigkeit herzustellen. Wenn du neu in der Welt von Azure bist, empfehle ich dir dringend, den folgenden Anfängerleitfaden zu Azure zu lesen.
Warum Azure Cosmos DB nutzen?
Azure Cosmos DB bietet eine Reihe leistungsstarker Funktionen, die auf die Entwicklung skalierbarer, hochleistungsfähiger Anwendungen zugeschnitten sind:
Bild vom Autor. Warum Cosmos DB verwenden?
- Globale Verteilung mit geringer Latenz: Repliziert Daten automatisch über Azure-Regionen hinweg und gewährleistet so einen schnellen, lokalen Zugriff für Nutzer/innen weltweit.
- Mehrere Konsistenzstufen: Wähle zwischen den fünf Modellen Strong, Bounded Staleness, Session, Consistent Prefix und Eventual, um Konsistenz, Verfügbarkeit und Leistung auszubalancieren.
- Unterstützung mehrerer Modelle: Arbeitet mit Dokumenten- (JSON), Key-Value-, Graph- und Spaltendatenmodellen und ist damit für verschiedene Arbeitslasten geeignet.
- Hohe Verfügbarkeit mit SLAs: Unterstützt durch SLA für Lese- und Schreibvorgänge, ideal für geschäftskritische Systeme.
- Elastische Skalierbarkeit: Skaliere den Durchsatz automatisch je nach Bedarf und ohne Ausfallzeiten, damit du auch bei schwankender Belastung reaktionsfähig bleibst.
Zusammen machen diese Fähigkeiten Cosmos DB zu einer starken Grundlage für global verteilte, Cloud-native Anwendungen, die Echtzeitleistung und Ausfallsicherheit erfordern.
Azure Cosmos DB Anwendungsfälle
Azure Cosmos DB ist eine vielseitige Wahl für skalierbare Echtzeitanwendungen in vielen Branchen. Seine global verteilte Architektur mit geringer Latenz ist ideal für Szenarien, die hohe Verfügbarkeit und schnellen Datenzugriff erfordern. Hier sind einige wichtige Anwendungsfälle:
- KI & maschinelles Lernen: Integriert sich in Echtzeit-KI-Pipelines und unterstützt die Vektorsuche, was intelligente Anwendungen wie Empfehlungsmaschinen und semantische Suche ermöglicht.
- E-Commerce & Einzelhandel: Ermöglicht personalisierte Einkaufserlebnisse, indem es das Nutzerverhalten erfasst und sofortige Empfehlungen ausgibt. Seine globale Verteilung gewährleistet einen präzisen, latenzarmen Zugriff auf Bestandsdaten in allen Regionen.
- Spiele und soziale Medien: Verarbeitet Spielerstatistiken, Chats und Ranglisten in Echtzeit mit schneller Lese- und Schreibgeschwindigkeit. Die Konsistenz auf Sitzungsebene sorgt für reibungslose Erlebnisse für Nutzerinnen und Nutzer weltweit.
- IoT und Zeitreihendaten: Nimmt große Mengen an Sensor- und Telemetriedaten effizient auf und verarbeitet sie. Ideal für Anwendungsfälle wie vorausschauende Wartung, Anomalieerkennung und Echtzeitüberwachung.
Cosmos DB liefert die Geschwindigkeit, Skalierbarkeit und Flexibilität, die für moderne Cloud-native Lösungen benötigt werden. Um besser zu verstehen, was du mit Cosmos DB und Azure machen kannst, kannst du dir den folgenden Leitfaden zu Microsofts Cloud-Angeboten ansehen.
Funktionen und Möglichkeiten von Cosmos DB
In diesem Abschnitt werden wir uns mit den Kernfunktionen beschäftigen, die es Entwicklern ermöglichen, schnelle, robuste und intelligente Anwendungen zu erstellen, darunter auch Strategien zur Datenmodellierung.
Datenmodellierung und Indexierung
Azure Cosmos DB ermöglicht es Containern, JSON-Dokumente zu speichern, ohne dass ein vordefiniertes Schema erforderlich ist, so dass du dein Datenmodell im Laufe der Zeit leicht anpassen und weiterentwickeln kannst.
Die Indizierung in Cosmos DB erfolgt standardmäßig automatisch, wobei jedes Feld indiziert ist, um schnelle Abfragen zu unterstützen. Dies kann jedoch zu einem erhöhten Request Unit (RU)-Verbrauch führen, insbesondere bei schreibintensiven Workloads. Zur Optimierung können Entwickler eigene Indizierungsrichtlinien definieren. Diese Richtlinien ermöglichen es, die automatische Indizierung zu deaktivieren, wenn sie nicht notwendig ist, Pfade für Felder festzulegen, die indiziert werden sollen, und Felder auszuschließen, die nicht relevant sind.
Cosmos DB enthält außerdem die FunktionChange Feed , die Einfügungen und Aktualisierungen in Echtzeit erfasst und sich damit ideal für den Aufbau ereignisgesteuerter Systeme, das Auslösen von Workflows oder das Streaming von Daten nach unten eignet. Eine weitere nützliche Funktion ist Time-to-Live (TTL), die das automatische Löschen von Dokumenten nach einem bestimmten Zeitraum ermöglicht.
Partitionierung und Leistungsoptimierung
Bei schreibintensiven Workloads sollten die Partitionsschlüssel eine hohe Kardinalität und eine gleichmäßige Verteilung haben, z. B. Benutzer-IDs, Zeitstempel oder geografische Regionen, um heiße Partitionen und Drosselung zu vermeiden. In leseintensiven Szenarien ist es oft effektiver, zusammengehörige Daten mit Partitionsschlüsseln wie Kunden-IDs zu gruppieren, um einen effizienten Zugriff für Bereichsoder Punktabfragen zu ermöglichen. Eine schlechte Partitionierung kann zu einer ungleichmäßigen Datenverteilung und Leistungseinbußen führen. Da jede logische Partition auf 20 GB begrenzt ist, ist es wichtig, Partitionierungsstrategien zu entwickeln, die eine Überlastung eines einzelnen Schlüssels vermeiden.
Die Abfrageleistung kann weiter verbessert werden, indem Zugriffsmuster entwickelt werden, die auf einzelne Partitionen abzielen, da diese schneller und ressourcenschonender sind. Partitionsübergreifende Abfragen werden zwar unterstützt, führen aber in der Regel zu einer höheren Latenz und einem höheren RU-Verbrauch, da sie mehrere Partitionen durchsuchen. Um die Abfragekosten zu senken, sollten Entwickler Indizierungsstrategien nutzen (ich denke dabei an zusammengesetzte Indizes) und die Anwendung von Caching-Mechanismen für häufig abgerufene Daten in Betracht ziehen.
Was den Durchsatz angeht, können Entwickler mit Cosmos DB Request Units entweder auf Container- oder Datenbankebene konfigurieren. Mit diesem abstimmbaren Durchsatzmodell kannst du sicherstellen, dass deine App auch bei Lastspitzen ihre Leistung beibehält.
Konsistenzmodelle und Datenhaltbarkeit
Azure Cosmos DB bietet fünf abstimmbare Konsistenzstufen. Das geht weit über die typischen Optionen für eventuelle oder starke Konsistenz hinaus, die in den meisten nicht-relationalen Datenbanken zu finden sind.
Auf der schwächsten Stufe bietet die eventuelle Konsistenz die schnellste und verfügbarste Option, kann aber veraltete oder ungeordnete Daten liefern, wenn sich die Replikate nach und nach synchronisieren. Etwas stärker ist ein konsistentes Präfix, das sicherstellt, dass die Lesevorgänge die Reihenfolge der Schreibvorgänge widerspiegeln, auch wenn diese nicht unbedingt die neuesten sind.
Die Standardeinstellung und praktischste Einstellung für viele Anwendungen ist die Sitzungskonsistenz, die garantiert, dass ein Client seine Schreibvorgänge immer innerhalb einer Sitzung liest. Bounded Staleness geht noch einen Schritt weiter und erlaubt eine kontrollierte Verzögerung zwischen Schreib- und Lesevorgängen, die entweder durch ein Zeitintervall (T) oder mehrere Versionen (K) definiert wird. In einer einzelnen Region kann die Verzögerung beispielsweise auf 5 Sekunden oder 10 Versionen begrenzt sein, während sie in einer Einrichtung mit mehreren Regionen bis zu 5 Minuten oder 100.000 Versionen betragen kann.
Am stärksten ist die starke Konsistenz, die sicherstellt, dass alle Lesevorgänge über alle Replikate hinweg den letzten übertragenen Schreibvorgang widerspiegeln. Diese Stufe bietet die strengsten Garantien und vermeidet veraltete, unsaubere oder Phantom-Lesevorgänge und ähnelt dem Verhalten traditioneller ACID-konformer Systeme.
Schreiben in mehreren Regionen und globale Verfügbarkeit
Eines der herausragenden Merkmale von Azure Cosmos DB ist die Unterstützung von Schreibvorgängen in mehreren Regionen durch aktive (Multi-Master) Replikation. Dadurch können Anwendungen Schreibvorgänge in mehreren Regionen gleichzeitig durchführen, was die Latenzzeit für Nutzer/innen auf der ganzen Welt deutlich reduziert.
Cosmos DB umfasst auch eine automatische globale Replikation, die sicherstellt, dass die Daten in allen Azure-Regionen synchronisiert werden. Im Falle eines regionalen Ausfalls löst das System einen automatischen Failover zur nächsten verfügbaren Region aus.
Obwohl Cosmos DB die Mechanismen des Shardings und der Datenverteilung automatisch handhabt, müssen die Entwickler dennoch einen geeigneten Partitionsschlüssel wählen, um eine gleichmäßige Verteilung und effektive horizontale Skalierung zu unterstützen. Diese Entscheidung ist besonders wichtig für große Datensätze, die die 20 GB Grenze pro logischer Partition überschreiten können. Eine frühzeitige Planung der Partitionierung hilft, Engpässe und Leistungsprobleme zu vermeiden, wenn die Anwendung wächst.
Cosmos DB Preisgestaltung und Kostenmanagement
Die Preise für Azure Cosmos DB basieren auf Request Units (RUs), die die für Lese- und Schreibvorgänge sowie Abfragen verwendeten Ressourcen widerspiegeln. Ein einfacher Lesepunkt kostet normalerweise 1 RU.
Preisgestaltungsmodelle
- Bereitgestellter Durchsatz: Reserviere RUs für vorhersehbare Arbeitslasten, die pro Durchsatz und Speicherplatz abgerechnet werden.
- Serverlos: Das Pay-per-Use-Modell ist ideal für sporadische oder wenig genutzte Arbeitslasten.
Kostenoptimierung
- Verwende den Cosmos DB Profiler, um die Abfrageeffizienz zu überwachen und zu optimieren.
- Optimiere die Indizierung und Partitionierung, um den RU-Verbrauch zu reduzieren.
- Verfolge deine Ausgaben mit Azure Cost Management und setze Nutzungswarnungen.
- Wenn du das richtige Modell wählst und dein Design optimierst, kannst du die Kosten deutlich senken.
Erste Schritte mit Azure Cosmos DB
Bevor du mit Azure Cosmos DB arbeiten kannst, musst du ein Konto einrichten, deine Konfiguration auswählen und deine erste Datenbank und deinen ersten Container erstellen. Diese Schritt-für-Schritt-Anleitung führt dich über das Azure-Portal durch den Prozess.
Schritt 1: Melde dich für ein Azure-Konto an und greife über das Azure-Portal auf Cosmos DB zu
Melde dich zunächst im Azure-Portal an. Gib in der globalenSuchleiste oben "Azure Cosmos DB"ein und wähle es aus den Ergebnissen aus. Klicke im Cosmos DB-Blade auf "Erstellen", um mit der Konfiguration deiner neuen Instanz zu beginnen.
Screenshot der Haupt-Landingpage von Azure
Screenshot der Hauptseite von Azure Cosmos DB
Schritt 2: Wähle deine API und konfiguriere die Grundlagen
Wähle Azure Cosmos DB for NoSQL als dein API-Modell (Core SQL API).
Screenshot von Azure Cosmos DB. Erstellen einer Instanz
Im Bereich Grundlagen gibst du dann deine Konfigurationsdetails ein, einschließlich deines Azure-Abonnements, einer Ressourcengruppe (entweder neu oder vorhanden), eines global eindeutigen Kontonamens und einer bevorzugten Azure-Region. Availability Zones können deaktiviert bleiben. Cosmos DB bietet zwei Modi für den Durchsatz - einen festen Durchsatz für vorhersehbare Arbeitslasten und einen serverlosen Durchsatz für variable oder verkehrsarme Szenarien. Wähle bei der Einrichtung den Modus, der am besten für deine Anwendung geeignet ist. Diese Optionen können auch später noch angepasst werden, wenn sich dein Arbeitsaufkommen entwickelt.
Screenshot von Azure Cosmos DB. Die Details ausfüllen
Sobald du fertig bist, klicke auf Überprüfen + Erstellenund bestätige dann durch Klicken auf Erstellen um mit der Bereitstellung zu beginnen.
Screenshot von Azure Cosmos DB. Validierung unserer Instanz
Sobald die Bereitstellung abgeschlossen ist, wähle Zur Ressource gehen um auf dein neues Cosmos DB-Konto zuzugreifen.
Screenshot von Azure Cosmos DB. Informationen über die Ressource, die wir gerade erstellt haben
Schritt 3: Erstelle eine Datenbank und einen Container
Navigieren Sie zu Daten-Explorer von der Cosmos DB Konto-Menü.
Screenshot von Azure Cosmos DB. Unsere Daten erforschen
Klicke auf Neuer Container, um den Konfigurationsdialog zu öffnen.
Screenshot von Azure Cosmos DB. Einen neuen Container erstellen
Lege einen neuen Datenbanknamen und einen Containernamen fest und gib vor allem einen Partitionsschlüssel an, um eine gleichmäßige Datenverteilung und optimale Leistung zu gewährleisten. Klicke auf OK, um die Datenbank und den Container zu erstellen .
Screenshot von Azure Cosmos DB: Fülle die Merkmale unseres Containers aus.
Sobald sie erstellt sind, siehst du beide in der Hierarchie des Datenexplorers.
Screenshot von Azure Cosmos DB. Überprüfe die Datenhierarchie.
Schritt 4: Data Explorer für die Abfrage und Verwaltung von Datenbankobjekten verwenden
Erweitere im neu erstellten Container (Mitarbeiter) die Baumansicht und wähle Artikel aus.
Screenshot von Azure Cosmos DB. Überprüfen des Containers
Klick Neuer Artikel.
Screenshot von Azure Cosmos DB. Einen neuen Artikel erstellen
Fügen Sie das folgende JSON-Beispiel ein und klicken Sie dann auf Speichern:
{
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"name": {
"first": "Josep",
"last": "Ferrer"
},
"email": "<jferrers@datacampdummy.com>",
"department": {
"name": "Data Science"
}
}
Um eine Abfrage zu testen, wählen Sie Neue SQL-Abfrage und gib die folgende NoSQL-Abfrage ein, die eine Groß- und Kleinschreibung nicht berücksichtigende Suche nach Mitarbeitern in der Abteilung Logistics
durchführt.
Screenshot von Azure Cosmos DB. Überprüfe den Container.
SELECT VALUE {
"name": CONCAT(e.name.last, " ", e.name.first),
"department": e.department.name,
"emailAddresses": [
e.email
]
}
FROM
employees e
WHERE
STRINGEQUALS(e.department.name, "logistics", true)
Jetzt klicken wir, um die Abfrage auszuführen. Sie gibt eine strukturierte Ausgabe zurück:
[
{
"name": "Josep Ferrer",
"department": "Logistics",
"emailAddresses": [
"jferrers@datacampdummy.com"
]
}
]
Und das wäre dann alles!
Vorteile und Nachteile von Cosmos DB
Vorteile
- Hohe Verfügbarkeit: Die integrierte Replikation über mehrere Regionen hinweg sorgt für globale Zuverlässigkeit und Betriebszeit.
- Schemaflexibilität: Unterstützt schemaloses JSON mit automatischer Indizierung für schnelle Abfragen.
- KI-Integration: Native Unterstützung für Vektorsuche und Echtzeit-KI-Szenarien.
- Umfassende API-Unterstützung: Kompatibel mit SQL, MongoDB, Cassandra, Gremlin und Tabellen-APIs.
- Vollständig verwalteter Service: Sie kümmert sich um Skalierung, Patching und Infrastruktur und reduziert den betrieblichen Aufwand.
Benachteiligungen
- Eingeschränkte SQL-Funktionen: JOIN- und GROUP BY-Funktionen, wie sie in relationalen Datenbanken üblich sind, fehlen vollständig.
- Cost at Scale: Kann bei hohem Durchsatz teuer werden, wenn er nicht optimiert wird.
Fazit
Azure Cosmos DB ist eine robuste, global verteilte NoSQL-Datenbank, die für moderne, Cloud-native Anwendungen entwickelt wurde. Mit seiner Multi-Modell-Unterstützung, der aktiv-aktiven Replikation und den einstellbaren Konsistenzniveaus eignet es sich hervorragend für Szenarien, die hohe Verfügbarkeit, Reaktionsfähigkeit in Echtzeit und elastische Skalierbarkeit erfordern, wie z. B. KI-gesteuerte Systeme, E-Commerce-Plattformen und IoT-Lösungen.
Die vollständig verwaltete Infrastruktur, die flexible Datenmodellierung und das umfangreiche API-Ökosystem machen sie zu einer guten Wahl für Entwickler und Architekten. Dennoch sollten Teams bei der Planung von Produktionsworkloads mögliche Einschränkungen wie fehlende SQL-Funktionen und Kosten bei der Skalierung sorgfältig berücksichtigen.
Wenn du deine Fähigkeiten weiter verbessern willst, findest du hier einige weitere gute Ressourcen:
- Melde dich für unseren Kurs "Microsoft Azure verstehen" an, um dein Wissen über das Azure-Ökosystem zu vertiefen.
- Lerne Azure von Grund auf in unserem gemeinsamen Kurs mit Microsoft, der sich an Anfänger/innen richtet, die in die Cloud einsteigen wollen.
- Beginne mit unserer Azure Fundamentals Certification, um eine solide Grundlage im Cloud Computing zu schaffen.
Josep ist Data Scientist und Projektmanager beim katalanischen Fremdenverkehrsamt und nutzt Daten, um die Erfahrungen von Touristen in Katalonien zu verbessern. Sein Fachwissen umfasst das Management von Datenspeicherung und -verarbeitung, gekoppelt mit fortschrittlichen Analysen und der effektiven Kommunikation von Datenerkenntnissen.
Er ist auch ein engagierter Pädagoge, der den Big-Data-Masterstudiengang an der Universität von Navarra unterrichtet und regelmäßig aufschlussreiche Artikel über Datenwissenschaft auf Medium und KDNuggets veröffentlicht.
Er hat einen BS in technischer Physik von der Polytechnischen Universität von Katalonien und einen MS in intelligenten interaktiven Systemen von der Universität Pompeu Fabra.
Derzeit engagiert er sich leidenschaftlich dafür, datenbezogene Technologien durch die Medium-Publikation ForCode'Sake einem breiteren Publikum zugänglich zu machen.
FAQs
Was ist Azure Cosmos DB?
Azure Cosmos DB ist ein vollständig verwalteter, global verteilter NoSQL-Datenbankdienst von Microsoft, der mehrere Datenmodelle unterstützt und für Anwendungen mit niedriger Latenz und hoher Verfügbarkeit optimiert ist.
Warum sollten Entwickler Cosmos DB nutzen?
Entwickler entscheiden sich für Cosmos DB wegen der Replikation über mehrere Regionen, der elastischen Skalierbarkeit, der fünf abstimmbaren Konsistenzmodelle und der Unterstützung für mehrere APIs und Datenmodelle, was es ideal für moderne, Cloud-native Anwendungen macht.
Was sind häufige Anwendungsfälle für Cosmos DB?
Cosmos DB wird in den Bereichen KI und maschinelles Lernen (z. B. Vektorsuche), E-Commerce und Einzelhandel (Echtzeit-Personalisierung), Gaming und soziale Medien (Interaktionen mit geringer Latenz) und IoT (Echtzeit-Telemetrie und -Analysen) eingesetzt.
Wie geht Cosmos DB mit Skalierbarkeit und Leistung um?
Cosmos DB nutzt partitionierte Container, einen über Request Units (RUs) einstellbaren Durchsatz und eine intelligente Datenverteilung, um horizontal zu skalieren und leistungsstarke Abfragen zu unterstützen.
Was sind die Hauptnachteile von Cosmos DB?
Cosmos DB ist zwar leistungsfähig, kann aber bei hohem Durchsatz teuer werden, wenn es nicht optimiert wird, und es fehlt die volle SQL-Unterstützung für komplexe Abfragen wie Multi-Table-Joins oder erweiterte GROUP BY
Operationen.
Was passiert mit meinen Daten in Azure Cosmos DB bei einem regionalen Ausfall?
Im Falle eines regionalen Ausfalls wird das Recovery Point Objective (RPO) von Azure Cosmos DB- oder wie viele Daten verloren gehen könnten - durch dein Konsistenzmodell und deine Einsatzkonfiguration bestimmt:
-
Starke Konsistenz garantiert null Datenverlust (RPO = 0).
-
Andere Konsistenzmodelle (wie Session, Bounded Staleness oder Eventual) können minimale Datenverzögerungen oder Versionslücken zulassen.
Mit dieser Auswahl an Optionen kannst du das Verhalten von Cosmos DB an die Bedürfnisse deiner App anpassen - egal, ob du Wert auf Genauigkeit, Geschwindigkeit oder eine Mischung aus beidem legst.
Wie sollte ich hierarchische Daten in Azure Cosmos DB modellieren?
Um hierarchische Daten wie Ordnerstrukturen oder Kategoriebäume zu modellieren, empfiehlt Cosmos DB, die Dokumentstruktur zu verflachen. Verwende Felder wie parentId
, um Beziehungen darzustellen, anstatt verschachtelte Dokumente oder komplexe Joins.
Dieses Design verbessert die Abfrageeffizienz und Skalierbarkeit und erleichtert die Verwaltung und den Abruf von zusammenhängenden Daten in verteilten Umgebungen.
Welches Konsistenzmodell sollte ich in einer multiregionalen Cosmos DB-Konfiguration verwenden?
Azure Cosmos DB unterstützt alle fünf Konsistenzmodelle in Multiregionen-Einsätzen und gibt dir die Flexibilität, Leistung und Datengenauigkeit in Einklang zu bringen.
-
Sitzungskonsistenz ist oft ideal - sie bietet Lese- und Schreibgarantien, geringe Latenzzeiten und minimalen Overhead.
-
Für strengere oder entspanntere Garantien kannst du starke, begrenzte Staleness, konsistente Präfixe oder eventuelle Konsistenz wählen.
Diese Vielseitigkeit macht es einfacher, Cosmos DB an die einzigartigen Anforderungen deiner global verteilten Anwendungen anzupassen.