Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Azure Cosmos DB für PostgreSQL wird für neue Projekte nicht mehr unterstützt. Verwenden Sie diesen Dienst nicht für neue Projekte. Verwenden Sie stattdessen einen der folgenden beiden Dienste:
Verwenden Sie für hochskalige Szenarien eine verteilte Datenbanklösung mit Azure Cosmos DB für NoSQL, die ein 99,999%iges Verfügbarkeits-Service-Level-Agreement (SLA), eine sofortige Autoskalierung und ein automatisches regionenübergreifendes Failover bietet.
Verwenden Sie die Elastic Clusters-Funktion von Azure Database for PostgreSQL für geshartete PostgreSQL-Datenbanken mithilfe der Open-Source-Erweiterung Citus.
Kolocieren großer Tabellen mit Shardschlüssel
Um den Shardschlüssel für eine operative Echtzeitanalyse-App auszuwählen, befolgen Sie die folgenden Richtlinien:
- Wählen Sie eine Spalte aus, die in großen Tabellen häufig verwendet wird
- Wählen Sie eine Spalte aus, die eine natürliche Dimension in den Daten oder ein zentrales Element der Anwendung ist. Einige Beispiele:
- In der Finanzwelt würde eine Anwendung, die Sicherheitstrends analysiert, wahrscheinlich
security_idverwenden. - In einem Benutzeranalysen-Workload, in dem Sie Website-Nutzungsmetriken analysieren möchten, wäre
user_ideine gute Verteilungsspalte
- In der Finanzwelt würde eine Anwendung, die Sicherheitstrends analysiert, wahrscheinlich
Indem Sie große Tabellen verlagern, können Sie SQL Abfragen parallel zu Workerknoten herunterpushen. Durch das Herunterpushen von Abfragen wird verhindert, dass Daten zwischen Knoten über dem Netzwerk verschoben werden. Vorgänge wie JOINs, Aggregate, Rollups, Filter, LIMITs können effizient ausgeführt werden.
Um parallele, verteilte Abfragen auf zusammengeführten Tabellen zu visualisieren, betrachten Sie dieses Diagramm.
Die Tabellen users und events werden beide durch user_id horizontal partitioniert, sodass verwandte Zeilen für dieselbe Benutzer-ID zusammen auf demselben Workerknoten platziert werden. Die SQL JOINs können passieren, ohne Informationen zwischen Workern zu ziehen.
Optimales Datenmodell für Echtzeit-Apps
Fahren wir mit dem Beispiel einer App fort, die Benutzerwebsitebesuche und -metriken analysiert. Es gibt zwei "Fakten"-Tabellen – Benutzer und Ereignisse – und andere kleinere "Dimensions"-Tabellen.
Führen Sie die folgenden Schritte aus, um die Superleistung verteilter Tabellen auf Azure Cosmos DB for PostgreSQL anzuwenden:
- Verteilen Sie große Faktentabellen auf einer gemeinsamen Spalte. In unserem Fall werden Benutzer und Ereignisse auf
user_idverteilt. - Markieren Sie die kleinen/Dimensionstabellen (
device_types,countriesund `event_types) als Verweistabellen. - Achten Sie darauf, die Verteilungsspalte in primäre, eindeutige und Fremdschlüsseleinschränkungen für verteilte Tabellen einzuschließen. Die Spalte kann dazu führen, dass die Schlüssel zusammengesetzt werden. Es müssen Schlüssel für Referenztabellen aktualisiert werden.
- Wenn Sie große verteilte Tabellen verknüpfen, müssen Sie sie unbedingt mit dem Shardschlüssel verknüpfen.
-- Distribute the fact tables
SELECT create_distributed_table('users', 'user_id');
SELECT create_distributed_table('products', 'user_id', colocate_with => 'users');
-- Turn dimension tables into reference tables, with synchronized copies
-- maintained on every worker node
SELECT create_reference_table('countries');
-- similarly for device_types and event_types...
Nächste Schritte
Jetzt haben wir die Datenmodellierung für skalierbare Apps erkundet. Der nächste Schritt besteht darin, die Datenbank mithilfe der Programmiersprache Ihrer Wahl zu verbinden und abzufragen.