Azure Cosmos DB for PostgreSQL ist Microsofts Lösung für die horizontale Skalierung relationaler Datenbanken auf PostgreSQL-Basis. Der Dienst war zuvor unter dem Namen “Azure Database for PostgreSQL – Hyperscale (Citus)” bekannt und wurde 2022 unter dem Cosmos-DB-Markendach neu positioniert. Im Kern basiert er auf der Open-Source-Citus-Extension, die Microsoft übernommen hat.
Citus-Architektur: Verteiltes PostgreSQL
Die Grundlage von Cosmos DB for PostgreSQL ist die Citus-Extension für PostgreSQL. Citus fügt PostgreSQL ein horizontales Sharding-Modell hinzu: Daten werden anhand einer definierten Shard-Kolonne auf mehrere Worker-Nodes verteilt. Ein Coordinator-Node nimmt Abfragen entgegen, analysiert den Abfrageplan und koordiniert die parallele Ausführung auf den Worker-Nodes. Für die Anwendung sieht der Coordinator wie eine gewöhnliche PostgreSQL-Instanz aus, was die Kompatibilität mit bestehenden Anwendungen und Tools sicherstellt. PostgreSQL-Extensions, Stored Procedures und Standard-SQL-Syntax funktionieren unverändert, solange Abfragen shard-bewusst formuliert sind.
Durch dieses Modell lassen sich Workloads horizontal skalieren, die auf einem einzelnen PostgreSQL-Server an Grenzen stoßen würden: Multi-Tenant-SaaS-Anwendungen mit Millionen von Mandanten, Zeitreihendatenbanken mit hohem Schreibdurchsatz oder Analytics-Workloads auf großen Datenmengen. Microsoft übernimmt als verwalteter Dienst Patching, Backups, Hochverfügbarkeit mit automatischem Failover und Monitoring.
Anwendungsfälle: Multi-Tenant und Analytics
Zwei Architekturmuster dominieren die Nutzung von Cosmos DB for PostgreSQL. Das erste ist die Multi-Tenant-SaaS-Architektur: Die Tenant-ID dient als Shard-Kolonne, sodass alle Daten eines Mandanten auf demselben Worker-Node liegen. Dies ermöglicht effiziente Abfragen innerhalb eines Mandanten und einfache Datenisolation. Das zweite Muster sind Zeitreihendaten und Analytics: Durch den verteilten Schreibdurchsatz können sehr hohe Ingestion-Raten erreicht werden, und parallele Aggregationsabfragen über alle Worker-Nodes profitieren von der horizontalen Skalierung. Für Standard-OLTP-Workloads mit vorhersehbaren Zugriffsmustern ist Azure Database for PostgreSQL Flexible Server die einfachere und oft ausreichende Alternative.
Typische Anwendungsfälle
Häufig gestellte Fragen
Was ist der Unterschied zu Azure Database for PostgreSQL Flexible Server?
Azure Database for PostgreSQL Flexible Server ist ein verwalteter Single-Node-PostgreSQL-Dienst für Standard-Workloads. Cosmos DB for PostgreSQL (Citus) ist ein verteiltes Cluster mit mehreren Worker-Nodes, das horizontal skaliert. Für die meisten Anwendungen reicht Flexible Server aus; Cosmos DB for PostgreSQL ist für sehr große Datemengen und Hochlast-Szenarien geeignet.
Was ist Citus und wie funktioniert Sharding?
Citus ist eine Open-Source-PostgreSQL-Extension, die Daten auf mehrere Worker-Nodes verteilt. Eine Tabelle wird anhand einer Shard-Kolonne in Shards aufgeteilt. Der Coordinator-Node empfängt Abfragen, ermittelt die relevanten Shards und koordiniert die parallele Ausführung auf den Worker-Nodes.
Ist Cosmos DB for PostgreSQL vollständig PostgreSQL-kompatibel?
Größtenteils ja. Da es sich um eine PostgreSQL-Extension handelt, funktionieren Standard-SQL-Abfragen, Transaktionen und viele PostgreSQL-Features. Einige Operationen (z.B. Cross-Shard-JOINs ohne Shard-Kolonne) erfordern Anpassungen der Abfragen.
