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.
Allgemeiner Filter als Shardschlüssel
Befolgen Sie die folgenden Richtlinien, um den Shard-Schlüssel für eine Anwendung mit hohem Durchsatz zu wählen:
- Wählen Sie eine Spalte aus, die für Punkt-Lookup verwendet wird und in den meisten Vorgängen zum Erstellen, Lesen, Aktualisieren und Löschen vorhanden ist.
- Wählen Sie eine Spalte aus, die eine natürliche Dimension in den Daten oder ein zentrales Element der Anwendung ist. Beispiel:
- In einem IOT-Workload ist
device_ideine gute Verteilungsspalte.
- In einem IOT-Workload ist
Die Wahl eines guten Shardschlüssels hilft dabei, Netzwerk-Hops zu optimieren, während Sie Arbeitsspeicher und Berechnung nutzen, um Millisekundenlatenz zu erzielen.
Optimales Datenmodell für Apps mit hohem Durchsatz
Nachfolgend finden Sie ein Beispiel für ein Beispieldatenmodell für eine IoT-App, die die Telemetrie (Zeitreihendaten) von Geräten erfasst. Es gibt zwei Tabellen zum Erfassen der Telemetrie: devices und events. Es könnten andere Tabellen vorhanden sein, aber sie werden in diesem Beispiel nicht behandelt.
Beachten Sie beim Erstellen einer App mit hohem Durchsatz einige Optimierungen.
- Verteilen Sie große Tabellen auf eine gemeinsamen Spalte, die zentrales Element der App ist, und die Spalte, die Ihre App hauptsächlich abfragt. Im obigen Beispiel einer IOT-App, handelt es sich bei
device_idum diese Spalte, und sie sucht die Ereignisse und Gerätetabellen gemeinsam. - Die restlichen kleinen Tabellen können Referenztabellen sein.
- Da IOT-Apps eine Zeitdimension haben, partitionieren Sie Ihre verteilten Tabellen basierend auf der Zeit. Sie können die systemeigenen Azure Cosmos DB für PostgreSQL Zeitreihenfunktionen verwenden, um Partitionen zu erstellen und zu verwalten.
- Die Partitionierung hilft dabei, Daten effizient nach Abfragen mit Zeitfiltern zu filtern.
- Das Ablaufen alter Daten ist auch schnell, indem der Befehl DROP anstatt DELETE verwendet wird.
- Die Ereignistabelle in unserem Beispiel wird nach Monat partitioniert.
- Verwenden Sie den JSONB-Datentyp, um semistrukturierte Daten zu speichern. Geräte-Telemetriedaten sind in der Regel nicht strukturiert, jedes Gerät verfügt über seine eigene Metriken.
- In unserem Beispiel weist die Ereignistabelle eine
detail-Spalte auf, die JSONB ist.
- In unserem Beispiel weist die Ereignistabelle eine
- Wenn Ihre IoT-App räumliche Funktionen benötigt, können Sie die PostGIS-Erweiterung verwenden, die Azure Cosmos DB für PostgreSQL systemintern unterstützt.
Nächste Schritte
Jetzt haben Sie die Datenmodellierung für skalierbare Apps abgeschlossen. Der nächste Schritt besteht darin, die Datenbank mithilfe der Programmiersprache Ihrer Wahl zu verbinden und abzufragen.