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.
- I en IOT-arbetsbelastning
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.
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.
- I vårt exempel har händelsetabellen en
- 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.