Modellare app transazionali a velocità effettiva elevata in Azure Cosmos DB for PostgreSQL
SI APPLICA A: Azure Cosmos DB for PostgreSQL (con tecnologia basata su estensione di database Citus per PostgreSQL)
Filtro comune come chiave di partizione
Per selezionare la chiave di partizione per un'applicazione transazionale a velocità effettiva elevata, seguire queste linee guida:
- Scegliere una colonna usata per le ricerche di punti e presente nella maggior parte delle operazioni di creazione, lettura, aggiornamento ed eliminazione.
- Scegliere una colonna che rappresenti una dimensione naturale nei dati o una parte centrale dell'applicazione. Ad esempio:
- In un carico di lavoro IOT
device_id
è una colonna di distribuzione valida.
- In un carico di lavoro IOT
La scelta di una chiave di partizione ottimale consente di ottimizzare gli hop di rete, sfruttando al contempo la memoria e l'ambiente di calcolo per ottenere una latenza di un millisecondo.
Modello di dati ottimale per app a velocità effettiva elevata
Di seguito è riportato un esempio di modello di dati per un'app IoT che acquisisce i dati di telemetria (dati di serie temporali) dai dispositivi. Sono disponibili due tabelle per l'acquisizione dei dati di telemetria: devices
e events
. Potrebbero esserci altre tabelle, ma non sono contemplate in questo esempio.
Quando si crea un'app a velocità effettiva elevata, tenere presente alcune ottimizzazioni.
- Distribuire le tabelle di grandi dimensioni in una colonna comune che costituisce la parte centrale dell'app e la colonna su cui l'app esegue principalmente le query. Nell'esempio precedente di un'app IOT,
device_id
è tale colonna e condivide il percorso delle tabelle degli eventi e dei dispositivi. - Le altre tabelle di piccole dimensioni possono essere tabelle di riferimento.
- Poiché le app IOT hanno una dimensione temporale, partizionare le tabelle distribuite in base al tempo. È possibile usare le funzionalità native di Azure Cosmos DB for PostgreSQL per le serie temporali per creare e gestire le partizioni.
- Il partizionamento consente di filtrare in modo efficiente i dati per le query con filtri temporali.
- Anche la scadenza dei dati obsoleti è rapida, usando il comando DROP anziché DELETE.
- La tabella eventi nell'esempio viene partizionata per mese.
- Usare il tipo di dati JSONB per archiviare dati semistrutturati. I dati di telemetria del dispositivo in genere non sono strutturati, ogni dispositivo ha metriche proprie.
- In questo esempio la tabella eventi ha una colonna
detail
, ovvero JSONB.
- In questo esempio la tabella eventi ha una colonna
- Se l'app IoT richiede funzionalità geospaziali, è possibile usare l'estensione PostGIS, supportata in modo nativo da Azure Cosmos DB for PostgreSQL.
Passaggi successivi
È stata completata l'esplorazione della modellazione dei dati per le app scalabili. Il passaggio successivo consiste nel connettere ed eseguire query sul database con il linguaggio di programmazione preferito.