Share via


Modellera transaktionsappar med högt dataflöde i Azure Cosmos DB for PostgreSQL

GÄLLER FÖR: Azure Cosmos DB for PostgreSQL (drivs av Citus-databastillägget till PostgreSQL)

Vanligt filter som shardnyckel

Följ dessa riktlinjer om du vill välja shardnyckeln för ett transaktionellt program med högt dataflöde:

  • Välj en kolumn som används för punktsökningar och som finns i de flesta åtgärder för att skapa, läsa, uppdatera och ta bort.
  • Välj en kolumn som är en naturlig dimension i data, eller en central del av programmet. Exempel:
    • I en IOT-arbetsbelastning device_id är en bra distributionskolumn.

Valet av en bra shardnyckel hjälper till att optimera nätverkshopp, samtidigt som du drar nytta av minne och beräkning för att uppnå svarstid på millisekunder.

Optimal datamodell för appar med högt dataflöde

Nedan visas ett exempel på en exempeldatamodell för en IoT-app som samlar in telemetri (tidsseriedata) från enheter. Det finns två tabeller för att samla in telemetri: devices och events. Det kan finnas andra tabeller, men de beskrivs inte i det här exemplet.

Diagram över händelser och enhetstabeller och partitioner av händelser.

När du skapar en app med högt dataflöde bör du ha lite optimering i åtanke.

  • Distribuera stora tabeller i en gemensam kolumn som är en central del av appen och den kolumn som appen främst frågar efter. I exemplet ovan för en IOT-app device_id är den kolumnen, och den samplacerar tabellerna händelser och enheter.
  • Resten av de små tabellerna kan vara referenstabeller.
  • Eftersom IOT-appar har en tidsdimension kan du partitionera dina distribuerade tabeller baserat på tid. Du kan använda inbyggda tidsseriefunktioner i Azure Cosmos DB for PostgreSQL för att skapa och underhålla partitioner.
    • Partitionering hjälper till att effektivt filtrera data för frågor med tidsfilter.
    • Det går också snabbt att förfalla gamla data med hjälp av kommandot DROP kontra DELETE.
    • Händelsetabellen i vårt exempel partitioneras efter månad.
  • Använd JSONB-datatypen för att lagra halvstrukturerade data. Enhetens telemetridata är vanligtvis inte strukturerade, varje enhet har sina egna mått.
    • I vårt exempel har händelsetabellen en detail kolumn, som är JSONB.
  • Om din IoT-app kräver geospatiala funktioner kan du använda PostGIS-tillägget, som Azure Cosmos DB for PostgreSQL stöder internt.

Nästa steg

Nu har vi utforskat datamodellering för skalbara appar. Nästa steg är att ansluta och fråga databasen med valfritt programmeringsspråk.