Che cos'è Azure Cosmos DB for NoSQL

Completato

Si inizierà con alcune definizioni e una rapida presentazione di Azure Cosmos DB for NoSQL. Questa panoramica dovrebbe aiutare a capire se Azure Cosmos DB è la soluzione adatta per il proprio lavoro.

Che cos'è un database NoSQL?

Gli sviluppatori richiedono nuovi tipi di database in grado di soddisfare le particolari sfide delle app moderne. I database NoSQL sono stati progettati per soddisfare esigenze quali:

  • Volumi elevati di dati.
  • Dati con una grande quantità di origini e moduli diversi.
  • Schemi di dati dinamici che archiviano tipi diversi di dati.
  • Uso di dati ad alta velocità e/o in tempo reale.

I database NoSQL vengono definiti dalle caratteristiche comuni che condividono anziché da una definizione formale specifica. Queste caratteristiche includono:

  • È un archivio dati non relazionale.
  • È progettato per l'aumento del numero di istanze.
  • Non prevede l'applicazione di uno schema specifico.

I database NoSQL non applicano in genere vincoli relazionali né blocchi sui dati, di conseguenza velocizzano le operazioni di scrittura. Sono spesso progettati anche per la scalabilità, tramite partizionamento orizzontale o semplice, che consente di garantire prestazioni elevate indipendentemente dalle dimensioni.

Anche se esistono molti modelli di dati NoSQL, quando si modellano i dati in un database NoSQL in genere si usano quattro grandi famiglie di modelli di dati:

Diagramma che illustra vari modelli NoSQL, tra cui: un archivio chiave-valore, documenti, grafi e famiglia di colonne.

Più avanti ci si concentrerà sul modello di dati supportato da Azure Cosmos DB for NoSQL, ovvero il modello di dati del documento.

Perché usare un database NoSQL con il modello di dati del documento?

Il modello di dati del documento suddivide i dati in singole entità documento. Un documento può essere qualsiasi tipo di dati strutturati, ma viene comunemente usato JSON come formato dati. Azure Cosmos DB for NoSQL supporta JSON in modo nativo.

Illustrazione di un modello di dati del documento gerarchico che include le entità padre, le entità figlio e le linee che le connettono.

Un documento è un'entità atomica e può avere un proprio modulo dati, indipendentemente da ciò che è archiviato in altri documenti nello stesso database. Grazie a questa flessibilità, non è necessario uno schema predefinito che semplifichi e velocizzi la creazione di nuove applicazioni. Inoltre, questa flessibilità consente scenari in cui diversi tipi di dati possono essere archiviati insieme e in cui i modelli possono evolversi nel corso della durata di un'applicazione.

Che cos'è un documento JSON?

JavaScript Object Notation, o JSON, è un formato dati leggero. JSON è stato creato per essere altamente compatibile con la notazione letterale di un oggetto nel linguaggio JavaScript. Molti framework, browser e anche database supportano JavaScript in modo nativo, per questo JSON è uno dei formati più diffusi per la trasmissione e l'archiviazione dei dati.

Ecco un esempio di documento JSON:

{
  "device": {
    "type": "mobile"
  },
  "sentTime": "2019-11-12T13:08:42",
  "spoolRefs": [
    "6a86682c-be5a-4a4a-bacd-96c4d1c7ece6",
    "79e78fe2-93aa-4688-89db-a7278b034aa6"
  ]
}

Come si può vedere, JSON è un formato di dati relativamente leggibile che espone chiaramente il contenuto. JSON è anche relativamente facile da analizzare e usare nelle applicazioni JavaScript.

Che cos'è Azure Cosmos DB for NoSQL?

Azure Cosmos DB per NoSQL è un servizio di database NoSQL veloce che offre avanzate funzionalità di query su dati di vari tipi. È utile per ottenere prestazioni configurabili e affidabili, è distribuita globalmente e velocizza i tempi di sviluppo.

Illustrazione di una mappa del mondo con quattro nodi distribuiti a livello globale connessi con linee.

L'API NoSQL è l'API principale o nativa usata con i documenti. L'API NoSQL supporta uno sviluppo rapido e flessibile usando documenti JSON, un linguaggio di query con una sintassi familiare e librerie client per i linguaggi di programmazione più diffusi. Azure Cosmos DB include altre API, ad esempio Mongo, Gremlin e Cassandra. Tali API offrono compatibilità con ogni ecosistema di database, pur continuando a eseguire il mapping alla stessa infrastruttura sottostante dell'API NoSQL nativa.

Azure Cosmos DB for NoSQL presenta alcuni vantaggi, ad esempio:

  • Velocità garantita su qualsiasi scala: anche in caso di picco, con elasticità immediata e illimitata, operazioni di lettura rapide e scritture multimaster, ovunque nel mondo.
  • Sviluppo di app veloce e flessibile con SDK per i linguaggi più diffusi, un'API NoSQL nativa insieme alle API per MongoDB, Cassandra e Gremlin e analisi senza ETL (estrazione, trasformazione, caricamento).
  • Pronta per applicazioni cruciali con continuità aziendale garantita, disponibilità del 99,999% e sicurezza a livello aziendale.
  • Database serverless completamente gestito ed economicamente conveniente con scalabilità automatica immediata che risponde alle esigenze delle applicazioni.

Queste funzionalità rendono Azure Cosmos DB la soluzione ideale per lo sviluppo di applicazioni moderne. Azure Cosmos DB for NoSQL è particolarmente adatto per le applicazioni che:

  • Sono caratterizzate da picchi e cadute imprevedibili del traffico
  • Generano una grande quantità di dati
  • Devono offrire esperienze in tempo reale agli utenti
  • Sono critiche in termini di continuità aziendale

Azure Cosmos DB for NoSQL può archiviare arbitrariamente documenti JSON nativi con schema flessibile. I dati vengono indicizzati automaticamente e sono disponibili per le query usando una versione del linguaggio di query SQL progettato per i dati JSON. Per accedere all'API NoSQL, è possibile usare gli SDK per i framework più diffusi, ad esempio .NET, Python, Java e Node.js.