Freigeben über


Modellieren von Transaktions-Apps mit hohem Durchsatz in Azure Cosmos DB for PostgreSQL

GILT FÜR: Azure Cosmos DB for PostgreSQL (unterstützt von der Citus-Datenbankerweiterung auf PostgreSQL)

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_id eine gute Verteilungsspalte.

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.

Abbildung von Ereignis- und Gerätetabellen sowie Partitionen von Ereignissen

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_id um 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.
  • 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.