Condividi tramite


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.

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.

Diagramma di tabelle di eventi e dispositivi e partizioni di eventi.

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.
  • 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.