Delen via


Transactionele apps met hoge doorvoer modelleren in Azure Cosmos DB for PostgreSQL

VAN TOEPASSING OP: Azure Cosmos DB for PostgreSQL (mogelijk gemaakt door de Citus-database-extensie naar PostgreSQL)

Algemeen filter als shardsleutel

Volg deze richtlijnen om de shardsleutel voor een transactionele toepassing met hoge doorvoer te kiezen:

  • Kies een kolom die wordt gebruikt voor puntzoekacties en is aanwezig in de meeste bewerkingen voor maken, lezen, bijwerken en verwijderen.
  • Kies een kolom die een natuurlijke dimensie is in de gegevens of een centraal onderdeel van de toepassing. Bijvoorbeeld:
    • In een IOT-workload device_id is dit een goede distributiekolom.

De keuze van een goede shardsleutel helpt bij het optimaliseren van netwerkhops, terwijl er gebruik wordt gemaakt van geheugen en rekenkracht om latentie van milliseconden te bereiken.

Optimaal gegevensmodel voor apps met hoge doorvoer

Hieronder ziet u een voorbeeld van een voorbeeldgegevensmodel voor een IoT-app waarmee telemetrie (tijdreeksgegevens) van apparaten worden vastgelegd. Er zijn twee tabellen voor het vastleggen van telemetrie: devices en events. Er kunnen andere tabellen zijn, maar deze worden niet behandeld in dit voorbeeld.

Diagram van tabellen met gebeurtenissen en apparaten en partities van gebeurtenissen.

Houd bij het bouwen van een app met hoge doorvoer rekening met enkele optimalisaties.

  • Distribueer grote tabellen in een gemeenschappelijke kolom die het centrale deel van de app is en de kolom waarop uw app voornamelijk query's uitvoert. In het bovenstaande voorbeeld van een IOT-app device_id bevindt zich die kolom en worden de tabellen met gebeurtenissen en apparaten samen gevonden.
  • De rest van de kleine tabellen kan verwijzen naar tabellen.
  • Als IOT-apps een tijddimensie hebben, moet u uw gedistribueerde tabellen partitioneren op basis van tijd. U kunt systeemeigen azure Cosmos DB for PostgreSQL-tijdreeksmogelijkheden gebruiken om partities te maken en te onderhouden.
    • Partitionering helpt bij het efficiĆ«nt filteren van gegevens voor query's met tijdfilters.
    • Het verlopen van oude gegevens verloopt ook snel met behulp van de opdracht DROP versus DELETE.
    • De tabel gebeurtenissen in ons voorbeeld wordt gepartitioneerd op maand.
  • Gebruik het JSONB-gegevenstype om semi-gestructureerde gegevens op te slaan. Telemetriegegevens van apparaten zijn doorgaans niet gestructureerd, elk apparaat heeft zijn eigen metrische gegevens.
    • In ons voorbeeld heeft de tabel Gebeurtenissen een detail kolom, JSONB.
  • Als uw IoT-app georuimtelijke functies vereist, kunt u de PostGIS-extensie gebruiken, die azure Cosmos DB for PostgreSQL systeemeigen ondersteunt.

Volgende stappen

Nu zijn we klaar met het verkennen van gegevensmodellering voor schaalbare apps. De volgende stap is het verbinden en opvragen van de database met de programmeertaal van uw keuze.