0Pricing
Cloud & IT Cert Prep · Lezione

Azure Cosmos DB: NoSQL globale

Esplori l'architettura multimodello e multiregione di Cosmos DB, comprenda le chiavi di partizione e scelga il livello di coerenza più adatto alle esigenze della Sua applicazione.

Azure Cosmos DB: NoSQL globale è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Che cos'è Azure Cosmos DB?

Azure Cosmos DB è il servizio di database NoSQL distribuito globalmente e multi-modello di Microsoft. È progettato per offrire una latenza di lettura e scrittura di pochi millisecondi a qualsiasi livello di scalabilità e in qualsiasi parte del mondo. A differenza dei database tradizionali, vincolati a una singola area, Cosmos DB può replicare in modo trasparente i dati contemporaneamente in decine di aree di Azure.

Supporto per API multi-modello

Cosmos DB supporta diverse API di database tramite un singolo servizio. Potete usare la NoSQL API nativa (documenti JSON), la MongoDB API per le app basate sui driver MongoDB, la Apache Cassandra API per i carichi di lavoro a colonne larghe, la Gremlin API per i dati a grafo e la Table API per i dati chiave-valore. Ogni API espone il motore sottostante di Cosmos DB tramite un'interfaccia familiare.

Account, database e container

La gerarchia delle risorse di Cosmos DB è composta da tre livelli. Un account è la risorsa di livello superiore che definisce l'elenco delle aree di replica e il livello di coerenza. All'interno di un account create i database come spazi dei nomi logici. All'interno di ogni database create i container: l'unità che contiene gli elementi (documenti) e per la quale viene effettuato il provisioning del throughput.

# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
  --name mycosmosaccount \
  --resource-group myRG \
  --kind GlobalDocumentDB \
  --locations regionName=eastus failoverPriority=0 isZoneRedundant=true

# Create a database
az cosmosdb sql database create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --name myDatabase

Chiavi di partizione: la base della scalabilità

Una chiave di partizione è una proprietà presente in ogni elemento che Cosmos DB usa per distribuire i dati tra le partizioni fisiche. Scegliere la chiave di partizione corretta è fondamentale: dovrebbe avere un'elevata cardinalità (molti valori distinti), distribuire uniformemente il traffico di scrittura e comparire nella maggior parte delle query. Una scelta errata della chiave di partizione porta a partizioni sovraccariche che limitano il throughput e riducono le prestazioni.

// Example container with /userId as partition key
// Items in the container:
{
  'id': 'order-001',
  'userId': 'user-42',
  'product': 'Widget',
  'total': 29.99
}
// userId distributes orders across partitions

Throughput: modello RU/s

Cosmos DB addebita il throughput in Request Units al secondo (RU/s). Una RU corrisponde approssimativamente al costo della lettura tramite ID di un documento da 1 KB. Le operazioni di scrittura, le query e le eliminazioni consumano più RU in base alle dimensioni dell'elemento e alla complessità degli indici. Potete effettuare il provisioning delle RU/s a livello di container oppure condividere un pool tra tutti i container di un database, e passare alla modalità autoscale per consentire a Cosmos DB di ridimensionare automaticamente il throughput.

# Create a container with 400 RU/s
az cosmosdb sql container create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name orders \
  --partition-key-path '/userId' \
  --throughput 400

Distribuzione globale

La funzionalità più potente di Cosmos DB è la capacità di replicare i dati a livello globale con pochi clic. Aggiungete aree all'account e Cosmos DB sincronizza automaticamente tutte le scritture in ogni area. In una configurazione multi-write (multi-master), ogni area può gestire contemporaneamente sia le letture sia le scritture, riducendo al minimo la latenza per gli utenti geograficamente distribuiti.

# Add a second region to the Cosmos DB account
az cosmosdb update \
  --name mycosmosaccount \
  --resource-group myRG \
  --locations regionName=eastus failoverPriority=0 \
                regionName=westeurope failoverPriority=1

Cinque livelli di coerenza

Cosmos DB offre cinque livelli di coerenza regolabili, disposti da quello più forte a quello più debole: Strong (letture linearizzabili, latenza maggiore), Bounded Staleness (le letture sono in ritardo rispetto alle scritture entro una finestra limitata), Session (impostazione predefinita: letture coerenti per le proprie scritture all'interno di una sessione), Consistent Prefix (le letture non visualizzano mai scritture fuori ordine) ed Eventual (letture più rapide, garanzie più deboli). Scegliete in base alla tolleranza dell'applicazione per i dati obsoleti.

Indicizzazione automatica

Per impostazione predefinita, Cosmos DB indicizza automaticamente ogni proprietà di ogni elemento inserito, senza richiedere la definizione preventiva di uno schema. Questo consente query ad hoc flessibili senza manutenzione degli indici. Potete personalizzare i criteri di indicizzazione per escludere i percorsi che non vengono mai interrogati, riducendo così i costi di archiviazione, oppure aggiungere indici compositi per le query ORDER BY su più proprietà.

// Custom indexing policy example
{
  'indexingMode': 'consistent',
  'includedPaths': [{ 'path': '/*' }],
  'excludedPaths': [
    { 'path': '/largeTextBlob/?' },
    { 'path': '/_etag/?' }
  ]
}

Change feed per app basate sugli eventi

Il change feed è un log ordinato di tutte le operazioni di creazione e aggiornamento eseguite su un container Cosmos DB. Le applicazioni si sottoscrivono al change feed per attivare l'elaborazione a valle, ad esempio aggiornando un indice di ricerca, inviando notifiche o scrivendo in una vista materializzata. Il change feed è alla base dei pattern basati sugli eventi e CQRS nelle architetture Cosmos DB.

Time-to-Live (TTL) per i dati in scadenza

Cosmos DB supporta Time-to-Live (TTL), una proprietà che potete impostare su un container o su singoli elementi per eliminarli automaticamente dopo un numero di secondi specificato. È ideale per i dati di sessione, le voci della cache, i log di controllo con periodi di conservazione normativi o qualsiasi dato con una scadenza nota. Le eliminazioni TTL vengono eseguite come attività in background e non consumano le RU/s di cui è stato effettuato il provisioning.

// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name sessions \
  --ttl 3600

Prezzi e piano serverless

Cosmos DB offre due modalità di fatturazione. Il throughput con provisioning viene fatturato per RU/s-ora indipendentemente dall'utilizzo effettivo ed è adatto a carichi di lavoro stabili e prevedibili. La modalità serverless viene fatturata in base alle RU consumate e ai GB archiviati, senza costi minimi, ed è quindi conveniente per sviluppo, prototipazione e picchi di traffico. Cosmos DB serverless è attualmente limitato a una singola area.

Verifica rapida

Verifichi la Sua comprensione dei concetti di Microsoft Azure Fundamentals (AZ-900) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: Cosmos DB è un servizio NoSQL multimodello distribuito a livello globale, le chiavi di partizione determinano il modo in cui i dati vengono distribuiti e devono essere scelte con attenzione e cinque livelli di coerenza consentono di bilanciare la latenza e l'aggiornamento dei dati. Ora esamineremo i servizi gestiti di Azure per i motori di database open source.

Domande Frequenti

La lezione «Azure Cosmos DB: NoSQL globale» è gratuita?

Sì — il testo completo di «Azure Cosmos DB: NoSQL globale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Azure Cosmos DB: NoSQL globale»?

Esplori l'architettura multimodello e multiregione di Cosmos DB, comprenda le chiavi di partizione e scelga il livello di coerenza più adatto alle esigenze della Sua applicazione. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Azure Cosmos DB: NoSQL globale»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Azure SQL Database
  2. Azure Cosmos DB: NoSQL globale
  3. Database Azure per motori open source
  4. Migrazione dei database in Azure
← Torna a Cloud & IT Cert Prep