Introduzione ad Azure Cosmos DB

di William Franchini, in Azure,

Azure Cosmos DB è un servizio di database distribuito geograficamente che supporta diversi modelli di dati. Essendo un servizio, come sviluppatori non abbiamo necessità di preoccuparci di installare, configurare e dimensionare l'hardware sottostante o preoccuparci della disponibilità o del fault tolerance (se non nella configurazione dei nostri database); tutto è gestito dietro le quinte da Azure.

Cosmos DB è implementato su Azure Service Fabric e noi possiamo concentrarci sugli aspetti applicativi. Nato a partire dall'esperienza di Microsoft con DocumentDb, Cosmos DB ci consente di definire dei container di oggetti e di lavorare su queste risorse con delle API specializzate.

In particolare, ad oggi possiamo lavorare su Cosmos usando un approccio SQL, o usando il modello di API di MongoDB o Cassandra, lavorare su Azure Tables o usare un modello specializzato per i grafi (Gremlin). Qualsiasi sia il modello scelto l'infrastruttura è la stessa e ci garantisce scalabilità e disponibilità.

In questo primo articolo inizieremo con la configurazione di un account Cosmos DB, la connessione e le operazioni di lettura e scrittura usando il modello di API SQL.

Vantaggi di Azure Cosmos DB

Come servizio managed, Azure Cosmos DB è in grado di garantire un servizio distribuito a livello globale. In particolare:

  • Geo-distribuzione: si possono distribuire i dati a livello globale in una qualsiasi della region di Azure, potendo localizzare i dati nella location più vicina all'applicazione (e all'utente).
  • Supporto a modelli di API e dati: grazie al salvataggio dei dati in un modello unico, Cosmos DB suppora diverse API per l'accesso ai dati (SQL, MongoDB, Cassandra, Gremlin, Table), potendo garantire una facile implementazione in applicazioni esistenti.
  • Ridimensionamento elastico: capacità di ridimensionare la velocità effettiva del database con granularità al secondo, in maniera trasparente e automatica.
  • Disponibilità Always On: SLA del 99,99% in una singola area e 99,999% per i database in più aree.
  • Scrittura geo-distribuita immediata: grazie a 5 livelli di coerenza.

Ora che abbiamo compreso quali sono le caratteristiche di Cosmos DB, iniziamo a dare un'occhiata a quello che ci consente di fare.

Creare un'istanza di Azure Cosmos DB

La prima cosa da fare è creare un account Cosmos DB; come per tutti i servizi Azure ci sono diversi modi di farlo: il portale, powershell e Azure CLIDa portale Azure aggiungiamo un resource group (o usatene uno esistente) e poi aggiungiamo un account Cosmos DB.

Il pane presenta pochi input: Subscription e resource group non credo necessitino di spiegazione.
Id è il nome DNS del nostro account, deve essere univoco, dai 3 a 50 caratteri (sono ammessi lettere minuscole, numeri e il carattere -).
API ci chiede di scegliere il modello di API da usare nel account. Cosmos DB ne supporta diversi, ma in ogni account se ne può usare uno soltanto.
Attualmente i modelli di API supportati sono SQL (che in precedenza era DocumentDB), Gremlin, MongoDB, Cassandra e Azure Table. Scegliamo SQL, avremo modo di parlare di altri modelli (Gremlin e MongoDB) nella seconda parte dell'articolo.

L'opzione Enable geo-redundancy, come suggerisce il nome, abilita la replica dei database su almeno un'altra regione, per iniziare potete togliere il check da questa opzione. Un click su Create e siamo ad un passo da poter creare il nostro database.

In Cosmos DB un database account gestisce uno o più database e un database, a sua volta, gestisce permessi utente e container.
I container contengono entity definite dall'utente (come per esempio dei documenti, in generale chiamati item) e altri oggetti come stored procedure, trigger e User Defined Functions (UDF).
In generale tutto ciò che si trova partendo da un account e quindi per esempio container, utenti, stored procedure, entity possono essere indicati con il generico termine di risorsa. Quindi, quello che abbiamo è una gerarchia di risorse che parte da un database account dove ogni risorsa è identificata univocamente da un URI e rappresentata da un documento JSON. Per gli item lo schema JSON non è prefissato, mentre è definito dal sistema per tutti gli altri tipi di risorsa.
La figura mostra il resource-model di Cosmos DB.

4 pagine in totale: 1 2 3 4

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc