Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
VAN TOEPASSING OP:
Azure Cosmos DB for PostgreSQL (mogelijk gemaakt door de Citus-database-extensie naar PostgreSQL)
Gemeenschappelijke filter als shard-sleutel
Volg deze richtlijnen om de shard-sleutel voor een transactietoepassing 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 is
device_id
een goede distributiekolom.
- In een IOT-workload is
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.
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 is
device_id
die kolom die de tabellen met gebeurtenissen en apparaten samenvoegt. - 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 verwijderen van oude gegevens verloopt ook snel met behulp van de opdrachten DROP en 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 gebeurtenissen-tabel een
detail
-kolom, die JSONB is.
- In ons voorbeeld heeft de gebeurtenissen-tabel een
- 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.