Azure Cosmos DB: un database NoSQL cloud su scala globale
Scopri come il database multi-modello completamente gestito di Microsoft offre prestazioni a bassa latenza, scalabilità elastica e funzionalità in tempo reale per AI, IoT, e-commerce e altro ancora.
Man mano che le app scalano a livello globale, i database tradizionali spesso non bastano. Azure Cosmos DB, il database multi-modello distribuito globalmente di Microsoft, offre accesso a bassa latenza, modelli di coerenza multipli e scalabilità senza interruzioni tra le regioni.
Questa guida copre concetti chiave come container, item e API SQL: elementi essenziali per qualsiasi cloud engineer che voglia iniziare (e lavorare) con Azure e Cosmos DB. Otterrai una panoramica pratica della sua architettura e del motivo per cui è una scelta di riferimento per app cloud-native e mission-critical.
Che cos'è Azure Cosmos DB?
Azure Cosmos DB è un database NoSQL completamente gestito su Microsoft Azure, progettato per alta disponibilità, bassa latenza e scalabilità globale. Supporta più modelli di dati, tra cui documenti, key-value, grafo e colonna-famiglia, risultando flessibile per applicazioni diverse.
Il suo punto di forza è la distribuzione globale: con pochi clic, i dati possono essere replicati tra le regioni Azure per un accesso locale e veloce.
Gli sviluppatori possono anche scegliere tra vari modelli di coerenza per bilanciare prestazioni e accuratezza dei dati. Se sei nuovo nel mondo Azure, ti consiglio vivamente di leggere la seguente guida per principianti ad Azure.
Perché usare Azure Cosmos DB?
Azure Cosmos DB offre un set di funzionalità potente, pensato per creare applicazioni scalabili e ad alte prestazioni:
Immagine dell'autore. Perché usare Cosmos DB
Distribuzione globale con bassa latenza: replica automaticamente i dati tra le regioni Azure, garantendo un accesso rapido e locale agli utenti in tutto il mondo.
Livelli di coerenza multipli: scegli tra cinque modelli, Strong, Bounded Staleness, Session, Consistent Prefix ed Eventual, per bilanciare coerenza, disponibilità e prestazioni.
Supporto multi-modello: lavora con modelli di dati document (JSON), key-value, grafo e colonna-famiglia, rendendolo adatto a carichi di lavoro eterogenei.
Alta disponibilità con SLA: coperto da SLA per operazioni di lettura e scrittura, ideale per sistemi mission-critical.
Scalabilità elastica: scala automaticamente il throughput in base alla domanda senza downtime, mantenendo la reattività sotto carichi variabili.
Insieme, queste capacità rendono Cosmos DB una solida base per applicazioni cloud-native distribuite a livello globale che richiedono prestazioni in tempo reale e resilienza.
Casi d'uso di Azure Cosmos DB
Azure Cosmos DB è una scelta versatile per applicazioni in tempo reale e scalabili in molti settori. La sua architettura a bassa latenza e distribuita globalmente lo rende ideale per scenari che richiedono alta disponibilità e accesso ai dati rapido. Ecco alcuni casi d'uso chiave:
AI e machine learning: si integra con pipeline di AI in tempo reale e supporta la ricerca vettoriale, abilitando applicazioni intelligenti come motori di raccomandazione e ricerca semantica.
E-commerce e retail: alimenta esperienze di acquisto personalizzate catturando il comportamento degli utenti e servendo raccomandazioni all'istante. La distribuzione globale assicura accesso preciso e a bassa latenza ai dati di inventario tra regioni.
Gaming e social media: gestisce statistiche dei giocatori, chat e classifiche in tempo reale con prestazioni di lettura/scrittura rapide. La coerenza a livello di sessione garantisce esperienze fluide per utenti in tutto il mondo.
IoT e dati time-series: acquisisce ed elabora in modo efficiente grandi volumi di dati da sensori e telemetria. Ideale per manutenzione predittiva, rilevamento anomalie e monitoraggio in tempo reale.
Dall'alimentare negozi online all'abilitare app intelligenti guidate dall'AI, Cosmos DB offre velocità, scalabilità e flessibilità necessarie per soluzioni moderne cloud-native. Per capire meglio cosa puoi fare con Cosmos DB e Azure, dai un'occhiata a questa Guida alle offerte cloud di Microsoft.
Funzionalità e capacità di Cosmos DB
In questa sezione esploreremo le funzionalità principali che permettono agli sviluppatori di creare applicazioni veloci, resilienti e intelligenti, incluse le strategie di modellazione dei dati.
Modellazione dei dati e indicizzazione
Azure Cosmos DB consente ai container di archiviare documenti JSON senza richiedere uno schema predefinito, semplificando l'adattamento e l'evoluzione del modello dati nel tempo.
L'indicizzazione in Cosmos DB è automatica per impostazione predefinita, con ogni campo indicizzato per supportare query rapide subito. Tuttavia, ciò può aumentare il consumo di Request Unit (RU), soprattutto in carichi con molte scritture. Per ottimizzare, gli sviluppatori possono definire policy di indicizzazione personalizzate. Queste policy permettono di disattivare l'indicizzazione automatica dove non necessaria, specificare i percorsi inclusi per i campi da indicizzare ed escludere i campi non rilevanti.
Cosmos DB include anche la funzionalità Change Feed, che cattura inserimenti e aggiornamenti in tempo reale, ideale per costruire sistemi event-driven, attivare workflow o eseguire streaming dei dati a valle. Un'altra funzione utile è il Time-to-Live (TTL), che consente l'eliminazione automatica dei documenti dopo un periodo specificato.
Partizionamento e ottimizzazione delle prestazioni
Per carichi con molte scritture, le chiavi di partizione dovrebbero avere alta cardinalità e distribuzione uniforme, come ID utente, timestamp o aree geografiche, per evitare partizioni "calde" e throttling. Negli scenari con molte letture, spesso è più efficace raggruppare i dati correlati usando chiavi di partizione come gli ID cliente, abilitando accessi efficienti per query di intervallo o puntuali. Un partizionamento errato può portare a distribuzione dei dati non uniforme e degrado delle prestazioni. Poiché ogni partizione logica è limitata a 20 GB, è importante progettare strategie di partizionamento che evitino il sovraccarico di una singola chiave.
Le prestazioni delle query possono essere ulteriormente migliorate progettando pattern di accesso che puntano a singole partizioni, più veloci ed efficienti in termini di risorse. Le query cross-partition, pur supportate, comportano in genere latenza più alta e maggior consumo di RU perché scandagliano più partizioni. Per ridurre i costi delle query, gli sviluppatori dovrebbero sfruttare strategie di indicizzazione (sto pensando agli indici compositi) e considerare meccanismi di caching per i dati consultati di frequente.
In termini di throughput, Cosmos DB consente di configurare le Request Unit a livello di container o di database. Questo modello di throughput regolabile aiuta a garantire che la tua app mantenga le prestazioni anche quando stai vivendo qualche condizione di picco del carico.
Modelli di coerenza e durabilità dei dati
Azure Cosmos DB offre cinque livelli di coerenza regolabili. È ben oltre le tipiche opzioni di coerenza strong o eventual presenti nella maggior parte dei database non relazionali.
Al livello più debole, la coerenza eventual fornisce l'opzione più veloce e disponibile ma può restituire dati obsoleti o fuori ordine mentre le repliche si sincronizzano gradualmente. Un po' più forte è il prefisso coerente, che assicura che le letture riflettano l'ordine delle scritture, anche se non necessariamente le più recenti: è adatto quando l'ordine delle operazioni conta più della freschezza.
L'impostazione predefinita e più pratica per molte applicazioni è la coerenza di sessione, che garantisce che un client legga sempre le proprie scritture all'interno di una sessione. La bounded staleness fa un passo in più consentendo un ritardo controllato tra scritture e letture, definito da un intervallo di tempo (T) o da un numero di versioni (K). Ad esempio, in una singola regione, il ritardo può essere limitato a 5 secondi o 10 versioni, mentre in una configurazione multi-regione può arrivare a 5 minuti o 100.000 versioni.
All'estremo più forte c'è la coerenza strong, che assicura che tutte le letture riflettano l'ultima scrittura confermata su tutte le repliche. Questo livello offre le garanzie più rigorose, evitando letture stantie, sporche o fantasma, e assomiglia da vicino al comportamento dei sistemi tradizionali conformi ad ACID.
Scritture multi-regione e disponibilità globale
Una delle funzionalità di spicco di Azure Cosmos DB è il supporto alle scritture multi-regione tramite replica active-active (multi-master). Ciò consente alle applicazioni di eseguire operazioni di scrittura in più regioni simultaneamente, riducendo significativamente la latenza per gli utenti in tutto il mondo.
Cosmos DB include anche la replica globale automatica, garantendo che i dati siano sincronizzati tra le regioni Azure. In caso di interruzione regionale, il sistema attiva automaticamente il failover verso la prossima regione disponibile.
Sebbene Cosmos DB gestisca automaticamente la meccanica dello sharding e della distribuzione dei dati, gli sviluppatori devono comunque scegliere una chiave di partizione adatta per supportare una distribuzione uniforme e uno scaling orizzontale efficace. Questa decisione è particolarmente importante per dataset di grandi dimensioni che possono superare il limite di 20 GB per partizione logica. Pianificare il partizionamento in anticipo aiuta a evitare colli di bottiglia e problemi di prestazioni con la crescita dell'applicazione.
Prezzi e gestione dei costi di Cosmos DB
La tariffazione di Azure Cosmos DB si basa sulle Request Unit (RU), che riflettono le risorse utilizzate per letture, scritture e query. Una semplice lettura puntuale costa in genere 1 RU.
Modelli di prezzo
Provisioned throughput: prenota RU per carichi prevedibili, con fatturazione in base a throughput e storage.
Serverless: modello pay-per-use ideale per carichi sporadici o a basso traffico.
Ottimizzazione dei costi
Usa il Cosmos DB Profiler per monitorare e ottimizzare l'efficienza delle query.
Ottimizza indicizzazione e partizionamento per ridurre il consumo di RU.
Tieni traccia delle spese con Azure Cost Management e imposta avvisi di utilizzo.
Scegliere il modello giusto e ottimizzare il design può ridurre sensibilmente i costi.
Inizia con Azure Cosmos DB
Prima di lavorare con Azure Cosmos DB, devi configurare un account, scegliere la configurazione e creare il tuo primo database e container. Questa guida passo passo ti accompagnerà nel processo usando l'Azure Portal.
Passo 1: Iscriviti a un account Azure e accedi a Cosmos DB tramite l'Azure Portal
Inizia accedendo all'Azure Portal. Nella barra di ricerca globale in alto, digita “Azure Cosmos DB” e selezionalo dai risultati. Dalla schermata di Cosmos DB, fai clic su “Create” per iniziare a configurare la nuova istanza.
Screenshot della pagina principale di Azure
Screenshot della pagina principale di Azure Cosmos DB
Passo 2: Scegli la tua API e configura le impostazioni di base
Seleziona Azure Cosmos DB for NoSQL come modello di API (Core SQL API).
Screenshot di Azure Cosmos DB. Creazione di un'istanza
Poi, nel pannello Basics, inserisci i dettagli di configurazione, inclusi la tua sottoscrizione Azure, un resource group (nuovo o esistente), un nome account univoco a livello globale e una regione Azure preferita. Le Availability Zones possono rimanere disabilitate. Cosmos DB offre due modalità di throughput — provisioned throughput per carichi prevedibili e serverless per scenari variabili o a basso traffico. Scegli la modalità più adatta alle esigenze della tua applicazione durante il setup. Queste opzioni possono essere regolate anche in seguito con l'evolversi del carico.
Screenshot di Azure Cosmos DB. Compilazione dei dettagli
Una volta completato, fai clic su Review + Create, quindi conferma cliccando su Create per avviare il deployment.
Screenshot di Azure Cosmos DB. Validazione della nostra istanza
Al termine del deployment, seleziona Go to resource per accedere al nuovo account Cosmos DB.
Screenshot di Azure Cosmos DB. Informazioni sulla risorsa appena creata
Passo 3: Crea un database e un container
Vai su Data Explorer dal menu dell'account Cosmos DB.
Screenshot di Azure Cosmos DB. Esplorazione dei dati
Fai clic su NewContainer per aprire la finestra di configurazione.
Screenshot di Azure Cosmos DB. Creazione di un nuovo container
Definisci un nuovo nome per il database e per il container e, cosa importante, specifica una chiave di partizione per garantire distribuzione uniforme dei dati e prestazioni ottimali. Fai clic su OK per creare database e container.
Screenshot di Azure Cosmos DB. Compilazione delle caratteristiche del nostro container.
Una volta creati, li vedrai entrambi elencati nella gerarchia del Data Explorer.
Screenshot di Azure Cosmos DB. Verifica della gerarchia dei dati.
Passo 4: Usa Data Explorer per interrogare e gestire gli oggetti del database
All'interno del container appena creato (employees), espandi la vista ad albero e seleziona Items.
Screenshot di Azure Cosmos DB. Verifica del container
Fai clic su New Item.
Screenshot di Azure Cosmos DB. Creazione di un nuovo item
Inserisci il seguente JSON di esempio, quindi fai clic su Save:
{"id":"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb","name":{"first":"Josep","last":"Ferrer"},"email":"<[email protected]>","department":{"name":"Data Science"}}Offerto da
Per testare una query, seleziona New SQL Query nel menu e inserisci la seguente query NoSQL, che esegue una ricerca case-insensitive per gli employee nel reparto Logistics.
Screenshot di Azure Cosmos DB. Verifica del container.
SELECTVALUE {
"name": CONCAT(e.name.last," ", e.name.first),"department": e.department.name,"emailAddresses": [
e.email
]
}
FROM
employees e
WHERE
STRINGEQUALS(e.department.name,"logistics",true)Offerto da
Ora facciamo clic per eseguire la query. Restituisce un output strutturato:
Alta disponibilità: la replica multi-regione integrata garantisce affidabilità e uptime globali.
Flessibilità dello schema: supporta JSON senza schema con indicizzazione automatica per query rapide.
Integrazione con l'AI: supporto nativo per ricerca vettoriale e scenari di AI in tempo reale.
Ampio supporto alle API: compatibile con API SQL, MongoDB, Cassandra, Gremlin e Table.
Servizio completamente gestito: gestisce scaling, patching e infrastruttura, riducendo l'overhead operativo.
Svantaggi
Funzionalità SQL limitate: mancano funzionalità complete di JOIN e GROUP BY tipiche dei database relazionali.
Costo su larga scala: può diventare costoso con carichi ad alto throughput se non ottimizzato.
Conclusione
Azure Cosmos DB è un database NoSQL robusto e distribuito globalmente, pensato per applicazioni moderne cloud-native. Con il suo supporto multi-modello, la replica active-active e i livelli di coerenza regolabili, eccelle in scenari che richiedono alta disponibilità, reattività in tempo reale e scalabilità elastica, come sistemi basati su AI, piattaforme e-commerce e soluzioni IoT.
La sua infrastruttura completamente gestita, la modellazione dati flessibile e il ricco ecosistema di API lo rendono una scelta solida per sviluppatori e architetti. Detto ciò, i team dovrebbero considerare con attenzione le potenziali limitazioni, come i gap nelle funzionalità SQL e i costi su larga scala, quando pianificano carichi di lavoro in produzione.
Se vuoi continuare a migliorare le tue competenze, ecco alcune altre buone risorse:
Josep è un Data Scientist freelance specializzato in progetti europei, con competenze in archiviazione e processamento dei dati, analisi avanzate e data storytelling efficace.
Come docente, insegna Big Data nel corso di laurea magistrale dell’Università di Navarra e condivide le sue idee tramite articoli su piattaforme come Medium, KDNuggets e DataCamp. Josep scrive anche di Data e Tech nella sua newsletter Databites (databites.tech).
Ha conseguito una laurea in Ingegneria Fisica presso la Università Politecnica della Catalogna e un master in Intelligent Interactive Systems presso la Università Pompeu Fabra.
FAQ
Che cos'è Azure Cosmos DB?⌄
Azure Cosmos DB è un servizio di database NoSQL completamente gestito e distribuito globalmente da Microsoft che supporta più modelli di dati ed è ottimizzato per applicazioni a bassa latenza e alta disponibilità.
Perché gli sviluppatori dovrebbero usare Cosmos DB?⌄
Gli sviluppatori scelgono Cosmos DB per la replica multi-regione, la scalabilità elastica, cinque modelli di coerenza regolabili e il supporto per più API e modelli di dati, rendendolo ideale per applicazioni moderne e cloud-native.
Quali sono i casi d'uso più comuni per Cosmos DB?⌄
Cosmos DB è usato in AI e machine learning (ad es., ricerca vettoriale), e-commerce e retail (personalizzazione in tempo reale), gaming e social media (interazioni a bassa latenza) e IoT (telemetria e analytics in tempo reale).
Come gestisce Cosmos DB scalabilità e prestazioni?⌄
Cosmos DB utilizza container partizionati, throughput regolabile tramite Request Unit (RU) e distribuzione intelligente dei dati per scalare orizzontalmente e supportare query ad alte prestazioni.
Quali sono gli svantaggi principali di Cosmos DB?⌄
Pur essendo potente, Cosmos DB può risultare costoso con throughput elevato se non ottimizzato e non offre il pieno supporto SQL per query complesse come join multi-tabella o operazioni avanzate di GROUP BY.
Cosa succede ai miei dati in Azure Cosmos DB durante un guasto regionale?⌄
In caso di guasto regionale, il Recovery Point Objective (RPO) di Azure Cosmos DB — ovvero quanta parte dei dati potrebbe andare persa — è determinato dal modello di coerenza e dalla configurazione di deployment:
Strong consistency garantisce zero perdita di dati (RPO = 0).
Altri modelli di coerenza (come session, bounded staleness o eventual) possono prevedere minimi ritardi o gap di versione.
Questo ventaglio di opzioni ti permette di adattare il comportamento di Cosmos DB alle esigenze della tua app — che tu privilegi accuratezza, velocità o un equilibrio tra entrambe.
Come dovrei modellare dati gerarchici in Azure Cosmos DB?⌄
Per modellare dati gerarchici come strutture di cartelle o alberi di categorie, Cosmos DB consiglia di appiattire la struttura del documento. Usa campi come parentId per rappresentare le relazioni invece di documenti annidati o join complessi.
Questo design migliora efficienza delle query e scalabilità, semplificando la gestione e il recupero di dati correlati in ambienti distribuiti.
Quale modello di coerenza dovrei usare in una configurazione multi-regione di Cosmos DB?⌄
Azure Cosmos DB supporta tutti e cinque i modelli di coerenza in deployment multi-regione, dandoti flessibilità per bilanciare prestazioni e accuratezza dei dati.
La coerenza di sessione è spesso ideale — offre garanzie di read-your-own-write, bassa latenza e overhead minimo.
Per garanzie più rigide o più rilassate, puoi scegliere tra strong, bounded staleness, consistent prefix o eventual consistency.
Questa versatilità facilita l'allineamento di Cosmos DB alle esigenze specifiche delle tue applicazioni distribuite globalmente.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Man mano che le app scalano a livello globale, i database tradizionali spesso non bastano. Azure Cosmos DB, il database multi-modello distribuito globalmente di Microsoft, offre accesso a bassa latenza, modelli di coerenza multipli e scalabilità senza interruzioni tra le regioni.
Questa guida copre concetti chiave come container, item e API SQL: elementi essenziali per qualsiasi cloud engineer che voglia iniziare (e lavorare) con Azure e Cosmos DB. Otterrai una panoramica pratica della sua architettura e del motivo per cui è una scelta di riferimento per app cloud-native e mission-critical.
Che cos'è Azure Cosmos DB?
Azure Cosmos DB è un database NoSQL completamente gestito su Microsoft Azure, progettato per alta disponibilità, bassa latenza e scalabilità globale. Supporta più modelli di dati, tra cui documenti, key-value, grafo e colonna-famiglia, risultando flessibile per applicazioni diverse.
Il suo punto di forza è la distribuzione globale: con pochi clic, i dati possono essere replicati tra le regioni Azure per un accesso locale e veloce.
Gli sviluppatori possono anche scegliere tra vari modelli di coerenza per bilanciare prestazioni e accuratezza dei dati. Se sei nuovo nel mondo Azure, ti consiglio vivamente di leggere la seguente guida per principianti ad Azure.
Perché usare Azure Cosmos DB?
Azure Cosmos DB offre un set di funzionalità potente, pensato per creare applicazioni scalabili e ad alte prestazioni:
Immagine dell'autore. Perché usare Cosmos DB
Insieme, queste capacità rendono Cosmos DB una solida base per applicazioni cloud-native distribuite a livello globale che richiedono prestazioni in tempo reale e resilienza.
Casi d'uso di Azure Cosmos DB
Azure Cosmos DB è una scelta versatile per applicazioni in tempo reale e scalabili in molti settori. La sua architettura a bassa latenza e distribuita globalmente lo rende ideale per scenari che richiedono alta disponibilità e accesso ai dati rapido. Ecco alcuni casi d'uso chiave:
Dall'alimentare negozi online all'abilitare app intelligenti guidate dall'AI, Cosmos DB offre velocità, scalabilità e flessibilità necessarie per soluzioni moderne cloud-native. Per capire meglio cosa puoi fare con Cosmos DB e Azure, dai un'occhiata a questa Guida alle offerte cloud di Microsoft.
Funzionalità e capacità di Cosmos DB
In questa sezione esploreremo le funzionalità principali che permettono agli sviluppatori di creare applicazioni veloci, resilienti e intelligenti, incluse le strategie di modellazione dei dati.
Modellazione dei dati e indicizzazione
Azure Cosmos DB consente ai container di archiviare documenti JSON senza richiedere uno schema predefinito, semplificando l'adattamento e l'evoluzione del modello dati nel tempo.
L'indicizzazione in Cosmos DB è automatica per impostazione predefinita, con ogni campo indicizzato per supportare query rapide subito. Tuttavia, ciò può aumentare il consumo di Request Unit (RU), soprattutto in carichi con molte scritture. Per ottimizzare, gli sviluppatori possono definire policy di indicizzazione personalizzate. Queste policy permettono di disattivare l'indicizzazione automatica dove non necessaria, specificare i percorsi inclusi per i campi da indicizzare ed escludere i campi non rilevanti.
Cosmos DB include anche la funzionalità Change Feed, che cattura inserimenti e aggiornamenti in tempo reale, ideale per costruire sistemi event-driven, attivare workflow o eseguire streaming dei dati a valle. Un'altra funzione utile è il Time-to-Live (TTL), che consente l'eliminazione automatica dei documenti dopo un periodo specificato.
Partizionamento e ottimizzazione delle prestazioni
Per carichi con molte scritture, le chiavi di partizione dovrebbero avere alta cardinalità e distribuzione uniforme, come ID utente, timestamp o aree geografiche, per evitare partizioni "calde" e throttling. Negli scenari con molte letture, spesso è più efficace raggruppare i dati correlati usando chiavi di partizione come gli ID cliente, abilitando accessi efficienti per query di intervallo o puntuali. Un partizionamento errato può portare a distribuzione dei dati non uniforme e degrado delle prestazioni. Poiché ogni partizione logica è limitata a 20 GB, è importante progettare strategie di partizionamento che evitino il sovraccarico di una singola chiave.
Le prestazioni delle query possono essere ulteriormente migliorate progettando pattern di accesso che puntano a singole partizioni, più veloci ed efficienti in termini di risorse. Le query cross-partition, pur supportate, comportano in genere latenza più alta e maggior consumo di RU perché scandagliano più partizioni. Per ridurre i costi delle query, gli sviluppatori dovrebbero sfruttare strategie di indicizzazione (sto pensando agli indici compositi) e considerare meccanismi di caching per i dati consultati di frequente.
In termini di throughput, Cosmos DB consente di configurare le Request Unit a livello di container o di database. Questo modello di throughput regolabile aiuta a garantire che la tua app mantenga le prestazioni anche quando stai vivendo qualche condizione di picco del carico.
Modelli di coerenza e durabilità dei dati
Azure Cosmos DB offre cinque livelli di coerenza regolabili. È ben oltre le tipiche opzioni di coerenza strong o eventual presenti nella maggior parte dei database non relazionali.
Al livello più debole, la coerenza eventual fornisce l'opzione più veloce e disponibile ma può restituire dati obsoleti o fuori ordine mentre le repliche si sincronizzano gradualmente. Un po' più forte è il prefisso coerente, che assicura che le letture riflettano l'ordine delle scritture, anche se non necessariamente le più recenti: è adatto quando l'ordine delle operazioni conta più della freschezza.
L'impostazione predefinita e più pratica per molte applicazioni è la coerenza di sessione, che garantisce che un client legga sempre le proprie scritture all'interno di una sessione. La bounded staleness fa un passo in più consentendo un ritardo controllato tra scritture e letture, definito da un intervallo di tempo (T) o da un numero di versioni (K). Ad esempio, in una singola regione, il ritardo può essere limitato a 5 secondi o 10 versioni, mentre in una configurazione multi-regione può arrivare a 5 minuti o 100.000 versioni.
All'estremo più forte c'è la coerenza strong, che assicura che tutte le letture riflettano l'ultima scrittura confermata su tutte le repliche. Questo livello offre le garanzie più rigorose, evitando letture stantie, sporche o fantasma, e assomiglia da vicino al comportamento dei sistemi tradizionali conformi ad ACID.
Scritture multi-regione e disponibilità globale
Una delle funzionalità di spicco di Azure Cosmos DB è il supporto alle scritture multi-regione tramite replica active-active (multi-master). Ciò consente alle applicazioni di eseguire operazioni di scrittura in più regioni simultaneamente, riducendo significativamente la latenza per gli utenti in tutto il mondo.
Cosmos DB include anche la replica globale automatica, garantendo che i dati siano sincronizzati tra le regioni Azure. In caso di interruzione regionale, il sistema attiva automaticamente il failover verso la prossima regione disponibile.
Sebbene Cosmos DB gestisca automaticamente la meccanica dello sharding e della distribuzione dei dati, gli sviluppatori devono comunque scegliere una chiave di partizione adatta per supportare una distribuzione uniforme e uno scaling orizzontale efficace. Questa decisione è particolarmente importante per dataset di grandi dimensioni che possono superare il limite di 20 GB per partizione logica. Pianificare il partizionamento in anticipo aiuta a evitare colli di bottiglia e problemi di prestazioni con la crescita dell'applicazione.
Prezzi e gestione dei costi di Cosmos DB
La tariffazione di Azure Cosmos DB si basa sulle Request Unit (RU), che riflettono le risorse utilizzate per letture, scritture e query. Una semplice lettura puntuale costa in genere 1 RU.
Modelli di prezzo
Ottimizzazione dei costi
Inizia con Azure Cosmos DB
Prima di lavorare con Azure Cosmos DB, devi configurare un account, scegliere la configurazione e creare il tuo primo database e container. Questa guida passo passo ti accompagnerà nel processo usando l'Azure Portal.
Passo 1: Iscriviti a un account Azure e accedi a Cosmos DB tramite l'Azure Portal
Inizia accedendo all'Azure Portal. Nella barra di ricerca globale in alto, digita “Azure Cosmos DB” e selezionalo dai risultati. Dalla schermata di Cosmos DB, fai clic su “Create” per iniziare a configurare la nuova istanza.
Screenshot della pagina principale di Azure
Screenshot della pagina principale di Azure Cosmos DB
Passo 2: Scegli la tua API e configura le impostazioni di base
Seleziona Azure Cosmos DB for NoSQL come modello di API (Core SQL API).
Screenshot di Azure Cosmos DB. Creazione di un'istanza
Poi, nel pannello Basics, inserisci i dettagli di configurazione, inclusi la tua sottoscrizione Azure, un resource group (nuovo o esistente), un nome account univoco a livello globale e una regione Azure preferita. Le Availability Zones possono rimanere disabilitate. Cosmos DB offre due modalità di throughput — provisioned throughput per carichi prevedibili e serverless per scenari variabili o a basso traffico. Scegli la modalità più adatta alle esigenze della tua applicazione durante il setup. Queste opzioni possono essere regolate anche in seguito con l'evolversi del carico.
Screenshot di Azure Cosmos DB. Compilazione dei dettagli
Una volta completato, fai clic su Review + Create, quindi conferma cliccando su Create per avviare il deployment.
Screenshot di Azure Cosmos DB. Validazione della nostra istanza
Al termine del deployment, seleziona Go to resource per accedere al nuovo account Cosmos DB.
Screenshot di Azure Cosmos DB. Informazioni sulla risorsa appena creata
Passo 3: Crea un database e un container
Vai su Data Explorer dal menu dell'account Cosmos DB.
Screenshot di Azure Cosmos DB. Esplorazione dei dati
Fai clic su New Container per aprire la finestra di configurazione.
Screenshot di Azure Cosmos DB. Creazione di un nuovo container
Definisci un nuovo nome per il database e per il container e, cosa importante, specifica una chiave di partizione per garantire distribuzione uniforme dei dati e prestazioni ottimali. Fai clic su OK per creare database e container.
Screenshot di Azure Cosmos DB. Compilazione delle caratteristiche del nostro container.
Una volta creati, li vedrai entrambi elencati nella gerarchia del Data Explorer.
Screenshot di Azure Cosmos DB. Verifica della gerarchia dei dati.
Passo 4: Usa Data Explorer per interrogare e gestire gli oggetti del database
All'interno del container appena creato (employees), espandi la vista ad albero e seleziona Items.
Screenshot di Azure Cosmos DB. Verifica del container
Fai clic su New Item.
Screenshot di Azure Cosmos DB. Creazione di un nuovo item
Inserisci il seguente JSON di esempio, quindi fai clic su Save:
Per testare una query, seleziona New SQL Query nel menu e inserisci la seguente query NoSQL, che esegue una ricerca case-insensitive per gli employee nel reparto
Logistics.Screenshot di Azure Cosmos DB. Verifica del container.
Ora facciamo clic per eseguire la query. Restituisce un output strutturato:
E questo è tutto!
Vantaggi e svantaggi di Cosmos DB
Vantaggi
Svantaggi
Conclusione
Azure Cosmos DB è un database NoSQL robusto e distribuito globalmente, pensato per applicazioni moderne cloud-native. Con il suo supporto multi-modello, la replica active-active e i livelli di coerenza regolabili, eccelle in scenari che richiedono alta disponibilità, reattività in tempo reale e scalabilità elastica, come sistemi basati su AI, piattaforme e-commerce e soluzioni IoT.
La sua infrastruttura completamente gestita, la modellazione dati flessibile e il ricco ecosistema di API lo rendono una scelta solida per sviluppatori e architetti. Detto ciò, i team dovrebbero considerare con attenzione le potenziali limitazioni, come i gap nelle funzionalità SQL e i costi su larga scala, quando pianificano carichi di lavoro in produzione.
Se vuoi continuare a migliorare le tue competenze, ecco alcune altre buone risorse: