Vai al contenuto

Utilizzare Cosmos DB su larga scala con documenti di grandi dimensioni: una guida

Scopri come utilizzare Cosmos DB di Microsoft per gestire documenti di grandi dimensioni su larga scala, ottimizzando le prestazioni e riducendo i costi.

Il mondo dell’informatica è in continua evoluzione e le esigenze delle aziende cambiano di pari passo. Una delle sfide più comuni è la gestione di grandi quantità di dati, spesso rappresentati da documenti di grandi dimensioni. In questo contesto, Microsoft Cosmos DB si rivela uno strumento fondamentale, capace di gestire documenti di grandi dimensioni su larga scala. Ma come si può utilizzare al meglio Cosmos DB in questi scenari? E quali sono le strategie per ottimizzare le prestazioni e ridurre i costi?

Per rispondere a queste domande, è utile analizzare un caso di studio concreto. Immaginiamo un ecosistema di sistemi client che generano dati. Questi dati vengono inseriti in Cosmos DB attraverso un processo batch. Inizialmente, tutti i documenti vengono inseriti in un unico contenitore, chiamato Data. Tuttavia, con l’aumento delle dimensioni del contenitore Data, le prestazioni delle query e i costi in termini di unità di richiesta (RU/s) diventano proibitivi. Per risolvere questo problema, viene introdotto un contenitore Index, che funge da indice per il contenitore Data.

Questa soluzione, tuttavia, presenta alcune sfide. Per leggere un singolo documento, sono necessarie almeno due operazioni su Cosmos DB. Inoltre, il contenitore Index duplica i dati presenti nel contenitore Data, aumentando i costi. Infine, l’architettura risulta poco evolutiva, limitando la capacità di adattarsi a future esigenze.

Per superare queste sfide, è possibile adottare una serie di strategie che sfruttano al meglio le funzionalità di Cosmos DB. Ecco alcune raccomandazioni:

  • Abilitare l’autoscaling dinamico: questa funzionalità permette alle partizioni di scalare in modo indipendente, migliorando l’efficienza dei costi per carichi di lavoro su larga scala con molteplici partizioni.
  • Smussare il processo di inserimento/aggiornamento/cancellazione dei dati: l’uso di Cosmos DB influisce sui costi. Ad esempio, un processo batch che esegue operazioni su entrambi i contenitori può aumentare il costo delle RU tra il 45% e il 55%. Smussando il processo batch, si può mitigare questo aumento dei costi.
  • Abilitare la cache integrata di Cosmos DB: questa funzionalità elimina il costo in RU per una query ripetuta. Inoltre, non richiede amministrazione o gestione.
  • Abilitare le chiavi di partizione gerarchiche: questa funzionalità permette di suddividere i dati fino a tre livelli di profondità, migliorando l’efficienza delle query per documenti di grandi dimensioni.
  • Introdurre un contenitore per tipo di documento: questa strategia fornisce una maggiore chiarezza sugli indici compositi che possono essere applicati per tipo di documento, isolando i tipi di documento ad alto throughput che potrebbero non beneficiare abbastanza delle chiavi di partizione gerarchiche.
  • Ritirare il contenitore Index: adottando la corretta strategia di contenimento, è possibile ritirare il contenitore Index, eliminando i costi extra e rimuovendo i dati duplicati.
  • Implementare Cosmos DB Analytical Store: si tratta di un negozio di colonne completamente isolato, ottimizzato per le query analitiche. Le query su Analytical Store non comportano costi in RU/s.
  • Replicare i dati utilizzando il feed di modifiche di Cosmos DB: se è necessario replicare i dati da Cosmos DB a un altro database, come Azure SQL, è possibile utilizzare il feed di modifiche di Cosmos DB con Azure Functions.
  • Utilizzare Premium Blob Storage: per i documenti di dimensioni superiori a 2MB, è consigliato utilizzare Azure Blob Storage. Premium Blob Storage permette di accedere a questi documenti più velocemente.

Queste strategie permettono di utilizzare al meglio Cosmos DB per gestire documenti di grandi dimensioni su larga scala. Tuttavia, è importante ricordare che l’architettura deve rimanere evolutiva. Per raggiungere questo obiettivo, è fondamentale condurre revisioni regolari dell’architettura rispetto alle migliori pratiche attuali, alle capacità del prodotto e alle esigenze dell’azienda, e rifattorizzare o ristrutturare l’architettura dove necessario.