Continuiamo il nostro viaggio alla scoperta della piattaforma dati di Azure evidenziando come l’offerta della soluzione cloud di Microsoft possa adattarsi sia ad esigenze basiche, sia affrontare i carichi di lavoro e le elaborazioni più impegnativi.
Non soltanto database relazionali: Azure DocumentDB
I database relazionali, come SQL Server o MySQL, visti per esempio nel precedente articolo, non sono la soluzione per tutte le esigenze.
Si pensi ad esempio ai frangenti in cui sia necessario approntare un efficace meccanismo di ricerca su centinaia o migliaia di documenti.
La stessa composizione delle query può diventare molto complessa anche solo allorquando risultasse necessario cercare un termine in più locazioni. Lo sviluppatore, infatti, sarebbe costretto a “ingegnarsi” per la strutturazione dinamica della query sulla base della specifica richiesta dell’utente.
A tal proposito, la navigazione dell’utente all’interno di un sito web non dev’essere sempre pensata come correlata e correlabile con una o più query su database.
I database, infatti, sono per loro stessa natura dimensionati e non possono scalare all’infinito sebbene la stessa piattaforma Azure permetta un ampissimo margine di manovra.
DocumentDB è un servizio messo a disposizione sulla piattaforma Azure in modalità PaaS (Platform-as-a-Service), con la modalità di gestione dell’infrastruttura che è quindi interamente delegata a Microsoft, che aiuta a superare i limiti dei database relazionali.
Si tratta di un database NoSQL, termine con cui ci si riferisce a quei sistemi software che non utilizzano il modello relazionale degli RDBMS (Relational database management system) come SQL Server e MySQL, incontrati nel precedente articolo.
DocumentDB, come suggerisce il nome stesso, è un database documentale (come lo sono, ad esempio, MongoDB e CouchDB), completamente esente da schemi (schema-less) ossia privo di quelle strutture tipicamente adoperate nei database tradizionali per strutturare e organizzare logicamente i dati contenuti.
Per attingere a tutte le funzionalità del servizio DocumentDB su Azure, è sufficiente utilizzare JavaScript e JSON. Ciò significa che per interagire con tutte le funzionalità del database documentale si può usare JavaScript come linguaggio di programmazione e JSON come formato per la memorizzazione dei dati.
Nonostante il “motore” di DocumentDB sia composto dal duo JavaScript/JSON, le query possono essere però effettuate usando sintassi SQL.
Si tratta di una peculiarità che non può non entusiasmare lo sviluppatore: tutte le conoscenze legate al linguaggio SQL, quindi, non vengono accantonate nel momento in cui si avesse la necessità di usare Azure DocumentDB ma anzi possono essere riutilizzate grazie al supporto nativo delle query su dati non strutturati come sono i documenti JSON.
Creazione di un database DocumentDB
La creazione di un database documentale DocumentDB è molto semplice e si realizza dal portale di Azure cliccando su Nuovo quindi digitando DocumentDB e, infine, selezionando la voce Azure DocumentDB.
La procedura guidata che conduce alla creazione di un database DocumentDB è molto simile a quella già vista negli articoli precedenti nel caso di altre risorse Azure.
Dopo aver assegnato un nome al database documentale, scelto la sottoscrizione, il gruppo di risorse e il datacenter Microsoft preferito (Località), basterà fare clic su Crea per proseguire.
All’interno del “contenitore” così creato, si potranno conservare uno o più database DocumentDB.
La gestione dei database DocumentDB può quindi essere svolta mediante portale, usando i vari pacchetti SDK oppure ricorrendo alle API REST, così come accade per quasi tutti i servizi della piattaforma Azure.
Dal pannello di gestione di DocumentDB, cliccando su Aggiungi database è possibile inserire un nuovo database documentale.
Si otterrà così, per ciascun database creato, un ID risorsa, ossia un identificativo univoco – entro l’intera piattaforma Azure – che permetterà di interfacciarsi via SDK o API REST.
Le raccolte, invece, possono essere in un certo senso paragonate alle “tabelle” dei classici database con la differenza che i contenuti JSON che si inseriranno nella “raccolta” DocumentDB sono del tutto destrutturati e possono quindi rappresentare informazioni differenti perché non legati ad un particolare schema.
Durante la creazione di una raccolta DocumentDB (pulsante Aggiungi raccolta), Azure chiederà di specificare il livello di servizio e quindi di performance che si desidera ottenere (la scelta permette di adattare i costi alle specifiche esigenze).
Si tratta di una caratteristica molto interessante perché consente di non restringere la scelta all’intero database DocumentDB ma richiedere specifici livelli di performance sulle singole “raccolte”.
Con un clic su Esplora documenti quindi su Crea, è possibile aggiungere un nuovo documento in formato JSON alla raccolta precedentemente selezionata.
Ovviamente, in produzione, nessuno si sognerà mai di caricare centinaia, migliaia o decine di migliaia di documenti attraverso il portale di Azure: lo sviluppatore gestirà queste attività ricorrendo alle API REST o ai pacchetti SDK per i vari linguaggi di programmazione.
Azure DocumentDB dà insomma la possibilità di gettare le basi per lo sviluppo di un’app anche quando non si ha ben chiara quella che sarà la struttura del suo database e, quindi, essere subito operativo senza doversi vincolare ad un qualunque schema.
Ogni documento porta con sé una serie di attributi, accessibili cliccando sul pulsante Proprietà. Tali informazioni, seppur poco comprensibili ad una prima occhiata, sono in realtà utilissime per interagire con i dati DocumentDB anche da altri servizi Azure (ad esempio da Azure Search Services, per l’indicizzazione e la ricerca).
Cliccando su Esplora query si potrà provare, infine, ad eseguire una query SQL sulla raccolta di documenti in formato JSON caricati nel “contenitore” DocumentDB.
A questo proposito è interessantissimo il Query Playground, strumento che consente di fare pratica con il linguaggio SQL applicato ad Azure DocumentDB.
Nulla vieta, comunque, di utilizzare un altro database documentale come MongoDB sia come servizio a sé stante (in modalità PaaS oppure da macchina virtuale), sia come integrazione all’interno di DocumentDB.
Il supporto del protocollo MongoDB in DocumentDB consente alle applicazioni esistenti di comunicare senza problemi con DocumentDB usando i driver per MongoDB.
Azure Data Lake e Data Warehouse
Con i servizi come Azure Data Lake e Azure Data Warehouse si hanno a disposizione storage che consentono la memorizzazione e la successiva gestione di enormi quantitativi di dati negli scenari in cui è necessario svolgere analisi complesse su big data.
Si tratta degli strumenti più efficaci per compiere elaborazioni su dati provenienti da fonti diverse e, molto spesso, di differente tipologia (dati relazionali e non relazionali).
Azure Data Lake è il servizio della piattaforma Microsoft che consente e semplifica le attività di analisi sui big data.
Le aziende si trovano oggi a gestire moli di dati sempre maggiori, prodotti sia internamente che provenienti dall’esterno. Il dato, di per sé, spesso non veicola alcun tipo di informazione: grazie ad Azure Data Lake è possibile analizzare tali dati e ricavarne informazioni utili l’ottimizzazione dei flussi di lavoro, per prendere decisioni strategiche, in ultima analisi, per fare business.
Azure Data Lake si compone, essenzialmente, di tre componenti principali: Store, Analytics
Nel Data Lake Store si possono memorizzare dati di qualunque tipo e dimensione. Inoltre, i dati che si decidono di inviare allo store possono essere convogliati indipendentemente dalla velocità di scrittura quindi inviati più o meno rapidamente sulla piattaforma Azure.
Il componente Data Lake Analytics, invece, si occupa di rendere le analisi dei dati memorizzati all’interno dello store scalabili e completamente gestite.
La terza tessera del “puzzle” Data Lake si chiama HDInsight. Presenteremo più diffusamente questo componente nel prossimo articolo; per il momento è importante sapere che si tratta della versione cloud, pensata per Microsoft Azure, del progetto Apache Hadoop, studiato per quegli scenari in cui è necessario svolgere attività di analisi di big data.
Le aziende interessate possono anche attivare su Azure cluster HDInsight su Linux: l’idea è quella di offrire piena libertà agli utenti sulle tecnologie utilizzabili per l’analisi dei dati abbracciando con convinzione anche strumenti opensource.
Azure Data Warehouse è invece un database utilizzabile a livello enterprise che permette di memorizzare dati relazionali e non relazionali fidando su uno storage dell’ordine dei petabytes e che permette di gestire gli scenari contraddistinti da carichi di lavoro ancora più impegnativi.