Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Azure Cosmos DB per PostgreSQL non è più supportato per i nuovi progetti. Non usare questo servizio per i nuovi progetti. Usare invece uno dei due servizi seguenti:
Usare Azure Cosmos DB per NoSQL per una soluzione di database distribuita progettata per scenari su alta scala con un accordo sul livello di servizio (SLA) di disponibilità del 99.999%, scalabilità automatica istantanea e failover automatico in più regioni.
Usare la funzionalità Cluster elastici di Database di Azure per PostgreSQL per PostgreSQL partizionato usando l'estensione Citus open source.
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 ad alta capacità
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 ad alto throughput, è importante considerare 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.