Università degli Studi Mediterranea di Reggio Calabria Dipartimento di Ingegneria dell’Informazione, delle Infrastrutture e dell’Energia Sostenibile Corso di Laurea in Ingegneria delle Telecomunicazioni Tesi di Laurea Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1 Relatore Candidato Prof. Domenico Ursino Francesco Romeo Anno Accademico 2013-2014 Alla mia famiglia, ai miei amici e a tutte le splendide persone che mi sono state vicine durante questo cammino. 1 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto INTRODUZIONE La rivoluzione digitale, la diffusione degli open data e l'accelerazione senza precedenti dello sviluppo tecnologico hanno causato una vera e propria esplosione dei dati. Questo fenomeno risulta in continua crescita e tale crescita sembra destinata a mantenersi anche per il futuro. I dati vengono generati attraverso qualsiasi mezzo: dai sensori per la raccolta di informazioni sul clima ai post sui social network, passando per video e immagini digitali, dati GPS raccolti attraverso smartphone e tablet, trascrizione delle transazioni di acquisto, e tanti altri mezzi. Gli strumenti di analisi aiutano i ricercatori a trasformare i dati in conoscenza. La capacità di analizzare un'elevata mole di informazioni, spesso non strutturate, rappresenta, per le aziende operanti in alcuni settori, una chiara fonte di vantaggio competitivo e di differenziazione. I Big Data, combinati con sofisticate analisi di business, hanno il potenziale per dare alle imprese intuizioni, senza precedenti, sul comportamento dei clienti e sulle condizioni di mercato, permettendo di prendere decisioni più velocemente e più efficacemente rispetto alla concorrenza. 1 Per far fronte a tali esigenze le aziende fanno uso di nuove soluzioni ICT, sia a livello infrastrutturale che applicativo, in tutte le fasi del processo, dall'acquisizione, passando per la fase di analisi, fino ad arrivare alla visualizzazione dei risultati ottenuti. Uno dei problemi che sta dietro ai Big Data è che, nella maggior parte dei casi, questi dati non sono strutturati, quindi non sono facilmente riconducibili a modelli di dati o a metodi classici di archiviazione. Cambiare in corsa una determinata tabella, magari introducendo nuovi attributi, è problematico e, spesso, sconsigliato proprio per evitare problemi di corruzione al DBMS. Questa limitazione rende i DBMS relazionali molto poco adatti alle trasformazioni dei Big Data. La nascita e il recente sviluppo dei DBMS NoSQL si sono rivelati di importanza fondamentale per garantire la crescita di tutta una serie di applicazioni ricche di contenuti e spesso distribuite agli utenti tramite Internet. Francesco Romeo | 1 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Di soluzioni per affrontare la problematica dei Big Data ne esistono di diversi tipi, ma quella che va per la maggiore è sicuramente basata su Hadoop. Questa tecnologia, open source, ha rivoluzionato la percezione delle aziende su cosa può essere fatto con i propri dati. La crescita esplosiva dei dati, associata al crollo dei costi dei server e alla crescita delle infrastrutture cloud, ha fatto diventare Hadoop il punto di riferimento per le medie e grandi aziende. Esistono varie tipologie di DBMS NoSQL, ciascuna delle quali presenta caratteristiche differenti. La scelta su quale DBMS usare va fatta accuratamente dal progettista software in base alle caratteristiche del sistema da gestire. All’interno della tesi si è scelto di dare maggiore importanza a tre dei DBMS più utilizzati: Cassandra, MongoDB e HBase. In questa tesi presenteremo una panoramica sui Big Data e, più in particolare, su quanto precedentemente specificato. La tesi è strutturata come di seguito specificato: Nel primo capitolo sarà descritto il fenomeno dei Big Data. Verrà presentato il tema della Social Business Intelligence e i vantaggi che ne derivano. Inoltre, verranno presentati i più diffusi contesti di utilizzo. Il secondo capitolo si concentrerà sul processo di analisi dei Big Data, partendo dal processo di estrazione della conoscenza dai database (KDD) e dando maggiore rilievo alla fase di Data Mining. Verrà presentata la figura del data scientist e sarà affrontato il tema della Privacy By Design. Nel terzo capitolo sarà introdotto il concetto di NoSQL e verrà fatto un confronto con i DBMS relazionali. Inoltre, verranno elencate le varie tipologie di DBMS NoSQL. Nel quarto capitolo si parlerà dell’utilità del framework Hadoop per l’analisi distribuita di grandi insiemi di dati. Verranno, inoltre, presentati i sottoprogetti fondamentali, MapReduce e HDFS, e l’innovativo YARN. Nel quinto capitolo verranno trattati tre dei più utilizzati DBMS NoSQL: Cassandra, MongoDB e HBase. Inoltre, verranno presentate, e poi confrontate le caratteristiche, di ognuno di essi. Infine, nell’ ultimo capitolo, verranno tratte le conclusioni e verranno esaminati alcuni possibili sviluppi futuri. 2 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1. INTRODUZIONE AI BIG DATA In questo capitolo verrà descritto il concetto di Big Data. Partendo dal significato del termine verranno delineate le caratteristiche generali di questo fenomeno. Successivamente, verrà affrontato il tema della Social Business Intelligence con i vantaggi che ne derivano. Il capitolo si concluderà con una presentazione dei più diffusi contesti di utilizzo, appunto, dei Big Data. 1 Cosa si intende per Big Data 2 La Social Business Intelligence 3 Contesti di utilizzo dei Big Data 1 Francesco Romeo | 3 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.1 COSA SI INTENDE PER BIG DATA “What is Big Data? A meme and a marketing term, for sure, but also shorthand for advancing trends in technology that open the door to a new approach to understanding the world and making decisions .” Il termine Big Data, sicuramente abusato nelle moderne strategie di mercato, indica grandi aggregazioni di dati che non possono essere processati o analizzati con i tradizionali processi e strumenti di analisi. I Big Data aprono le porte verso nuovi modi di percepire il mondo e di prendere decisioni. I Big Data sono ovunque, e ogni giorno sempre più applicazioni vengono create per trarne valore e arricchire la vita personale e professionale degli utenti. I nostri desideri, opinioni, sentimenti lasciano traccia nei social media a cui partecipiamo, nelle domande che facciamo ai motori di ricerca, nei tweet che inviamo e riceviamo, così come i nostri stili di vita lasciano traccia nei record dei nostri acquisti. I nostri movimenti lasciano traccia nelle traiettorie disegnate dai nostri smartphone e dai sistemi di navigazione delle nostre auto. Anche le nostre relazioni sociali lasciano traccia nella rete dei nostri contatti telefonici, delle email e nei link di amicizia del nostro social network preferito. Da un lato, alcuni fattori, quali la crescita dei dati scientifici, hanno fortemente contribuito all'accelerazione della produzione di questi dati. Dall'altro, questa crescita esponenziale è il risultato di alcuni mutamenti sociali ed economici estremamente positivi avvenuti nella nostra società. Si consideri, ad esempio, la rapida diffusione dei dispositivi mobili, ricchi di contenuti multimediali e compatibili con i sistemi GPS, e dei social network, che hanno consentito a miliardi di persone in tutto il mondo di tenersi in contatto in modo digitale. 4 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto I Big Data sono il nuovo strumento che rende “misurabile” la società. Ci indirizzano verso una nuova scienza dei dati in grado di misurare e, in prospettiva, prevedere crisi economiche, epidemie e pandemie, diffusione di opinioni, distribuzione delle risorse economiche o energetiche, bisogni di mobilità. Molti analisti, per poter definire il concetto di Big Data, utilizzano le tre caratteristiche descritte di seguito: Velocità; Varietà; Volume; Un equivoco molto diffuso è la convinzione che il concetto di Big Data riguardi esclusivamente le dimensioni dei dati. Per quanto le dimensioni rappresentino sicuramente un elemento della questione, esistono anche altri aspetti o altre proprietà dei Big Data che non sono necessariamente associati a esse. Si prendano in considerazione, ad esempio, la velocità di generazione dei Big Data da un lato e, dall'altro, il numero e la varietà di origini da cui i dati vengono generati contemporaneamente. Per stabilire quando effettivamente i vari tipi di dati rientrano nella categoria dei Big Data è necessario analizzare gli elementi sopra citati. È fuor di dubbio che una presentazione di PowerPoint da 40 MB, un'immagine medica da 1 TB o un filmato da 1 PB hanno tutti dimensioni elevate, ma dobbiamo capire se si tratti di Big Data. Si potrebbe sostenere che non si possono definire Big Data solo in virtù delle dimensioni, poiché il concetto di dimensioni elevate, così come inteso oggigiorno, potrebbe cambiare in futuro. Si potrebbe, invece, asserire che si tratta oggi di Big Data perché ognuno di essi sfrutta al massimo la comune tecnologia disponibile per il loro utilizzo. Si può considerare Big Data una presentazione di PowerPoint da 40 MB se non è possibile condividerla via email con colleghi o aziende. Analogamente, si può considerare Big Data un'immagine medica da 1 TB se non è possibile visualizzarla in tempo reale su uno schermo remoto in modo semplice e accurato e consentire al medico di utilizzarla durante le visite dei pazienti. Un filmato da 1 PB rientra fra i Big Data se non è possibile eseguire il rendering dell'editing entro l'orario di attività aziendale. È chiaro, quindi, che qualunque attributo, comprese le dimensioni, riguarda i Big Data nel momento in cui mette alla prova i limiti delle funzionalità dei sistemi o incide sulle esigenze Francesco Romeo | 5 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto aziendali. In merito agli altri attributi che possono rientrare nella definizione precedentemente esposta, quali la velocità di generazione dei dati o il numero e la varietà di origini da cui provengono, in questo caso è possibile applicare la classificazione di Big Data a quei dati che, di per sé, non sono affatto “GRANDI”. Un altro aspetto interessante dei Big Data è la loro diversità dal punto di vista della struttura. Alcuni hanno un formato ben definito, ad esempio nel caso delle transazioni di un database, in cui ogni voce può essere divisa in campi, ciascuno dei quali contenente un tipo di dati ben chiaro e definito. Altri possono essere, semplicemente, una raccolta di interventi su blog con testo, tabelle, immagini, audio e video, tutti memorizzati all'interno dello stesso storage di dati. Possiamo affermare che i Big Data sono intorno a noi e che noi stessi siamo tra i principali generatori. L'aggiornamento dei Big Data avviene, inoltre, in modo estremamente iterativo e incrementale con una frequenza elevata. I dati vengono costantemente modificati e divengono più accurati e precisi con il passare del tempo e con l'aumentare dei dati relativi ai dati creati, calcolati o desunti. L'esecuzione di analisi con la maggiore granularità possibile, che producano allo stesso tempo una quantità di dati sufficiente affinché il risultato sia significativo e accurato, richiede iniziative più precise e, in compenso, porta maggiori profitti o guadagni per l'azienda e i clienti. Tenendo conto della qualità dei dati e della loro rappresentatività, dobbiamo essere consapevoli delle grandi opportunità, così come dei nuovi rischi. Occorrono tecnologie a sostegno della privacy, occorre un “new deal” sui temi della privacy, della trasparenza e della fiducia necessario per creare e accedere alla conoscenza dei Big Data come un bene pubblico per tutti. Certo, i problemi relativi alla qualità, alla privacy e alla proprietà dei Big Data risultato essere decisivi. 6 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.2 LA SOCIAL BUSINESS INTELLIGENCE La Business Intelligence (nel seguito, BI) può essere definita come l’insieme delle metodologie, dei modelli, delle tecnologie e delle applicazioni rivolte alla raccolta sistematica del patrimonio di informazioni generate e acquisite da un’azienda, alla loro aggregazione, analisi, presentazione e al loro utilizzo. Le tecniche di BI nascono, come dice il nome, nel settore economico-finanziario, con applicazioni oggi prevalentemente di marketing, e hanno nomi evocativi come: benchmarking, data mining, business performance management, etc. Big Data Analytics è un concetto nuovo, che in realtà è l’unione di due concetti dei quali si parla ormai da molti anni e che, quindi, nuovi non sono. Da un lato Big Data, con tutte le problematiche connesse, come abbiamo visto. Dall’altro lato la Business Analytics. Di modello dimensionale dei dati e applicazioni OLAP (On-Line Analytical Processing) si parla da più di 20 anni; la Business Intelligence e il Performance Management sono tra le aree IT che, negli ultimi anni, hanno avuto più attenzione ed investimenti; il Data Mining e le analisi predittive sono stata l’ultima frontiera che ha portato verso la Business Analytics. Oggi è difficile trovare un’azienda che non abbia affrontato almeno uno dei temi appena citati. Ciò che è inedito, invece, è il concetto di Big Data Analytics. Unione che non è il semplice accostamento dei due concetti sopra descritti. Big Data Analytics non significa semplicemente, o non solo, potere fare analisi su grossi volumi di dati. Anche gli altri due fattori che caratterizzano i Big Data, ovvero la varietà dei dati e la necessità di trasformare i dati in informazioni il più velocemente possibile, sono intervenuti a determinare la definizione di questa nuova categoria di applicazioni. Vediamo quale può essere la chiave di successo per sfruttare i grandi dati e per estrarre da essi informazione e conoscenza. Secondo il McKinsey Global Institute, è possibile identificare cinque fattori largamente applicabili per poter sfruttare i Big Data come fonte di valore. Questi saranno esaminati in dettaglio nel prossimo paragrafo. Francesco Romeo | 7 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.2.1 BIG DATA COME FONTE DI VALORE I cinque fattori capaci di dare valore ai Big Data sono i seguenti: La creazione della trasparenza: si può ottenere la trasparenza semplicemente rendendo accessibili e disponibili i dati e le informazioni a tutti gli “stakeholder” in modo tempestivo e in modo da creare un valore straordinario; nel settore pubblico è in atto da tempo una tendenza (Open Data), in particolare nel mondo anglosassone, di apertura del patrimonio informativo a tutte le organizzazioni private e/o ai cittadini. Per quanto le prime iniziative abbiano messo in luce elementi di criticità, si tratta di una tendenza che prosegue e che, anche in Italia, ha messo in moto alcune interessanti iniziative sia a livello regionale che nazionale. Miglioramento delle prestazioni: tutte le organizzazioni, sia pubbliche che private, con una maggiore analisi ed elaborazione dei dati e delle informazioni disponibili possono migliorare le loro prestazioni ed i loro processi. Particolarmente significativi a questo riguardo sono le esperienze di analisi dei dati di vendita ed, in generale, di relazione con la clientela. Una più attenta elaborazione dei dati relativi alle vendite può incrementare in modo significativo la capacità di segmentare l’offerta e di personalizzarla sulle specifiche esigenze del cliente. Analizzare i dati sul venduto può dare origine ad una più precisa previsione dell’andamento futuro delle vendite con evidenti vantaggi nella gestione logistica. Nel settore pubblico, il processo di digitalizzazione in atto nell’area della salute, può consentire oltre ad una analisi accurata della efficienza ed efficacia delle strutture sanitarie una disponibilità di informazioni cliniche che contribuisce ad aumentare la qualità e la personalizzazione dei trattamenti sanitari. Sempre nel settore pubblico, un’analisi delle tendenze e dei dati relativi al mercato del lavoro può aiutare in modo decisivo la definizione di politiche attive di supporto ai non-occupati e l’impostazione di adeguati processi formativi. Segmentazione dei clienti e personalizzazione delle azioni: i Big Data consentono alle orga- 8 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto nizzazioni di creare segmentazioni altamente specifiche e di adattare i prodotti e i servizi alle esigenze dei consumatori. Questo approccio è ben noto in marketing e nella gestione del rischio. Supporto alle decisioni: i processi decisionali, in tutte le organizzazioni, possono diventare sempre più data-driven e fact-based. Le decisioni prese con il supporto di strumenti analitici possono diventare la regola e non l’eccezione. Fino ad ora queste tecniche erano diffuse solo nelle grandi organizzazioni, anche per il costo elevato dei sistemi e degli strumenti informatici per l’elaborazione e l’analisi dei dati. Le attuali evoluzioni tecnologiche, come il diffondersi del “cloud-computing” e degli strumenti di analisi “open-source”, rendono molto meno costoso e più flessibile l’adozione di queste tecniche da parte anche delle organizzazioni medio-piccole. Innovare i prodotti, i servizi e i modelli di business. La possibilità, tramite l’analisi dei dati, di rispondere in tempo reale alle domande: “Cosa è successo?”, “Perché è successo?”, “Che cosa sta succedendo?” e “Che cosa succederà?” consentono alle organizzazioni di innovare i prodotti, i processi e i modelli di business per cogliere le sfide di un ambiente in continuo cambiamento. Per cogliere al meglio le opportunità elencate è, però, necessario rispondere efficacemente ad alcune sfide che possono essere cosi sintetizzate: Sfide tecniche: il tema della qualità, dell’accessibilità e della fruibilità dei dati rimane un aspetto critico che molte organizzazioni non hanno ancora adeguatamente affrontato. Come citato in una ricerca, IBM stima che oltre il 50% dei manager, non consideri affidabile il dataset sul quale si basano i processi decisionali. Mancanza di talenti: la crescita esponenziale dei “big data” ha messo in evidenza la necessità, sempre maggiore, di persone con competenza adeguate per elaborare, analizzare e visualizzare grandi dataset ed estrarre da essi le informazioni essenziali per il supporto delle decisioni. Si valuta che nel 2018, solo in USA, vi sarà una carenza di personale con competenze di analisi stimabile in 150-190 mila unità e saranno mancanti oltre 1,5 milioni di manager con competenze adeguate all’utilizzo dei “big data”. Emergeranno, inoltre, nuove figure professionali come quella del “data scientist”, dotate di Francesco Romeo | 9 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto competenze multidisciplinari (statistica, informatica, economia, organizzazione), necessarie per creare valore ai “big data”. Sfide legali: il tema della sicurezza, della tutela della privacy e della protezione della proprietà dei dati e delle informazioni, in molti settori (come ad esempio quello della sanità), costituisce un’elemento forte di criticità e, talora, un freno all’innovazione. Sfide culturali: la cultura delle decisioni data-driven e fact-based non è ancora sufficientemente diffusa nelle organizzazioni, sia pubbliche che private (soprattutto in Italia). È indispensabile, dunque, dedicare adeguata attenzione alle politiche formative ed alla gestione del cambiamento. Questa grande complessità e quantità dei dati può essere gestita solo attraverso soluzioni tecnologiche nuove. È stata sviluppata e adattata un'ampia varietà di tecniche e tecnologie per aggregare, manipolare, analizzare e visualizzare i Big Data. L'insieme di tecniche e tecnologie attingono da settori diversi, quali la statistica, l’informatica, la matematica applicata e l'economia: questo significa che un'azienda, la quale intende trarre valore dai Big Data, dovrebbe adottare un approccio flessibile e multidisciplinare. Le tecniche e le tecnologie per aggregare, manipolare, analizzare e visualizzare i Big Data sono in continuo sviluppo per ottenere , sempre, un miglioramento delle prestazioni. 10 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.2.2 VARIETA’ DELLE INFORMAZIONI Probabilmente esistono due distinte categorie di Big Data. La prima è relativa alle tipologie tradizionali di dati. La seconda è relativa ai dati generati dalla rete. Se prestiamo attenzione a quest’ultima categoria, proviamo ad elencare alcune importanti fonti di dati per la Big Data Analytics: Dati strutturati in tabelle (relazionali). Sono i dati sui quali si basa la tradizionale Business Intelligence e la sua recente evoluzione, la Business Analytics. I volumi sempre crescenti di dati memorizzabili e le architetture sempre più “performanti” rendono ancora oggi le tabelle relazionali la principale fonte di dati per la Big Data Analytics. Tutti i sistemi gestionali esistenti producono dati strutturati o strutturabili in tabelle relazionali. Queste restano il modello di dati preferenziale per le principali piattaforme di Data Analytics. Dati semistrutturati (XML e standard simili). E’ il tipo di dati che sta sfidando l’egemonia dei dati strutturati. Applicazioni transazionali e non, forniscono nativamente output di dati in formato XML o in formati tipici di specifici settori (SWIFT, ACORD, etc. ). Si tratta, perlopiù, di dati Business-to-Business organizzabili gerarchicamente. Dati di eventi e macchinari (messaggi, batch o real time, sensori, RFID e periferiche). Sono i tipici dati definibili “Big Data” che, sino a pochi anni fa, venivano memorizzati solo con profondità temporali molto brevi (massimo un mese) per problemi di storage. Dati non strutturati (linguaggio umano, audio, video). Sono enormi quantità di metadati, perlopiù memorizzati sul web, dai quali è possibile estrarre informazioni strutturate attraverso tecniche avanzate di analisi semantica. Dati non strutturati da social media (social network, blog, tweet). Sono l’ultima frontiera delle fonti di dati non strutturate. Crawling, parsing ed entity extraction sono tra le tecniche per l’estrazione di dati strutturati e analizzabili. I volumi aumentano esponenzialmente nel tempo. Il loro utilizzo può aprire nuovi paradigmi di analisi prima impensabili. Francesco Romeo | 11 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Dati relativi alla navigazione Web (Clickstream): Web Logs, Tag Javascript, Packet sniffing per ottenere Web Analytics. Si tratta di enormi quantità di dati che portano informazioni sui consumi e sulle propensioni di milioni di utenti. Anche per questi dati, i volumi aumentano esponenzialmente nel tempo. Dati GIS (Geospatial, GPS). I dati geospaziali sono generati da applicazioni sempre più diffuse. La loro memorizzazione è ormai uno standard e i volumi sono in crescente aumento. I dati geospaziali, analizzati statisticamente e visualizzati cartograficamente, integrano i dati strutturati fornendo, ad esempio, informazioni di business, informazione sulla sicurezza o informazioni sociali. Dati scientifici (astronomici, genetica, fisica). Come i dati relativi agli eventi, sono per definizione dei Big Data. Per il loro trattamento e la loro analisi si sono sperimentate tutte le più innovative tecniche computazionali nella storia recente dell’Informatica. Per essi sono stati progettati, nel tempo, tutti i più potenti calcolatori elettronici. I loro volumi sono enormi e in costante aumento. Dopo questa elencazione, comunque non esaustiva, sarà risultato chiaro quale sia la potenziale varietà di dati da trattare in un’applicazione sviluppata per trasformare i dati in informazioni di business. 12 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.2.3 LA VELOCITA’ NEI FENOMENI AZIENDALI Introduciamo l’ultimo fattore che ha determinato la nascita delle Big Data Analytics, ovvero la Velocità che, per molti fenomeni aziendali, è diventata una caratteristica sempre più determinante. Essa è fondamentale per: Svolgere i processi e le attività aziendali (ad esempio, un processo commerciale, la creazione di un nuovo concept di prodotto, la comunicazione di marketing con media digitali). Trattare in modo integrato grandi volumi di dati eterogenei (ad esempio, i dati di vendita, i reclami a un customer care e i commenti sui blog o nei social network, dati di geolocalizzazione) e ottenere un’informazione rilevante (ad esempio, di insight nel comportamento di acquisto di un segmento di clientela e delle sue percezioni di qualità verso il prodotto). Rilevare, archiviare, elaborare, distribuire e presentare i dati generati utilizzando i sistemi ICT. Gestire le relazioni digitali tra le persone, le imprese e le istituzioni in modo da permettere la “ubiquità” dei dati e degli individui. La velocità oggi a disposizione delle aziende si concretizza nella capacità potenziale di ridurre il tempo necessario non solo per l’esecuzione di un’attività, ma anche per la sua finalizzazione, per il cambiamento repentino e “in corsa” dei suoi obiettivi o delle sue relazioni con altri processi; questa è la vera e rivoluzionaria novità per la gestione d’azienda. Muoversi in un contesto dove si hanno tutti i dati a disposizione consente di affrontare un problema con un margine di errore ridotto e accettabile. La complessità crescente della gestione aziendale di cui si parla spesso, è, di fatto, generata da due fattori prevalenti: la crescente velocità dei cambiamenti necessari, e la crescente incertezza degli scenari e dei risultati generabili dalle scelte possibili. I seguenti punti possono aiutare a riassumere i Francesco Romeo | 13 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto principali cambiamenti già in atto e basati sull’ICT, che prospettano alcuni nuovi orizzonti del management aziendale: Trasformare il modo in cui le persone pensano, analizzano i fatti, pianificano e agiscono: sono necessari nuovi atteggiamenti nei confronti dell’ICT, passando da molti fenomeni di moda e di “consumerization” (ad esempio, riguardo i dispositivi mobili o il social Web) ad un reale impiego nella gestione aziendale. Velocizzare i processi di Innovation Management, sia di prodotto/servizio (dall’idea generation al concept, al testing e allo sviluppo), sia di processo (interno esterno, operativo o manageriale), generati dall’ICT. Far funzionare in modo sincrono elevati volumi di transazioni e operazioni aziendali con veloci ed evolute attività di analisi dei dati strutturati e non strutturati generati da questi processi operativi online e offline. Velocizzare le decisioni aziendali con un numero maggiore di informazioni rilevanti e con sistemi di comunicazione e collaborazione ad alta velocità, in tempo reale, tra persone, tra team di lavoro, e tra imprese. Aumentare i cicli/ritmi di misurazione, monitoraggio e analisi dei fatti aziendali per innescare veloci attività di “trial and error”, veloci cicli di “Analyze, Plan, Act and Control”, piuttosto che profondi e lenti processi di decisione analitica. Essere coscienti che il sogno della “real time enterprise” deve avvenire attraverso azioni innovative, fattibili, veloci, economicamente convenienti (nel marketing, nel business development, nella finanza, etc.), altrimenti resta un potenziale inespresso e fine a se stesso. Questa grande complessità e questa grande quantità dei dati possono essere gestite solo attraverso soluzioni tecnolo- 14 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto giche nuove. È stata sviluppata e adattata un'ampia varietà di tecniche e tecnologie per aggregare, manipolare, analizzare e visualizzare i Big Data. L'insieme di tecniche e tecnologie attingono da settori diversi, quali la statistica, l’informatica, la matematica applicata e l'economia: questo significa che un'azienda, la quale intende trarre valore dai Big Data, dovrebbe adottare un approccio flessibile e multidisciplinare. Francesco Romeo | 15 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.3 CONTESTI DI UTILIZZO DEI BIG DATA I Big Data si configurano come un'importante risorsa per l'innovazione, la competizione e la produttività tra le aziende e vengono considerati come dati che potrebbero generare un grande valore al pari addirittura del petrolio, come già affermava nel 2006 il ricercatore di mercato Clive Humby. Allo stato attuale i dati digitali sono ovunque, in ogni settore, in ogni economia e in ogni organizzazione; l'abilità di generare, comunicare, condividere e accedere ai dati è stata rivoluzionata ulteriormente dall'aumento del numero di persone che fanno uso di dispositivi mobili e dai sensori che sono connessi con le reti digitali. Si pensi che più di 30 milioni di nodi sensori collegati in rete sono presenti nel settore dei trasporti, dell'automotive, dei servizi e nel retail e che questi stanno crescendo sempre di più a un tasso superiore al 30% annuo. La qualità dei dati trasversali alle reti continuerà ad aumentare vertiginosamente: infatti, si pensa che entro il 2020 saranno connessi alla rete e a Internet 50 miliardi di dispositivi. Dunque anche la rete gioca un ruolo chiave ai fini dello sviluppo del potenziale dei Big Data. Innanzitutto, essa può raccogliere dati a velocità elevata; i dati raccolti consentono alla rete di determinare il contesto, ad esempio abbinando ai dati le informazioni sull'identità o sulla presenza. Inoltre, la rete consente alle imprese di intervenire immediatamente sulle informazioni ricavate dai dati. Secondo un sondaggio di Gartner, il 64% delle organizzazioni globali sta investendo, o ha intenzione di investire, in tecnologie per i Big Data contro il 54% che già lo faceva o pensava di farlo nel 2012. È anche vero che solo l'8% delle imprese ha implementato tali tecnologie. I settori che guidano gli investimenti in Big Data sono quelli dei media e delle comunicazioni, le banche e i servizi, ma nel giro dei prossimi due anni si aggiungeranno molte altre aziende, come quelle nel settore dei trasporti, nella sanità e nel benessere. Ci sono notevoli esempi di aziende in tutto il mondo che sono bene conosciute per il vasto ed efficace utilizzo dei dati. Di seguito menzioniamo brevemente le best practices delle aziende mondiali che hanno sfruttato il valore dei Big Data: Il programma di fidelizzazione di Tesco genera un ammontare di dati sui clienti, da cui 16 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto l'azienda estrae informazioni, per costruire campagne promozionali sino ad arrivare alle strategie di segmentazione della clientela. Harrah's ha aumentato il ricavo dell'8 - 10% analizzando i dati sulla segmentazione dei clienti. Amazon utilizza i dati sui consumatori per gestire il suo motore di raccomandazioni che conosciamo con l'espressione “you may also like. . .”; questo è basato su un tipo di tecnica di modellazione predittiva chiamata “collaborative filter”. Inoltre, Amazon ha dichiarato che il 30% dei propri ricavi era riconducibile al suo motore analitico per i consigli ai consumatori. Fedex, la società di trasporto espresso più grande al mondo, ha ottenuto in tempo reale i dati su spedizioni e consumatori provenienti da più di 46000 centri di distribuzione e supply chain. WalMart, il gigante americano della grande distribuzione, ha implementato la tecnologia RFID (Radio Frequency Identication) per scambiare informazioni in tempo reale tra i fornitori e il Data Warehouse Retail Link. In questo modo ha ottenuto la riduzione del 16% della frequenza di esaurimento delle scorte. Quest' ultima azienda merita delle considerazioni in quanto ha agevolato la strada alle altre aziende garantendone la competitività nel settore del retail. Walmart ha facilitato l'espansione di un sistema di scambio elettronico di dati per collegare la propria catena di fornitura elettronica. Inoltre, ha sviluppato un Retail Link, ovvero uno strumento che offre ai suoi fornitori una visione della domanda nei suoi negozi in modo da prevedere quando questi ultimi debbano essere riforniti senza attendere l'ordine da Walmart. L'uso diffuso dei dati dei clienti sempre più granulari può consentire ai retailer di migliorare l'efficacia del loro marketing e del loro merchandising. Le applicazioni possono essere suddivise in due grandi settori: applicazioni analitiche e applicazioni relative a determinati settori. Questi verranno esaminati in dettaglio nelle prossime sottosezioni. Francesco Romeo | 17 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.3.1 APPLICAZIONI ANALITICHE Le applicazioni analitiche si possono suddividere come di seguito specificato: Applicazioni basate su attribuzioni. Queste devono recuperare e analizzare le serie di attività, prendendo in considerazione fattori quali la frequenza, la sequenza, l’attualità, le soglie e la perdita di efficacia nel tempo trascorso; l’obiettivo finale è quello di accreditare un valore a ciascuna attività. Ecco alcuni esempi basati su attribuzioni: applicazioni per l’ efficacia del marketing multicanale, grazie alle quali gli esperti del settore tentano di attribuire credito per una vendita su canali di marketing; applicazioni di attribuzione relative ai partner, grazie alle quali le società commerciali tentano di quantificare il contributo dei vari partner; applicazioni di attribuzione relative al trattamento medico, grazie alle quali le organizzazioni di assistenza sanitarie tentano di valutare l’incidenza di varie cure e medicinali sull’esito della terapia. Applicazioni basate su suggerimenti. Le applicazioni basate su suggerimenti individuano e generano serie di utenti e prodotti simili in base a comportamenti, dati demografici o altri attributi percepibili. A partire dalle tendenze rilevate, le applicazioni riescono a fornire suggerimenti su prodotti (come nel caso Amazon e Netfix) o persone (come accade con Linkedln e Facebook). Ecco alcuni esempi di applicazioni basate su suggerimenti: applicazioni per l’individuazione di pubblicità mirate ai clienti, che suggeriscono segmenti di audience di riferimento “simili” in base a comportamenti e prodotti acquistati in passato; applicazioni che consigliano prodotti complementari sulla base degli acquistati effettuati da utenti simili in un determinato periodo di tempo . Applicazioni basate su predizioni e previsione. Le applicazioni basate su predizioni e previsione acquisiscono un’ampia gamma di variabili a supporto dei processi decisionali in svariati scenari di mercato. Esse utilizzano al meglio le tecniche statistiche e di data mining per estrarre dalla moltitudine di variabili solo quelle più efficaci per prevedere le prestazioni in particolari situazioni. Le applicazioni predittive avanzate integrano valutazioni su rischi e dati sensibili affinché i responsabili delle decisioni possano determinare le variabili più importanti nel processo decisionale. Ad esempio, se si ritiene che una certa 18 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto variabile sia cruciale per una decisione, è possibile investire maggiori risorse per assicurarsi che essa venga valutata in modo preciso e completo . Ecco alcuni esempi di applicazioni basate su predizione e/o previsione : applicazioni per il calcolo del tasso di abbandono dei clienti che prevedono la possibilità di contrasti con questi ultimi in base a fattori come attività di utilizzo, richieste di supporto e influenza sociale degli amici; applicazioni per la manutenzione dei prodotti, che prevedono guasti delle apparecchiature in base a informazioni sull’utilizzo dei prodotti (in particolare, informazioni attualmente fornite dai dispositivi dati integrati), registrazione degli interventi di manutenzione e informazioni generali sulle prestazioni; applicazioni relative alle prestazioni dei dipendenti, che prevedono le prestazioni di un potenziale collaboratore in base a fattori quali formazione, posizione socio-economica, ruoli professionali precedenti, stato civile e determinate risposte psico-comportamentali; applicazioni relative alle prestazioni degli studi clinici, che modellano i risultati di vari medicinali in base alla sperimentazione clinica, consentendo ad un’azienda di comprendere l’efficacia di determinate terapie ed evitare conseguenze catastrofiche in caso di utilizzo di particolari farmaci; ciò assume un’importanza ancora maggiore quando si tenta di attribuire i risultati per più trattamenti e medicinali; applicazioni per la gestione del rendimento, del ribasso dei prezzi e del merchandising e per l’ottimizzazione dei prezzi, in grado di creare modelli utilizzati dai responsabili delle decisioni per comprendere come e quando aumentare o ridurre i prezzi tenendo conto delle condizioni attuali della domanda e dell’offerta; questi tipi di applicazioni sono particolarmente comuni nel caso dei prodotti di base (quali merci deperibili, biglietti aerei, camere di alberghi, capi di abbigliamento e biglietto per eventi sportivi), il cui valore si azzera in un determinato momento. Applicazioni basate su approfondimenti. Le applicazioni basate su approfondimenti Francesco Romeo | 19 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto fanno leva su tecniche statistiche e di data mining per identificare situazioni o comportamenti ”insoliti”. La crescente importanza di queste applicazioni è legata al volume in continuo aumento dei dati dettagliati provenienti da fonti quali clic nelle pagine web e sensori RFID. Ecco alcuni esempi di applicazioni basate su approfondimenti: applicazioni relative alla riduzione e alla distribuzione dei prodotti, che monitorano costantemente sensori e dati RFID per individuare differenze tra la posizione del prodotto ipotetica e quella reale; applicazioni contro le frodi, che monitorano costantemente le transazioni finanziarie per individuare comportamenti “insoliti” che possono essere indice di attività fraudolente; applicazioni antiriciclaggio, che monitorano costantemente il flusso di contante per individuare comportamenti “insoliti” associati a potenziali attività di riciclaggio, ad esempio un numero eccessivo di transazioni di scarso valore realizzate in contanti. Applicazioni basate su benchmark. Le applicazioni basate su benchmark utilizzano al meglio l’analitica che confronta le prestazioni di un’entità rispetto a uno standard di settore, un periodo o un evento precedente. Ecco alcuni esempi di applicazioni basate su benchmark: applicazioni relative alle quote di mercato, che forniscono dati su quote di mercato e portafoglio; ad esempio, le aziende che creano siti web possono fornire dati e analisi sugli investimenti pubblicitari per consentire a inserzionisti e agenzie di confrontare le spese sostenute nel campo del marketing con quelle della concorrenza; applicazioni basate su benchmark competitivo, che mettono a confronto le prestazioni di un’azienda con un’ aggregato di concorrenti o con la media del settore; applicazioni basate su benchmark, che confrontano le prestazioni di una campagna di marketing in corso con quelle di una campagna o di un evento di marketing precedente e/o simile. 20 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.3.2 OPEN BIG DATA “Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia ha luce senza lasciarmi al buio” Cit. Thomas Jefferson in una lettera a Isaac Mac Pherson nel 1813. In realtà, i dati non sono solo big ma possono essere anche open. Gli Open Big Data, cioè la liberazione dei dati delle amministrazioni, rispettano il principio, secondo il quale i dati prodotti dalle istituzioni pubbliche appartengono alla collettività e, pertanto, devono essere resi disponibili, fruibili e riutilizzabili. Alcuni esempi di dati pubblici la cui fruibilità migliorerebbe sensibilmente la vita della comunità sono citati nel rapporto Open Data, Open Society. Da esso deriviamo alcuni ambiti di applicazione: La Geografia: la geografia dei luoghi porta in mente suggestioni di vastità, ricchezza e diversità. Le istituzioni locali avrebbero l'opportunità di pianificare in modo più efficiente le proprie politiche di sviluppo territoriale e urbanistico se, oltre a disporre dei dati che i singoli organi e enti già possiedono, li condividessero fornendo un quadro più esaustivo del territorio, incrociandoli con mappe e visualizzazioni che rilevino aree protette o di interesse artisticoculturale, risorse idriche o forestali, etc. Inoltre, il singolo cittadino potrebbe trarre beneficio dal sapere, per esempio, che la casa che vorrebbe comprare sorge in un'area a rischio idrogeologico. I Trasporti: la conoscenza della disponibilità dei dati sul traffico (la viabilità, il numero stimato di vetture, i lavori in corso, la mobilità etc.) potrebbe recare un miglioramento al traffico urbano e alla progettazione dei trasporti pubblici. Si potrebbe pensare di far dialogare in real time i sistemi di rilevazione installati ai semafori, il sistema GPS sulle vetture piuttosto che su un cellulare, con i database dei vigili urbani, della polizia stradale rendendo i semafori intelligenti, consentendo di facilitare la viabilità al cittadino e favorendo l'azione tempestiva delle forze dell'ordine e del pronto intervento. Allo stesso tempo si potrebbe incentivare il trasporto pubblico fornendo informazioni accurate e costantemente aggiornate, oppure si potrebbero analizzare meglio le fasce orarie in cui è maggiore la domanda del servizio del trasporto pubblico; altre ipotesi e scenari potrebbero emergere dalla condivisione dei dati e dalla comunicazione intelligente tra le istituzioni. Francesco Romeo | 21 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto La Demografia: i dati sulla composizione demografica di una precisa area (la scolarizzazione, la popolazione, l'età, il sesso, il tasso di natalità e di mortalità, etc.) si configurano come una risorsa di una certa importanza e rappresentano il centro propulsore di qualsiasi iniziativa di carattere sociale, ma anche politico. Per esempio, basti pensare quali vantaggi potremmo avere se incrociassimo solo pochi dei tanti indicatori demografici di cui siamo in possesso. Una qualsiasi impresa potrebbe stabilire con maggiore precisione l'opportunità di avviare o meno una determinata attività; un'area con un alto tasso di natalità, la cui popolazione è giovane e in salute, è un luogo maggiormente indicato per la costruzione di una struttura polisportiva con piscine attrezzate anche per il parto in acqua o parchi giochi, piuttosto che di un servizio di riabilitazione per anziani. La Sanità: la salute di un Paese è influenzata anche dallo stato della sanità pubblica e privata. La fruibilità di dati in questo settore permetterebbe di individuare gli sprechi e di ottimizzare le spese e le politiche di gestione del sistema sanitario. La Sicurezza: la vita delle persone spesso dipende anche dalla sicurezza dell'area urbana in cui vivono. Si tratta di un ambito particolarmente sensibile. L'Energia: è importante conoscere i dati ufficiali sul consumo e sulla produzione energetica (così come quelli sull'inquinamento atmosferico, sul diffondersi di malattie, etc.) perché ciò recherebbe un notevole vantaggio per i cittadini e permetterebbe di ridurre gli sprechi. Quasi per ciascuno degli ambiti di applicazione precedentemente analizzati esiste nel mondo un'iniziativa di Open Data. Si tratta di un patrimonio pubblico, un bacino di dati e applicazioni che si accresce ogni giorno grazie alla volontà delle istituzioni e dei governi, ma anche per merito del contributo dei singoli cittadini. Nell'ambito istituzionale la prima iniziativa in materia di Open Data nasce negli Stati Uniti e si chiama data.gov. Questo progetto ha l'obiettivo di accrescere l'accesso pubblico alle banche dati aperte e ad alto valore aggiunto prodotte dal ramo esecutivo del governo federale degli Stati Uniti. Inoltre, data.gov mira a portare il governo a livello di trasparenza senza precedenti nella convinzione che la chiarezza e l'apertura derivanti da una simile iniziativa rafforzino la democrazia e favoriscano l'efficienza del governo. data.gov è un progetto che vuole crescere e basa le sue prospettive di crescita sulla partecipazione e collaborazione del pubblico, sui suoi feedback o sui suggerimenti relativamente ai settori per i quali vorrebbe che il governo pubblicasse e rendesse accessibili i suoi dati. 22 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 1.3.3 BIG DATA NELLA STATISTICA UFFICIALE I vantaggi apportati dai Big Data agli istituiti di statistica ufficiale sono: produzione di nuove variabili, ad esempio (le online sales) non misurate finora; fornitura dati in tempo reale; possibilità di costruire informazioni che aiutano a capire i fenomeni (social data mining), a correggere e validare le informazioni e ad aumentare l'efficienza campionaria; aggiunta di nuova conoscenza attraverso alcuni pattern/cluster (modelli che permettono di raccontare storie e migliorare l'efficienza di certi percorsi); produzione di variabili ausiliarie per stimare meglio e predire certi fenomeni (nowcasting). Alcuni esempi possono essere l'indice di disoccupazione inferito dai profili di attività ottenuti per data mining dei record di telefonia mobile, oppure il calcolo o il monitoraggio di nuovi indicatori di benessere/performance sociale a partire da fonti di Big Data non standard (come social network, telefonia e navigazione satellitare, social media) e dagli acquisti della grande distribuzione (tramite carte di fedeltà). I Big Data, tuttavia, sono suscettibili di problemi di qualità a vari livelli, soprattutto in termini di correttezza, aggiornamento e completezza, affidabilità o reputazione della sorgente. Essi, inoltre, possono presentare problemi legati ai metadati. Un fattore importante in questo contesto è rappresentato dalla convalida dell'affidabilità dei dati. Per esempio, si parla di “fail profile”, un profilo falso raccontato dai social network: questo è un elemento su cui fare attenzione per quanto riguarda la qualità del dato di provenienza e il risultato che si ottiene a valle. I Big Data possono configurarsi come un'opportunità per risolvere i problemi legati alla qualità del dato ovvero: possono risolvere problemi di dati mancanti attingendo all'elevato numero di fonti; possono risolvere problemi di inconsistenza sfruttando la ridondanza delle fonti. Francesco Romeo | 23 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 2. IL PROCESSO DI ANALISI DEI BIG DATA In questo capitolo verrà descritto il processo di analisi dei Big Data. Si mostrerà una panoramica generale del processo di estrazione di conoscenza dai database (KDD) dando maggiore rilievo alla fase di Data Mining. In seguito verrà presentata la nuova figura professionale del data scientist; il capitolo si concluderà affrontando il tema della Privacy by Design. 1 Il Processo KDD 2 Data Mining 3 La nuova figura del Data Scientist 1 4 Privacy by Design nei Big Data Francesco Romeo | 25 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 2.1 IL PROCESSO KDD Tutte le grandi organizzazioni, durante lo svolgimento delle proprie attività, accumulano una gran quantità di dati. Questi grazie al progredire delle tecniche di cattura e immagazzinamento di informazioni, contengono delle risorse, delle informazioni sfruttabili, evidenti o nascoste, con differenti gradi di utilità. Inizialmente l'analisi dei dati era un processo “manuale” e l’analista doveva avere familiarità sia con i dati sia con i metodi della statistica: egli stesso agiva come un sofisticato processore di query, mentre l’ elaboratore elettronico era solo un sostegno per il calcolo. Di fronte alla crescita dimensionale degli archivi di dati ed alla sempre più crescente necessità di elaborarne i contenuti, questo tipo di analisi è risultata lenta, costosa e altamente soggettiva. Di conseguenza, si è costituita ed è cresciuta costantemente una comunità di ricercatori e professionisti interessati al problema dell’analisi automatica di grandi quantità di dati, nota come "Knowledge Discovery in Databases (KDD)”. Gli archivi digitali sono presenti dovunque: banche, industrie, supermercati, attività commerciali etc., e molti processi generano flussi di record che vengono memorizzati in enormi database, talvolta detti Data Warehouse (magazzini di dati). Più propriamente, un Data Warehouse è un database costruito per agevolare l’accesso alle informazioni; tipicamente è alimentato da uno o più database di transazioni e i dati devono essere ripuliti e strutturati per facilitare le query, i sommari e le analisi. Da ciò segue che il problema dell'estrazione di conoscenza da database enormi andrà risolto tramite un processo di elaborazione più complesso, formato da molti passi, che possono andare dalla semplice manipolazione dei dati a sofisticate tecniche di inferenza statistica, di ricerca e di Artificial Intelligence. La tecnologia più recente per affrontare tali 26 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto problematiche è il Data Mining. Il Data Mining sfrutta raffinate analisi statistiche e tecniche di modellazione per scoprire pattern e relazioni nascoste nei database, che i metodi ordinari spesso non individuano. I dati comprendono un insieme di fatti, e il pattern è un’espressione, in qualche linguaggio, che descrive un sottoinsieme di dati (o un modello applicabile a questo sottoinsieme), le associazioni tra essi, le sequenze ripetute o le regolarità nascoste. In definitiva, un pattern indica una struttura o, in generale, una rappresentazione sintetica dei dati. Con il termine “Knowlegde Discovery in Databases”, si indica l’intero processo di scoperta di conoscenza dai dati dei database. Il processo KDD prevede come input i dati grezzi e fornisce come output le informazioni utili ottenute. Le fasi del KDD sono le seguenti: Selezione: i dati grezzi vengono segmentati e selezionati secondo alcuni criteri al fine di pervenire ad un sottoinsieme di dati che rappresentano il nostro target data o dati obiettivo. Risulta abbastanza chiaro come un database possa contenere diverse informazioni che, per il problema in esame, possono risultare inutili; per fare un esempio, se l’obiettivo è lo studio delle associazioni tra i prodotti di una catena di supermercati, non ha senso conservare i dati relativi alla professione dei clienti; è, invece, assolutamente errato non considerare tale variabile, che potrebbe invece fornire utili informazioni relative al comportamento di determinate fasce di clienti, nel caso in cui si voglia effettuare un’analisi discriminante. Francesco Romeo | 27 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Preelaborazione: spesso, pur avendo a disposizione il target data, non è conveniente nè, d’altra parte, necessario analizzarne l’intero contenuto; può essere più adeguato dapprima campionare le tabelle e, in seguito, esplorare tale campione effettuando, in tal modo, un’analisi su base campionaria. Fanno, inoltre, parte di questo stadio del KDD la fase di pulizia dei dati (data cleaning), che prevede l’eliminazione dei possibili errori, e la decisione dei meccanismi di comportamento in caso di dati mancanti. Trasformazioni: effettuata la fase precedente, i dati, per essere utilizzabili, devono essere trasformati. Si possono convertire tipi di dati in altri o definire nuovi dati ottenuti attraverso l’uso di operazioni matematiche e logiche sulle variabili. Inoltre, soprattutto quando i dati provengono da fonti diverse, è necessario effettuare una loro riconfigurazione al fine di garantirne la consistenza. Data Mining: ai dati trasformati vengono applicate una serie di tecniche in modo da poterne ricavare informazione non banale o scontata, bensì interessante e utile. I tipi di dati che si hanno a disposizione e gli obiettivi che si vogliono raggiungere possono fornire un’indicazione circa il tipo di metodo/algoritmo da scegliere per la ricerca di informazioni dai dati. Un fatto è certo: l’intero processo di KDD è un processo interattivo tra l’utente, il software utilizzato e gli obiettivi, che devono essere costantemente inquadrati, ed iterativo nel senso che la fase di Data Mining può prevedere un’ulteriore trasformazione dei dati originali o un’ulteriore pulizia dei dati, ritornando, di fatto, alle fasi precedenti. Interpretazioni e Valutazioni: il Data Mining crea dei pattern, ovvero dei modelli, che possono costituire un valido supporto alle decisioni. Non basta, però, interpretare i risultati attraverso dei grafici che visualizzano l’output del Data Mining, ma occorre valutare questi modelli per capire in che misura questi possono essere utili. E’, dunque, possibile, alla luce di risultati non perfettamente soddisfacenti, rivedere una o più fasi dell’intero processo KDD. 28 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 2.2 DATA MINING La maggior parte delle aziende utilizza strumenti OLAP (On Line Analytic Processing) per eseguire interrogazioni specifiche sui database aziendali. Il Data Mining consente, agli utenti che sfruttano gli strumenti OLAP, di andare oltre i report riassuntivi. Il Data Mining dice perché si sta verificando un certo fenomeno, mentre l'OLAP si limita a dire cosa sta accadendo (si limita a descrivere il fenomeno stesso). Il Data Mining è un processo atto a scoprire correlazioni, relazioni e tendenze nuove e significative, setacciando grandi quantità di dati immagazzinati nei repository, usando tecniche di riconoscimento delle relazioni e tecniche statistiche e matematiche. Occorre tenere presente la grande differenza esistente tra statistica e Data Mining: per le analisi statistiche la fase della trasformazione dei dati è critica poiché alcune metodologie statistiche richiedono che i dati siano linearmente collegati ad una variabile obiettivo, normalmente distribuiti e liberi dagli outlier. I metodi dell'intelligenza artificiale e del machine learning, invece, non richiedono rigorosamente che i dati siano normalmente distribuiti o lineari e alcuni metodi non richiedono neppure che gli outlier siano trattati preventivamente. Gli algoritmi del machine learning hanno la capacità di trattare automaticamente distribuzioni non lineari e non normali, anche se, in molti casi, gli algoritmi lavorano meglio se questi criteri sono verificati. Tuttavia, si può effettuare Data Warehousing anche senza l’applicazione di tecniche di Data Mining. A questo proposito l’uso di tali tecniche si sta diffondendo sempre di più, in quanto abbiamo: un miglior accesso ai dati, oltre che molti più dati a cui accedere; un grande incremento delle capacità di elaborazione; una migliore educazione statistica; grandi cambiamenti nei software, ora più facili e intuitivi da utilizzare. Francesco Romeo | 29 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Il Data Mining trova delle relazioni nei dati, ma non prende decisioni; esso fornisce ai decision-maker le informazioni necessarie a fronteggiare le difficoltà dei mercati competitivi. I fattori critici di successo in un progetto di Data Mining sono la conoscenza del business e l’esperienza maturata nel tempo. Questi fattori si combinano alle migliori informazioni ottenute con il Data Mining creando un processo sinergico che porta a decisioni brillanti e veloci. Il miglior software di Data Mining gestisce autonomamente i dettagli tecnici in modo tale che gli utenti possano concentrarsi sulle decisioni . CRISP è l’acronimo di Cross Industry Standard Process for Data Mining. E' un approccio standard alle analisi di Data Mining che fornisce una struttura per tale processo indipendente dalla tipologia di business nonché una guida ai potenziali problemi aziendali e alle loro soluzioni. Ciò avviene perché lo scopo del modello è quello di rendere l'implementazione di grandi progetti di Data Mining sempre più veloce, più efficiente, più sicura e meno costosa. Una delle peculiarità del modello CRISP-DM è quella di non aver l’obbligo di seguire sistematicamente tutte le fasi e sottofasi che esso propone; infatti, gli analisti possono decidere di osservare un insieme di dati, che presentano tendenze relative o circostanze eccezionali, nell’arco di settimane, mesi e anni, seguendo due politiche di analisi alternative, ovvero le tecniche di Data Mining oppure la completa comprensione dei dati. Il modello si snoda in sei fasi comprendenti sotto-fasi e aspetti elencati di seguito: Business Understanding: letteralmente tradotto “Comprensione del Business”, prevede la determinazione degli obiettivi di Business, attraverso Background, Obiettivi di business e Criteri di successo del business, per poi passare alla valutazione della situazione con inventario delle risorse, requisiti, assunzioni e vincoli, rischi e contingenze, terminologia, 30 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto costi e benefici. Si prosegue con la determinazione degli obiettivi di Data Mining, con obiettivi di Data Mining e criteri di successo del Data Mining. Infine troviamo la produzione del piano di progetto con piano di progetto, valutazione iniziale di strumenti e tecniche. Data Understanding: letteralmente tradotto “Comprensione dei Dati”, prevede la raccolta dei dati iniziali, la loro descrizione, la loro esplorazione e la verifica della loro qualità, tutti opportunamente inseriti in report appositi. Data Preprocessing: letteralmente tradotto “Preparazione dei Dati”, prevede la descrizione della base di dati, la selezione dei dati con annessi i criteri per inclusione ed esclusione, la pulizia dei dati con report, la costruzione dei dati con attributi derivati e record generati, l’integrazione dei dati e, infine, impostazione dati. Modeling: letteralmente tradotto “Modellazione”, prevede la scelta della tecnica di modellizzazione, la generazione del progetto di test e, infine, il progetto di test, la costruzione del modello, con l’impostazione dei parametri, e la descrizione del modello stesso, la valutazione del modello, con una possibile reimpostazione dei parametri. Evaluation: letteralmente tradotto “Valutazione”; in questa sotto fase si valutano i risultati di Data Mining in relazione ai criteri di successo del business e ai modelli approvati, si revisiona il processo e si determinano i passi successivi elencando le possibili azioni e decisioni. Deployment: letteralmente tradotto “Utilizzo”, prevede la Francesco Romeo | 31 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto formazione del piano di utilizzo, del piano di monitoraggio e mantenimento, della produzione del report finale e la presentazione finale, nonché la recensione del progetto, con la presentazione della documentazione dell’esperienza. 32 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 2.3 LA NUOVA FIGURA DEL DATA SCIENTIST Quella del data scientist è stata definita dall'economista Hal Ronald Varian «la professione più sexy del futuro», laddove l'aggettivo “sexy” assume l'accezione di «interessante». La continua crescita dei dati in formato digitale, disponibili nelle moderne organizzazioni, ha fatto emergere il ruolo strategico di una nuova figura professionale che deve avere più competenze. La prima è sapere gestire, acquisire, organizzare ed elaborare dati. La seconda è di tipo statistico, ovvero il sapere come e quali dati estrarre. La terza è il sapere comunicare a tutti, con diverse forme di rappresentazione, cosa suggeriscono i dati. La caratteristica principale di questa figura deve essere la “curiosità”, cioè l’attitudine, tipica di chi utilizza il metodo scientifico, di analizzare in profondità i fenomeni, non fermandosi alla apparenza, e di identificare un insieme di ipotesi da verificare ed esplorare con l’analisi e lo studio dei dati. Da questo punto di vista si può paragonare il lavoro del data scientist a quello del fisico sperimentale che, spesso, deve progettare gli strumenti, condurre gli esperimenti, analizzare i dati ottenuti e presentare i risultati a tutta la comunità scientifica, oltre che ai responsabili delle ricerche. Il data scientist deve avere tre set di skill, ovvero una preparazione informatica molto solida, una buona comprensione degli aspetti tecnologici e, allo stesso tempo, una conoscenza degli aspetti aziendali. Inoltre, ma non di poco conto, il data scientist deve possedere la conoscenza delle problematiche e delle sfide del dominio settoriale (industria, finanza, telecomunicazioni, settore pubblico, etc.) di interesse. Ci sono decine tra atenei e centri studio che offrono formazione specifica. I poli mondiali sono USA e UK, dove nei primi anni del Duemila si erano già create metodologie e procedure. Alle nostre latitudini le aziende cominciano a concepire la necessità di una simile figura e cercano di formarla al proprio interno. Il data scientist lavora con i big data ed è in questa direzione che bisogna muoversi; le anagrafiche sono il primo patrimonio di un'azienda; questo concetto non è ancora del tutto consolidato in Italia, e questo, da solo, spiega già gran parte dell'handicap che abbiamo in materia di scienza dei dati. Francesco Romeo | 33 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 2.4 PRIVACY BY DESIGN NEI BIG DATA La quantità dei dati digitali, come abbiamo visto, cresce a ritmi esponenziali. La gestione dei Big Data pone alcune riflessioni da fare per garantire il rispetto della riservatezza e la protezione dei dati personali. Archivi informatizzati contenenti dati personali sono posseduti dalle Pubbliche Amministrazioni, dalle aziende private, dai media, dai professionisti, dalle associazioni e dalle organizzazioni di vario tipo. La Dr. Ann Cavoukian (Information & Privacy Commissioner Ontario, Canada) presenta così il tema della Privacy by Design: “La Privacy by Design è un concetto che ho sviluppato negli anni ‘90 per far fronte agli effetti sempre crescenti e sistematici delle Tecnologie dell’Informazione e della Comunicazione e dei sistemi di dati delle reti su larga scala. La Privacy by Design anticipa la visione che il futuro della privacy non può essere assicurato unicamente dal processo di conformità con il sistema normativo; piuttosto, la garanzia della privacy deve costituire idealmente un modo di operare di default di un’organizzazione. Inizialmente, l’attuazione delle tecnologie per rafforzare la privacy (Privacy-Enhancing Technologies - PETs) era vista come la soluzione. Oggi, realizziamo che è richiesto un approccio più sostanziale – che estende l’uso delle PET alle PETS Plus – con un approccio di valore aggiunto (di massima funzionalità), e non di valore zero. Questo è il Plus nelle PET Plus: valore aggiunto, non se/o di valore zero (una falsa dicotomia).” La Privacy by Design, quindi, propone qualcosa veramente interessante ed innovativo: il processo di conformità relativo alla sicurezza della privacy non può essere assicurato unicamente tramite il sistema normativo; piuttosto, la garanzia della privacy 34 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto deve costituire idealmente il modo di operare di default di un’organizzazione. Privacy by Design si riferisce alla filosofia e all'approccio di considerare la privacy nelle specifiche di progettazione delle varie tecnologie. La Privacy by Design trova spazio nella trilogia di applicazioni: Tecnologia dell’informazione; Pratiche commerciali responsabili; Progettazione strutturale e infrastrutture di rete. In particolare, con riferimento alla tecnologia dell’informazione, si afferma, come già evidenziato, che la tecnologia non può costituire una minaccia per la privacy, ma un ausilio per la riduzione dei rischi. Per le pratiche commerciali responsabili, viene evidenziato come la privacy non va interpretata come un onere, ovvero un costo che appesantisce l'attività imprenditoriale, ma, al contrario, come un vantaggio per una migliore competitività. Infine, l’elemento della progettazione delle strutture assume rilevanza poiché molto spesso siamo costretti a vedere esposti i dati personali in aree pubbliche mal progettate come, ad esempio, le sale d’attesa degli ospedali o degli uffici, ove è possibile che vengano, illecitamente, divulgate le informazioni personali. Fermo il contesto rappresentato dai tre punti precedenti, la Privacy by Design si fonda su sette principi: Proattivo non reattivo (prevenire non correggere): l’approccio alla Privacy by Design (PbD) è caratterizzato da interventi di tipo proattivo piuttosto che reattivo. Esso anticipa e previene gli eventi invasivi della privacy prima che essi accadano. La PbD non attende che i rischi della privacy si concretizzano né offre rimedi per risolvere le violazioni della privacy una volta occorse: essa ha lo scopo di prevenirli prima che questi si verifichino. In breve, la Privacy by Design viene prima del fatto e non dopo. Privacy come impostazione di default: possiamo tutti essere certi di una cosa - la regola di base! La Privacy by Design cerca di realizzare il massimo livello di privacy assicurando che i dati personali siano automaticamente protetti in un qualunque sistema IT o di pratica commerciale. Se un individuo non fa nulla, la sua privacy rimane ancora intatta. Francesco Romeo | 35 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Non è richiesta alcuna azione da parte dell’individuo per proteggere la propria privacy: essa è incorporata nel sistema per default. Privacy incorporata nella progettazione: la PbD è incorporata nella progettazione e nell’architettura dei sistemi IT e delle pratiche commerciali. Non è agganciata come un’aggiunta, dopo il fatto. Il risultato è che la privacy diventa un componente essenziale per la realizzazione del nucleo funzionale. La privacy è integrata nel sistema, senza diminuirne la funzionalità. Massima funzionalità − Valore positivo, non valore zero: la Privacy by Design mira a conciliare tutti gli interessi legittimi e gli obiettivi con modalità di valore positivo “vantaggioso per tutti”, non attraverso un approccio datato di valore zero, dove sono inutili i compromessi. La Privacy by Design evita la pretesa di false dicotomie, come la privacy contro la sicurezza, dimostrando che è possibile avere entrambi. Sicurezza fino alla fine − Piena protezione del ciclo vitale: la Privacy by Design, essendo stata incorporata nel sistema prioritariamente rispetto all’acquisizione del primo elemento di informazione, si estende in modo sicuro attraverso l’intero ciclo vitale dei dati - solidi interventi di sicurezza sono essenziali per la privacy, dall’inizio alla fine. Questo assicura che tutti i dati siano conservati con cura, e poi distrutti in modo sicuro alla fine del processo, in maniera opportuna. Pertanto, la Privacy by Design garantisce un’intera e sicura gestione delle informazioni, fino alla fine. Visibilità e trasparenza − Mantenere la trasparenza: la Privacy by Design cerca di assicurare che tutti i soggetti interessati, qualunque sia la prassi aziendale o tecnologia utilizzata, è, di fatto, operativa secondo promesse ed obiettivi stabiliti, soggetti a verifica indipendente. I suoi componenti e le sue operazioni restano visibili e trasparenti sia agli utenti sia ai fornitori. Si ricorda di fidarsi ma di verificare. Rispetto per la privacy dell’utente − Centralità dell’utente: al di là di tutto, la Privacy by Design richiede ai progettisti e agli operatori di considerare prioritari gli interessi degli individui offrendo efficaci interventi di default della privacy e informazioni appropriate, nonché potenziando opzioni di facile utilizzo per l’utente. Si raccomanda la centralità dell’utente. Come si può notare, si tratta di una vera e propria rivoluzione della privacy che non concerne 36 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto soltanto le misure tecniche per assicurare adeguata sicurezza ai dati personali, ma una serie di concetti innovativi che prescindono dall’assolutizzare la protezione dei dati personali per giungere alla considerazione che la sicurezza delle informazioni è insita nel concetto stesso di privacy. La 32 ma Conferenza Internazionale dei Garanti della Privacy (Gerusalemme, 27-29 Ottobre 2010) ha definito il concetto di Privacy by Design proposta dalla Dr. Ann Cavoukian come una pietra miliare. L’articolo 23 della proposta di regolamento del Parlamento Europeo e del Consiglio, concernente la tutela delle persone fisiche con riguardo al trattamento dei dati personali e alla libera circolazione di tali dati (Gennaio 2012), prende spunto da quanto sostenuto dalla Dr. Ann Cavoukian. Nello specifico : “Al momento di determinare i mezzi del trattamento e all’atto del trattamento stesso, il titolare mette in atto adeguate misure e procedure tecniche e organizzative tali da assicurare la conformità al presente regolamento nonché la tutela dei diritti dell’interessato”, e ancora: “Il titolare del trattamento mette in atto meccanismi per garantire che siano trattati, di default, solo i dati personali necessari per ciascuna finalità specifica del trattamento e che, in particolare, la quantità di dati e la durata della loro conservazione non vadano oltre il minimo necessario per le finalità perseguite. In particolare, detti meccanismi garantiscono che, di default, non siano resi accessibili dati personali a un numero indefinito di persone”. Francesco Romeo | 37 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Si chiede , quindi , che vengano rispettati due principi: principio della “privacy by design”, cioè protezione fin dalla progettazione, che si sostanzia nell’attuare, fin dal principio, tutte le necessarie misure tecnicoorganizzative al fine di scongiurare i rischi cui sono esposti i dati personali; il collegato principio della “privacy by default”, cioè protezione a prescindere, che si realizza attraverso l’essenzialità del trattamento sotto ogni punto di vista. 38 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 3. NOSQL In questo capitolo si parlerà del movimento NoSQL e verranno mostrati i principi fondanti di questo tipo di tecnologia. Verrà fatto un confronto tra i database tradizionali (RDBMS), che utilizzano il modello relazionale, e i database che sfruttano il modello NoSQL. Si concluderà presentando le varie tipologie di DBMS NoSQL che sono state sviluppate. 1 Cosa si intende per NoSQL 2 RDBMS vs. NoSQL 3 I Principi Fondanti del NoSQL 1 4 Tipologie di DBMS NoSQL Francesco Romeo | 39 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 3.1 COSA SI INTENDE PER NOSQL Negli anni novanta Internet ha permesso a molte aziende di ampliare il proprio bacino di utenza portando online un’enorme quantità di contenuti e servizi; di conseguenza, la quantità dei dati presenti in rete è aumentata esponenzialmente. Per questo motivo i sistemi informatici, per poter elaborare le informazioni, hanno avuto bisogno di una maggiore potenza di calcolo, mentre per i dati , sempre più numerosi, è stata necessaria una migliore organizzazione. Negli ultimi anni sono aumentate le aziende operanti esclusivamente online fornendo contenuti sempre più numerosi e strutturati. Dunque, la disponibilità e affidabilità dei servizi, insieme alla capacità di gestire una grande mole di contenuti, fortemente correlati, sono diventati punti di estrema importanza. Infatti, capita sempre più spesso che le aziende rendono più stringenti gli SLA (Service Level Agreement) traducendo, a livello contrattuale, le aspettative dell’utente finale, ovvero che il servizio sia sempre disponibile, facilmente accessibile (sia come tempi di risposta che come usabilità) e possibilmente attendibile. La tendenza è diventata quella di garantire maggiormente il servizio o il contenuto rispetto alla correttezza delle informazioni o alla consistenza dei dati, fatta eccezione nei casi di servizi sotto protocollo sicuro (ad esempio il settore bancario, l’e-governance o alcune fasi di sicurezza dei dati nell’ecommerce). I sostenitori di questo nuovo approccio sono stati Google e Amazon, con i loro sistemi proprietari (rispettivamente, BigTable e Dynamo) ma da subito, soprattutto nell’ambito dei social network, si sono sviluppati sistemi di gestione equiparabili e diversi dai database 40 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto relazionali (RDBMS). A questi nuovi sistemi è stato dato il nome di DBMS NoSQL (NoSQL). Con il termine NoSQL si raggruppano varie tecnologie di persistenza dei dati, anche molto diverse fra loro. L'acronimo stesso è piuttosto vago e soggetto a varie interpretazioni, di cui la più rilevante e accettata sembra essere “Not Only SQL”. Per stabilire un punto di partenza, considereremo l'interpretazione fornita da Pramod e Fowler in NoSQL Distilled: “Un insieme poco definito di database principalmente open-source, principalmente sviluppati nel XXI secolo, principalmente che non fanno uso di SQL” Per completare questa occorre aggiungere che: non utilizzano il modello relazionale; non hanno (solitamente) uno schema esplicito, ovvero specificato utilizzando un qualsiasi linguaggio formale; la maggior parte di essi e stata progettata da subito per funzionare “bene" in cluster. Francesco Romeo | 41 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 3.2 RDBMS VS. NOSQL Mentre la caratteristica principale dei sistemi relazionali è quella di mantenere una forte consistenza fra i dati, i database NoSQL garantiscono, in ogni circostanza, alti livelli di disponibilità dei dati ed una elevata velocità di recupero, a discapito della consistenza dell’informazione. Per i database relazionali di parla di proprietà acide (ACID) mentre per i database NoSQL si passa a parlare di proprietà base (BASE). Le proprietà ACID indicano le caratteristiche che devono avere le transazioni. Nello specifico: Atomicity – Atomicità: l’esecuzione della transazione deve essere o totale o nulla; quindi, o si riescono ad eseguire tutte le operazioni della transazione o questa viene disfatta; un errore prima del commit deve causare l’annullamento di tutte le operazioni eseguite dall’inizio della transazione. Consistency - Coerenza: la transazione trasforma la base di dati da uno stato consistente (cioè che riflette lo stato reale del mondo che la base di dati deve modellare) ad un altro stato ancora consistente. La consistenza richiede che l’esecuzione della transazione non violi i vincoli di integrità definiti sulla base di dati. Isolation - Isolamento: ogni transazione è indipendente dalle altre. Il suo fallimento non deve provocare danni ad altre transazioni. Durability - Persistenza: al commit della transazione, le modifiche apportate dalla stessa non dovranno essere perse in nessun modo. Le proprietà BASE sono state introdotte da Eric Browers, autore del Teorema di CAP. Questo teorema afferma che un sistema distribuito può fornire contemporaneamente solo due fra le seguenti garanzie: Consistency (Consistenza): tutti i nodi vedono gli stessi dati nello stesso momento; 42 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Availability (Disponibilità): il sistema risponde a tutte le richieste; Partition tolerance (Tolleranza al Partizionamento): il sistema continua ad operare anche se alcune delle sue parti rimangono isolate dalle altre in modo arbitrario (ovvero, se il grafo che rappresenta il sistema è disconnesso). In verità, poiché si sta trattando di sistemi distribuiti, è praticamente impossibile garantire una tolleranza completa al partizionamento, perché è sempre possibile che il collegamento fra due nodi venga meno. La scelta da compiere, dunque, si riduce a: rinunciare alla consistenza in favore della disponibilità; rinunciare alla disponibilità in favore della consistenza. Questa scelta non è binaria (“tutto o niente”), ma sono possibili varie sfumature. E possibile rinunciare ad un po' di consistenza per poter avere un sistema sempre disponibile, ovvero che sia in grado di dare sempre una risposta (anche se magari utilizzando dati non aggiornati), e viceversa. L’acronimo BASE indica le caratteristiche che un sistema deve avere sottostando al teorema di CAP, ovvero, esso deve garantire la disponibilità delle informazioni (Basically Available ), tuttavia non deve garantire la consistenza ogni istante (Soft State), ma alla fine deve diventare consistente (Eventual consistency) se le attività di modifica ai dati cessano. Quindi, le inconsistenze sono transitorie. Quando la disponibilità dell’informazione è prioritaria, è possibile lasciare che l'applicativo scriva su un nodo senza che si riceva l’autorizzazione alla propagazione di queste scritture sugli altri nodi in cui ci si aspetta venga replicato. Questo fa si che si raggiungano alti livelli di disponibilità (non ci sono tempi di atte- Francesco Romeo | 43 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto sa) a fronte di quella che definiamo “eventual consistency”, ovvero la capacità del sistema di saper sistemare le informazioni sui vari nodi, col passare del tempo, in maniera asincrona. Rick Cattell, nell’articolo “Scalable SQL and NoSQL Data Stores” elenca le proprietà comuni alla maggioranza dei sistemi di tipo NoSQL: possibilità di replicare e distribuire partizioni di dati su più server; possibilità di scaling orizzontale per “operazioni semplici”; un’ interfaccia o protocollo di chiamata semplificato, a differenza delle implementazioni SQL basate su binding ; un modello di concorrenza più debole rispetto a quello garantito dai DBMS che supportano tutte le proprietà ACID; un uso efficiente della memoria e di indici distribuiti; una capacità di aggiungere dinamicamente nuovi attributi. L’ aspetto più evidente, quando si confrontano DBMS relazionali e NoSQL, è che i primi appartengono ad uno standard de facto: i risultati di richieste effettuate tramite opportune query possono essere visualizzati in ambienti standard. Per i DBMS NoSQL, invece, non si ha una vera e propria standardizzazione; pertanto, ogni implementazione ha una interfaccia utente propria e, quindi, da conoscere ed imparare. La scalabilità orizzontale è una caratteristica di particolare importanza quando si parla di Big Data. Con questo termine si intende la possibilità di distribuire i dati e le operazioni su macchine fisiche differenti, senza memoria o dischi rigidi in comune, al fine di parallelizzare le operazioni e ottenere un minore quantitativo di dati da elaborare per singolo server. Nonostante sia possibile aumentare le prestazioni anche tramite scaling verticale (aumentando il numero di core e processori di una singola macchina), l’approccio distribuito permette di ridurre i costi, 44 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto utilizzando macchine assemblate, e di superare i limiti hardware dati dal quantitativo massimo di core e memoria installabili su un singolo mainframe. La scalabilità ha assunto un ruolo particolarmente importante con l’avvento dei social network dove le operazioni più comuni sono semplici ma molto frequenti e bisogna tener conto di milioni di utenti che operano contemporaneamente. Una distribuzione dei dati agile e automatica è una caratteristica di grande importanza per un DBMS non relazionale. Francesco Romeo | 45 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 3.3 I PRINCIPI FONDANTI DEL NOSQL Uno dei motivi che ha spinto verso l’utilizzo dei DBMS NoSQL è che, in alcuni progetti, l'integrità dei dati non è prioritaria, nè tantomeno obbligatoria. In questo contesto accade che: Computer e sistemi di memorizzazione predisposti a garantire performance e sicurezza delle informazioni di altissimo livello possono essere sostituiti con sistemi dotati di caratteristiche di più facile accesso, sia in termini di reperibilità del materiale che di costo. L'accesso ai dati diventa molto più rapido: non dovendo sempre garantire una consistenza degli stessi, le letture e le scritture delle informazioni possono essere eseguite senza attendere particolari eventi. Quasi tutti i DBMS NoSQL sono stati progettati sin dal principio per funzionare da subito in modalità distribuita, ovvero su più server. E’ possibile fare un elenco dei modelli di distribuzione: Single Server: questa modalità è la più semplice, nonché la meno problematica. Con un solo server di database; infatti, gli unici problemi da risolvere sono relativi alla gestione dei conflitti in lettura e scrittura fra i vari client. Ambiente Multi-Nodo: viene creato un ambiente multi-nodo distribuito a cui viene dato comunemente il nome di anello (o ring o cluster); quest’ultimo lo si può ampliare o ridurre aggiungendo o eliminando dei nodi. Replica delle informazioni : la replicazione dei dati è uno stratagemma utilizzato con diversi scopi. Il primo è che, distribuendo gli stessi dati su più server, aumenta la loro disponibilità e l'affidabilità dell'insieme. Se un nodo cade, infatti, ci sono gli altri che possono sostituirlo mentre viene riparato e rimesso online. Il secondo scopo è quello di migliorare le performance in lettura. Avere molti nodi con gli stessi dati permette una parallelizzazione praticamente lineare delle letture, che possono essere distribuite in modo del tutto trasparente ai client. Inoltre, sfruttando il principio di località dei dati, è possibile erogare i dati dal nodo più vicino al client che li ha richiesti, migliorando tempi di risposta e velocità di tra- 46 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto sferimento, alleggerendo, al contempo, il traffico “globale" dell'infrastruttura. Sharding dei dati : questa modalità è la più complessa; essa prevede, infatti, il partizionamento dei dati in base a vari criteri sui vari nodi, mantenendo gli stessi vantaggi della replicazione (affidabilità, prestazioni in lettura) e aggiungendone di nuovi. Il principale vantaggio dello Sharding è che, per come è utilizzato nei database aggregate-oriented, ha un effetto positivo anche sulle scritture, oltre che sulle letture. I dati inviati dai client, infatti, vengono scritti sul primo nodo disponibile, con tempi di risposta simili alla modalità single server. I DBMS NoSQL usano dei sistemi per la gestione della concorrenza che permettono una elevata efficienza a livello di prestazioni e tempi di risposta, ma non garantiscono un'altrettanto livello di sicurezza dal punto di vista della correttezza assoluta dei dati. Questo perché essi sono stati creati per lavorare in ambienti dove vengono effettuate molte letture e scritture contemporaneamente. Il Multi-Version Concurrency Control permette di mantenere un controllo della concorrenza basato su continui versioning dei dati. Quando è necessario modificare un documento precedentemente letto, il sistema confronta la versione al tempo della lettura con quella appena prima che la modifica sia stata apportata: se le due versioni sono diverse significa che nel frattempo un altro processo ha modificato il documento. Il concetto legato al multiversioning è il seguente: ogniqualvolta un documento viene modificato, viene generata una copia (una nuova versione) dello stesso. Un vantaggio che si può evidenziare è che queste non Francesco Romeo | 47 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto sono altro che nuove versioni e non modifiche, tutto a vantaggio della velocità; tuttavia, produrre continuamente nuove versioni significa occupare spazio ed è, quindi, inevitabile che non potranno essere mantenute tutte le versioni create. Quando si parla di consistenza si intende il recupero delle informazioni tale che queste siano corrette. Si parla di stretta consistenza nel caso in cui tutte le letture successive ad una scrittura debbano garantire che i dati siano tali a come la scrittura li ha impostati; quindi, o le letture che seguono la scrittura avvengono nello stesso nodo o deve essere utilizzato un protocollo distribuito ad hoc che permetta il verificarsi di questa condizione. Questo tipo di consistenza, ricordando il teorema di CAP, non può essere garantita insieme a disponibilità e fault-tolerance dei dati; infatti, è necessario che si rinunci al partizionamento dei dati o alla disponibilità costante dell’informazione. Si parla di “eventual consistency”, invece, nel caso in cui le letture possano ritornare dei valori non aggiornati all’ultima scrittura effettuata; anche in questo caso, però, il sistema prima o poi farà in modo che questo valore venga correttamente propagato. Appartengono a questa categoria più tipi di consistenza: Read Your Own Write (RYOW) Consistency: un client che effettua una scrittura può vedere le letture successive già coerenti, indipendentemente dal server su cui la scrittura e le letture successive siano effettuate. Questo non vale per gli altri client che eseguono letture successive alla scrittura del client in oggetto. Session Consistency: simile alla RYOW con la differenza che le letture successive ad una data scrittura risultano corrette solo all’interno di un certo ambito, ad esempio limitata- 48 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto mente ad un nodo. Casual Consistency: se un client legge una Versione 1, e scrive conseguentemente una nuova versione, tutti i client che leggono la nuova versione proposta, in precedenza leggevano anche la Versione 1. Monotonic Read Consistency: se un dato client legge un valore per una certa informazione allora, da questa lettura in poi, accedendo con ogni altro client su questa informazione, non sarà possibile leggere valori antecedenti. Nei DBMS NoSQL le tipologie di versioning che vengono implementate sono legate al fatto che le informazioni vengono distribuite su più nodi. Le varie operazioni di lettura e scrittura possono avvenire su nodi diversi e non può, quindi, essere garantita una consistenza stretta. Tra i vari sistemi di versioning adottati, quelli che esamineremo più nel dettaglio sono: Vector Clocks; Optimistic Locking. Il Vector Clocks permette di avere un ordinamento di versioni tra le varie operazioni effettuate sui nodi. Si pensi di avere N nodi, ciascuno con un suo clock interno, che può benissimo essere un contatore che viene incrementato quando serve. Per ogni operazione effettuata su un nodo, sia essa di lettura o di scrittura, viene incrementato il valore del clock per il nodo stesso. Ogni nodo memorizza al suo interno un vettore (da cui Vector Clocks) che rappresenta lo stato dei vari contatori sui singoli nodi. Ad ogni operazione eseguita su un nodo, questo vettore, modificato il valore del nodo in cui l'operazione è avvenuta, verrà propagato sui nodi restanti. Dunque, si generano sequenze che possono garantire di per sè la coerenza su tutti i nodi. Se ciò non è possibile sarà un applicativo a dover sbrogliare la situazione e decidere quale nodo definire coerente rispetto ad altri. Nell’Optimistic Locking un unico clock viene salvato per ogni blocco di dati. Questo tipo di versioning è stato approfondito dai fautori del progetto Project-Valdemort con la conclusione che in scenari distribuiti dove le macchine vengono aggiunte continuamente ed altre disattivate o rotte improvvisamente, il sistema risulta poco funzionale. I sistemi di partizionamento permettono di distribuire le informazioni sul cluster che costituisce il DBMS NoSQL. Ci sono più tipi di partizionamento; di seguito ne elenchiamo alcuni: Francesco Romeo | 49 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Consistent Hashing; Memory Cached ; Clustering ; Separating Reads from Writes; Sharding . Di questi, quelli normalmente più usati sono il Consistent Hashing e lo Sharding . Il Consistent Hashing viene usato per la distribuzione automatica dei dati tra i nodi; esso garantisce che i dati siano ugualmente distribuiti attraverso il cluster e che l’aggiunta o la rimozione di un nodo in esso possa avvenire automaticamente, limitando il numero di spostamenti dei dati. La stessa funzione di hashing usata per i dati viene adottata anche per le macchine del cluster; questo permette di calcolare direttamente dal nodo contattato dall’applicazione quale nodo contattare per scrivere o leggere dei dati, senza dover passare da un cluster di server dedicati atti a recuperare l'informazione desiderata. Il Consistent Hashing garantisce, anche, un sistema di replica basato su una scelta di progetto dove si fissa un valore K, ovvero un valore numerico che determina quante repliche devono essere mantenute per i dati. 50 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Lo Sharding è un sistema di distribuzione delle informazioni effettuato sui nodi appartenenti al cluster; questa distribuzione viene dettata da un processo iniziale in cui avviene la definizione della chiave di sharding. Supponiamo di avere 10 nodi su cui distribuire i dati; possiamo pensare ad una chiave di Sharding tale che il modulo della divisione per 10 della chiave primaria (numerica) di ogni dato permetta di decidere dove posizionare il dato stesso. Questo sistema di distribuzione dei dati necessita di macchine dedicate a questo compito, oltre a quelle mantenenti le informazioni. Francesco Romeo | 51 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 3.4 TIPOLOGIE DI DBMS NOSQL Ogni modello di DBMS NoSQL è stato ispirato da quelli sviluppati ed implementati da Amazon e Google: Amazon con Dynamo, Google con BigTable. Le necessità dei due colossi sono state dettate dal bisogno di mantenere disponibili e scalabili le informazioni in alcuni ambiti che possono andare, ad esempio, dalla pagina dei libri più venduti a quello della lista dei desideri dei singoli utenti. Si tende a raggruppare i DBMS NoSQL in quattro categorie fondamentali: Key-Value Distribuiti; Document Oriented; Column Oriented; Graph Oriented. Tuttavia, alcuni DBMS NoSQL possono avere caratteristiche che appartengono a più di una di queste categorie. La caratteristica principale dei modelli Key-Value Distribuiti è, sicuramente, la semplicità delle strutture dati, che sono “appiattite" in coppie chiave-valore. In sostanza, l'utilizzatore vede la base di dati come una grossa hash table contenente oggetti di vario tipo (principalmente valori primitivi, come numeri o stringhe), accessibili tramite chiave primaria. Questa soluzione rende possibili altissime performance (tipicamente in lettura), facilitando, al tempo stesso, il lavoro di distribuzione del carico su più macchine (partizionamento o Sharding) per realizzare una scalabilità quasi lineare. L'indirizzamento di tipo hash, infatti, consente di ottenere un costo di accesso molto basso, tipicamente compreso fra O(1) (analisi ammortizzata nel caso di un fattore di riempimento non troppo ele- 52 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto vato) e O(log(n)), dove n è uguale al numero di dati presenti nello storage. Il vantaggio di un sistema di questo tipo è l’altissima concorrenza e, quindi, la disponibilità delle informazioni, a discapito della consistenza dei dati. Questi DBMS garantiscono replica e fault-tolerance nonché, in molti casi, anche persistenza dei dati su disco e non solo in RAM. La categoria dei Document Oriented raggruppa quei database che permettono di effettuare delle ricerche, oltre che sulle chiavi, anche sui valori legati ad esse: questo perché i valori sono rappresentati da strutture in formati pensati proprio a tal fine, ovvero XML o JSON. Abbiamo a che fare con un aggregato che può avere una struttura anche molto profonda, con più livelli gerarchici e raggruppamenti in collezioni di vario genere (liste, insiemi, mappe, etc.). Quasi tutte le implementazioni permettono, inoltre, di inserire dei riferimenti ad altri documenti rendendoli molto simili nel funzionamento ai cosiddetti database a oggetti. A differenza dei Key-Value Distribuiti, in questo caso, il fine ultimo non è quello di garantire un’altissima concorrenza, ma quello di fornire un sistema di interrogazione sui dati con performance elevate permettendo la memorizzazione di grossi quantitativi di informazioni. Questi tipi di DBMS sono molto apprezzati per la grandissima flessibilità, che permette di ottenere modelli dei dati complessi senza penalizzare le performance. Per questo motivo sono molto utilizzati per la realizzazione di siti web, per l’e-commerce, la gestione documentale, i web service e i giochi multiplayer massivi. I DBMS che appartengono alla categoria Column Oriented introducono il concetto di Column -Family. Una Column-Family è un’informazione che deve essere presente nello schema (a sua volta, quindi, necessario) e che serve a raccogliere informazioni di un gruppo; un po' quello che viene fatto per la definizione delle colonne per un DBMS relazionale, ma relativo ad un gruppo di colonne, non ad una singola colonna. Ogni Column-Family raggruppa un insieme di colonne appartenenti ad una stessa tipologia di informazione; si pensi, ad esempio, ad una Column-Family “anagrafica” con colonne costituenti nome, cognome, età e sesso. La Column-Family deve essere presente nello schema, ma è ,altresì, Francesco Romeo | 53 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto vero che le colonne che la costituiscono non devono essere definite a priori, ovvero ogni record può avere informazioni diverse per la propria Column-Family “anagrafica”. Supponiamo, ad esempio, di avere una singola unità informativa (quella che in un RDBMS chiamiamo tupla o riga) e che per essa siano definite N Column-Family nello schema: se una o più informazioni non sono disponibili per l'unità informativa in questione, allora le Column-Family (contenitori di colonne), semplicemente non presenteranno al loro interno le colonne per le quali non si ha la valorizzazione. Quindi, se il valore per la chiave esiste, la colonna è presente ed è nella ColumnFamily corretta; se il valore non esiste, la colonna semplicemente non esisterà e la ColumnFamily ne sarà priva. Riassumendo, le caratteristiche principali sono: flessibilità delle colonne appartenenti ad una Column-Family; partizionamento orizzontale legato alla Column-Family; una data Column-Family non può essere “spezzata”, ma ogni record appartenente ad essa può trovarsi su un server diverso; uso di particolari file di log per permettere un più veloce sistema di storage; mancanza di un supporto transazionale. Questi DBMS hanno grande successo nel campo dei Big Data, potendo fornire un modello logico organizzato e flessibile. Inoltre, proprio per la loro maggiore adattabilità a modelli di dati ricchi, sono sempre più spesso utilizzati al posto dei DBMS relazionali in campi come: siti web ad alto traffico, web service, backend di applicazioni “mobile”. Infine, grazie alla facilita con cui si possono partizionare i dati, e alla conseguente possibilità di ottimizzare moltissimo le scritture, spesso i Column-Family store sono utilizzati per memorizzare log applicativi, statistiche per analytics e monitoring, audit di vario genere, etc. Le precedenti tipologie focalizzano l’attenzione sulla scalabilità dei dati e sulla flessibilità delle informazioni; esse hanno, però, il problema di non poter contenere dati troppo connessi. Da questa nuova esigenza prende luce l’idea dei NoSQL orientati ai grafi. Possiamo immaginare questa categoria come una Document Oriented con la clausola che i documenti sono anche adibiti a rappresentare le relazioni. Strutture di questo tipo permettono il passaggio da un nodo 54 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto ad un altro (graph traversal) e sono, quindi, molto utilizzati nel campo del Social Network. I DBMS Graph Oriented permettono di estrarre, in tempi ragionevoli e in maniera molto elegante, dati di grandissimo valore per applicazioni quali: classificazione tramite algoritmi di vicinanza e clustering; analisi di flussi di vario genere: navigazione in siti web e in social network, ecologia, urbanistica, etc. prolazione degli utenti e suggerimenti per amicizie o acquisti. Per questo motivo sono sempre più indispensabili quando si rende necessaria un'analisi delle relazioni fra i dati, più che i dati stessi. Qui di seguito riassumiamo le caratteristiche principali che contraddistinguono le tipologie viste. Francesco Romeo | 55 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 4. HADOOP In questo capitolo si parlerà del framework Hadoop per l’analisi distribuita di grandi insiemi di dati. Verranno trattati i suoi sottoprogetti fondamentali: MapReduce e HDFS. L’ultimo paragrafo del capitolo riguarderà l’innovativo YARN. 1 Cosa è Hadoop 2 MapReduce 3 HDFS 1 4 YARN Francesco Romeo | 57 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 4.1 COSA E’ HADOOP Uno dei principi chiave per operare con i Big Data è l’immagazzinamento di tutti i dati originali, indipendentemente da quando questi saranno utilizzati. Di conseguenza, col tempo, gli archivi possono assumere dimensioni molto elevate. Anche se nulla impedisce di realizzare l’archiviazione dei dati tramite un classico DBMS relazionale, spesso questa scelta porta a investire risorse economiche importanti sia in termini computazionali, sia di storage. Come è già stato mostrato nel capitolo precedente, questi e altri motivi hanno portato alcuni colossi dell’innovazione, tra cui Google e Facebook, ad adottare strumenti diversi dagli RDBMS per gestire i loro dataset: una tra le più diffuse e utilizzate tecnologie open source create per questo scopo è Apache Hadoop. Hadoop nasce come progetto per l'analisi distribuita di grandi insiemi di dati attraverso un semplice modello di programmazione. Hadoop è un framework concepito per scrivere facil- 58 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto mente applicazioni che elaborano grandi quantità di dati in parallelo, su cluster di diverse dimensioni in modo affidabile e tollerante ai guasti. L'architettura, realizzata in Java, permette di scalare da pochi server fino a migliaia di sistemi. Ciascun server contribuisce con le proprie risorse di calcolo e la propria capacità di memorizzare i dati; quindi, aggiungendo server, chiamati anche nodi, è possibile far crescere un sistema Hadoop in modo quasi lineare. Benché non vi siano restrizioni specifiche per i nodi, di norma, vengono utilizzati dei sistemi x86 standard; ciò permette di tenere sotto controllo i costi complessivi della soluzione e, allo stesso tempo, di beneficiare della crescita di tali architetture in termini computazionali. Hadoop è in grado di gestire tutti i tipi di dati provenienti da sistemi diversi: strutturati, non strutturati, file di log, immagini, file audio, documenti, comunicazioni e-mail, e tutto quello che si può pensare. Anche quando i diversi tipi di dati sono stati memorizzati in sistemi non correlati, è possibile scaricare il tutto in un cluster Hadoop prima ancora di sapere come si potrebbe trarre vantaggio in futuro. L'alta affidabilità, e dunque la protezione dei dati, viene realizzata non basandosi sulle caratteristiche hardware dei server, ma bensì a livello software. Sono le librerie di Hadoop che si occupano di identificare se e quali componenti presentano un malfunzionamento, intervenendo per ripristinare le operazioni, ad esempio creando una nuova copia dei dati contenuti in un server. E' evidente che quando si trattano enormi quantità di dati, le cui dimensioni sono dell’ordine dei Petabyte, le soluzioni di backup tradizionali non sono utilizzabili ed è, quindi, proprio la distribuzione dei dati su nodi differenti la chiave per salvaguardare le informazioni, anche di fronte ad un guasto di uno dei nodi. In particolare, Hadoop adotta come standard la scrittura dello stesso dato in tre locazioni differenti. Fra i sottoprogetti di Hadoop, quelli di maggiore importanza, e che saranno trattati nei paragrafi successivi, sono: MapReduce, framework per la realizzazione di applicazioni con approccio MapReduce; HDFS, un file system distribuito secondo le linee guida dettate da GFS (Google File System). Francesco Romeo | 59 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 4.2 MAPREDUCE Il paradigma MapReduce definisce una strategia per eseguire l'elaborazione dei dati su sistemi distribuiti e con elevato parallelismo. Lo spunto che ha dato vita a MapReduce è stato un lavoro di Google pubblicato nel 2004. Nel documento, che costituisce il fondamento tecnologico del modello si afferma che: “MapReduce è un modello di programmazione cui è stata associata un’implementazione per elaborare e generare insiemi di dati di grandi dimensioni. I programmi scritti che adottano questo stile funzionale vengono automaticamente gestiti in una logica parallela ed eseguiti su cluster di macchine a tecnologia commodity. Il sistema runtime si occupa nel dettaglio del partizionamento dei dati di input, pianificando l’esecuzione del programma attraverso una serie di macchine, gestendone gli eventuali guasti e la comunicazione che ha luogo tra esse. Tutto questo permette a programmatori senza alcuna esperienza in sistemi paralleli e distribuiti di utilizzare con molta semplicità le risorse di un grande sistema distribuito”. Il modello di MapReduce è abbastanza semplice. L’idea è quella di suddividere la logica applicativa in due funzioni basilari, ovvero: la funzione Map; la funzione Reduce. La funzione Map legge un insieme di record da un file di input, svolge le operazioni di filtraggio e trasformazioni desiderate, dopodiché produce una serie di record di output nella forma chiave-valore. Mentre il programma Map produce questi record, la funzione Reduce utilizza, come ingresso, l’output prodotto dalla fase di Map. L’input viene elaborato in modo che elementi con la stessa chiave vengono fusi tra loro secondo una logica che dipende dall’elaborazione stessa. Il risultato della fase di Reduce è una lista di valori, ciascuno dei quali rappresenta la fusione di elementi con la stessa chiave. Un modello di programmazione del genere deve essere supportato da un framework; ciò è indispensabile in quanto consente di gestire, in modo trasparente, le operazioni che non incidono sulla logica applicativa del sistema realizzato dall’utilizzatore. In questo modo, l’utente del 60 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto framework è tenuto a sviluppare solamente le funzioni Map e Reduce, con gli unici vincoli di generare delle coppie intermedie nella fase di Map e di fonderle, secondo una certa logica, nella fase di Reduce. È molto importante sottolineare i vantaggi di questo paradigma: Sia la funzione Map che la funzione Reduce possono essere eseguite in parallelo, dividendo lo spazio dei valori in più porzioni esaminate individualmente da diversi nodi della rete. È possibile iniziare a eseguire la funzione Reduce sull'output parziale delle funzioni Map prima che queste ultime terminino completamente l'esecuzione. Le funzioni Map e Reduce non richiedono, di base, di gestire strutture dati con dimen- Francesco Romeo | 61 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto sioni variabili, poiché emettono i dati man mano che vengono generati e iterano sui valori usando dei cursori generati esternamente; quindi possono agire su quantità arbitrarie di dati senza il rischio di esaurire la memoria di lavoro. Potrebbe sorgere l'esigenza di interrogare database o usare librerie particolari all'interno delle due funzioni; in tal caso è necessario disporre di soluzioni adeguate per non creare colli di bottiglia che vanificherebbero la parallelizzazione In caso di rottura o disconnessione di un nodo è possibile rieseguire il compito originariamente assegnato ad esso senza riavviare l'intera operazione. Questo richiede sistemi di monitoraggio e gestione dei compiti. Nella nomenclatura del MapReduce si utilizza il termine “Job” per indicare un intero ciclo di applicazioni di Map e Reduce fino alla fine dell'elaborazione e il termine “Task” per indicare una singola esecuzione di una delle due funzioni effettuata da un nodo. Il sottoprogetto MapReduce di Hadoop, anch’ esso scritto in linguaggio Java, è un’implementazione del modello MapReduce. Gli input vengono prelevati localmente in ogni nodo, vengono elaborati dalla funzione Map e vengono prodotte le coppie chiave-valore intermedie. Una volta che tutte le fasi di Map sono state completate, interviene il processo Shuffle che invia ad ogni nodo, attraverso la rete, i dati da processare durante il Reduce. Tale operazione è necessaria per raggruppare elementi che hanno la stessa chiave, in modo che confluiscano allo stesso processo di Reduce. Nella fase successiva i processi di Reduce elaborano i dati ricevuti e forniscono degli output, che vengono scritti localmente nel nodo stesso. È da notare che la fase di Shuffle è l’unica in cui avviene uno scambio di dati attraverso la rete. Durante gli altri stadi del processo, per minimizzare la banda necessaria, le informazioni vengono prelevate localmente. Considerando, ad esempio, la fase di Map in un determinato nodo, i dati elaborati sono quelli che si trovano fisicamente nei dischi del nodo stesso. Altro fatto da notare è che le operazioni esterne alla procedura Map e alla procedura Reduce e quelle di comunicazione fra queste due fasi sono realizzate dal framework in modo trasparente. 62 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Gli elementi fondamentali del task nel suo complesso sono, quindi: Input file: è dove le informazioni da elaborare vengono inizialmente depositate. Tipicamente sono archiviati nel file system distribuito HDFS. In linea di principio, soprattutto per le peculiarità di HDFS, si tratta di file di grandi dimensioni, di tipo arbitrario: linee di testo, file binari, record multi-linea, etc. InputFormat: questo elemento indica come i file in input debbano essere suddivisi e letti durante il processo di mapping. Più specificatamente, InputFormat è una classe che fornisce delle funzionalità necessarie alla suddivisione e alla lettura dei file in ingresso. Essa consente le seguenti attività: selezione degli oggetti o dei file da impiegare come input; definizione di InputSplit, classe che indica le modalità di suddivisione di ogni file in ingresso; realizzazione di un Factory per gli oggetti RecordReader, necessari alla lettura del contenuto dei file in input. Hadoop fornisce degli InputFormat di base. Sono disponibili, inoltre, delle classi astratte dalle quali è possibile ottenere gli InputFormat necessari alla propria applicazione; un esempio è la classe astratta FileInputFormat, impiegata in tutti i casi in cui l’input sia costituito da file. InputSplits: è il modulo che descrive l’unità di lavoro di un task di Map all’interno dell’intero processo MapReduce. L’impiego di un determinato InputSplit indica al framework come il file in ingresso debba essere suddiviso. Tutte le classi che derivano da FileInputSplit suddividono, per default, i file in chunk di 64MB ciascuno. È possibile, comunque, implementare una classe che suddivida l’ingresso secondo una logica adatta ai dati che vengono trattati. La suddivisione dell’input in blocchi indipendenti permette, ai vari processi di Map, l’elaborazione parallela di ciascuno degli Split del file. RecordReader: la classe RecordReader è la responsabile della lettura dei dati provenienti dal singolo Split e della successiva conversione in chiave-valore, adatta alla lettura da parte del Mapper. Il RecordReader è invocato ripetutamente sull’input finché l’intero InputSplit è stato totalmente consumato. Ogni invocazione del RecordReader corri- Francesco Romeo | 63 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto sponde ad una chiamata del metodo map() del Mapper. Mapper: il Mapper è la classe in cui viene implementata la prima parte della logica applicativa dell’intero programma MapReduce. Data una chiave ed un valore, il metodo map() emette una o più coppie chiave-valore come risultato dell’elaborazione effettuata. Questi dati vengono inoltrati verso i Reducer. È importante notare che, per ogni InputSplit, viene istanziato un nuovo Mapper. Per l’elaborazione di un intero file sono, quindi, in azione più istanze dello stesso Mapper. Tale caratteristica è particolarmente importante considerando che lo stesso file si trova, con molta probabilità, distribuito su diversi nodi. Questo comportamento permette di diminuire la banda necessaria per lo scambio di informazioni; infatti, ogni istanza di Mapper elabora dati presenti localmente, cioè sul nodo in cui essa è stata creata. 64 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Partition & Shuffle: man mano che i task di Map terminano la loro elaborazione, cominciano ad essere disponibili i dati intermedi. Questi vengono inviati ai vari nodi del sistema, in base alla chiave; tale operazione prende il nome di Shuffle ed è l’unica fase dell’intero processo in cui c’è scambio di dati attraverso la rete. L’insieme di tutte le chiavi viene partizionato e ad ogni nodo di Reducing vengono associati uno o più elementi della partizione (quindi, un certo set di chiavi). Conseguentemente, il framework farà in modo di inviare, ad ogni Reducer, tutte le coppie intermedie la cui chiave fa parte del set assegnato ad esso. Sort: considerando che ogni task di Reduce è responsabile del Reducing dei valori associati a determinate chiavi intermedie, la fase di sort si preoccupa di ordinare tali valori in base alla chiave, prima di presentarli al Reducer. Tutto ciò viene fatto automaticamente dal framework Hadoop. Reduce: è dove viene implementata l’altra parte di logica applicativa del programma. Per ogni task di Reduce viene istanziato un Reducer; per ciascuna chiave assegnata al Reducer viene effettuata una singola chiamata al metodo reduce(). A tale metodo viene fornito un iteratore per navigare fra i valori associati alla stessa chiave. OutputFormat: i valori elaborati ed emessi dal Reducer vengono scritti su file di output; il formato di scrittura di tali file dipende dall’istanza di OutputFormat impiegata nel Reducer. Come per InputFormat esistono, in Hadoop, delle classi predefinite; è, comunque, possibile crearne di proprie specializzando le classi astratte fornite dal framework. RecordWriter: OutputFormat fornisce un factory di oggetti RecordWriter. La corrispettiva classe viene impiegata per effettuare la scrittura vera e propria sui file di output. Combiner: si tratta di una fase opzionale. Questa operazione viene eseguita successivamente alle operazioni di Map e prima dell’invio dei risultati intermedi verso i relativi Reducer. Se utilizzata, è utile per ridurre la banda impiegata, in quanto, prima di inviare i dati, effettua una sorta di mini Reduce sui risultati locali prodotti dal nodo; solo dopo aver terminato quest’ultimo task effettua l’invio. Come detto, il framework è scritto in linguaggio Java; esso, pertanto, accetta programmi MapReduce scritti nativamente in Java. Hadoop fornisce, però, la possibilità di utilizzare altri linguaggi di programmazione per scrivere il codice MapReduce. Francesco Romeo | 65 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 4.3 HDFS . HDFS è un file system distribuito ideato per soddisfare requisiti quali affidabilità e scalabilità; esso è in grado di gestire un numero elevatissimo di file, anche di dimensioni ragguardevoli, attraverso la realizzazione di cluster che possono contenere migliaia di nodi. HDFS presenta i file organizzati in una struttura gerarchica di cartelle. Dal punto di vista dell’architettura, un cluster è costituito dai seguenti tipi di nodi: NameNode: è l’applicazione che gira sul server principale. Gestisce il file system ed, in particolare, il namespace, cioè l’elenco dei nomi dei file e dei blocchi (i file, infatti, vengono divisi in blocchi da 64/128MB) e controlla l’accesso ai file eseguendo le operazioni di apertura, chiusura e modifica dei corrispettivi nomi. Inoltre, determina come i blocchi dati siano distribuiti sui nodi del cluster e la strategia di replica che garantisce l’affidabilità del sistema. Il NameNode monitora anche che i singoli nodi siano in esecuzione senza problemi e, in caso contrario, decide come riallocare i blocchi. Tale applicazione distribuisce le informazioni contenute nel namespace su due file: Il primo è fsimage, che costituisce l’ultima immagine del namespace. Il secondo è un log dei cambiamenti avvenuti al namespace a partire dall’ultima volta in cui il file fsimage è stato aggiornato. Quando il NameNode parte, effettua un merge di fsimage con il log dei cambiamenti così da produrre uno snapshot dell’ultima situazione. DataNode: può rappresentare una o più applicazioni che girano su altri nodi del cluster, generalmente una per nodo, e gestiscono fisicamente lo storage di ciascun nodo. Tali applicazioni eseguono, logicamente, le operazioni di lettura e scrittura richieste dai client e gestiscono fisicamente la creazione, la cancellazione o la replica dei blocchi di dati. SecondaryNameNode: noto anche come CheckPointNode, si tratta di un servizio che aiuta il NameNode ad essere più efficiente. Infatti, si occupa di scaricare periodicamente il file fsimage e i log dei cambiamenti dal NameNode e di unirli in un unico snapshot che viene, poi, restituito al NameNode. 66 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto BackupNode: è il nodo di failover e consente di avere un nodo simile al SecondaryNameNode sempre sincronizzato con il NameNode. Come è stato affermato in precedenza, i file sono organizzati in blocchi, chiamati chunk, da 64 o 128 MB, e sono ridondati su più nodi. Sia la dimensione dei blocchi, sia il numero di repliche possono essere configurate per ogni file. Le repliche, distribuite tra i vari DataNode, sono utilizzate sia per garantire l’accesso a tutti i dati, anche in presenza di problemi a uno o più nodi, sia per rendere più efficiente il recupero degli stessi. Quindi, HDFS è strutturato a blocchi e ogni file è suddiviso in blocchi di dimensione fissata. Questi ultimi sono archiviati all’interno delle macchine, dette DataNode, che fanno parte del cluster. I file possono, quindi, essere composti da un notevole quantitativo di blocchi che, non necessariamente, sono memorizzati all’interno della stessa macchina. Tale metodologia comporta un carico maggiore in fase di accesso ai file, ma, d’altra parte, permette la memorizzazione di oggetti di dimensioni considerevoli, cosa altrimenti di difficile realizzazione. In HDFS le richieste di lettura dati seguono una politica relativamente semplice: in particolare, avvengono scegliendo i nodi più vicini al client che effettua la lettura e, ovviamente, in presenza di dati ridondati risulta più semplice soddisfare tale requisito. Inoltre, occorre precisare che la creazione di un file non avviene direttamente attraverso il NameNode. Infatti, il Francesco Romeo | 67 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto client HDFS crea un file temporaneo in locale e, solo quando tale file supera la dimensione di un blocco, è preso in carico dal NameNode. Quest’ultimo crea il file all’interno della gerarchia del file system e identifica un DataNode e i blocchi su cui posizionare i dati. Successivamente DataNode e blocchi sono comunicati al client HDFS che provvede a copiare i dati dalla cache locale alla sua destinazione finale. È possibile affermare che quando vengono trattati file di grandi dimensioni, HDFS è molto efficiente. Invece, quando devono essere trattati file di dimensioni inferiori al blocco, è molto inefficiente; questo perché i file utilizzano spazio all’interno del namespace, che coincide con l’elenco dei file mantenuti dal NameNode, che ha un limite dato dalla memoria del server che ospita il NameNode stesso. Se HDFS contenesse troppi file associati ad una dimensione molto 68 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto inferiore al singolo blocco, genererebbe un riempimento del namespace. Questo problema viene risolto dagli archivi Hadoop che compattano molti piccoli file in file più grandi ai quali è possibile accedere dal sistema in parallelo e senza necessità di espanderli. E’ importante notare che i diversi servizi di DataNode e Worker MapReduce possono girare sullo stesso server fisico, rendendo molto veloce lo scambio di dati tra i due. Un server centrale chiamato JobTracker coordina le elaborazioni dei Worker e distribuisce i programmi MapReduce lanciati dagli utenti. I TaskTracker sono i servizi che eseguono l’algoritmo MapReduce vero e proprio e scambiano dati con i DataNode. Prima di lanciare un Job MapReduce, l’utente deve caricare in HDFS i file di input necessari. All’avvio del Job, ad ogni Mapper viene assegnata una partizione dei dati di input presenti su HDFS che, molto spesso, risulta di competenza del DataNode presente sulla stessa macchina fisica del TaskTracker, perché Hadoop cerca di ottimizzare l’esecuzione secondo criteri di località dei dati. Inizialmente, i TaskTracker chiamano la funzione map() specificata dal programmatore su ogni singola coppia chiave-valore presente nei file di input. I risultati delle map() vengono, poi, “bufferizzati” o memorizzati su file temporanei locali. Successivamente, nella fase Shuffle, le coppie chiave-valore vengono inviate ai Reducer per poter essere ordinate e raggruppate per chiave. Al termine dello Shuffle, tutti i valori corrispondenti a una certa chiave saranno stati inviati allo stesso Reducer. Viene, quindi, richiamata la funzione reduce(), fornita dal programmatore, per ogni chiave diversa, che procede ad emettere le coppie chiave valore finali. Tipicamente, i risultati finali vengono scritti separatamente su diversi file in HDFS e vengono utilizzati per un successivo Job MapReduce, oppure vengono restituiti all’utente dopo essere stati concatenati. Mentre il numero di Mapper è pari al numero di partizioni di dimensione fissa in cui sono divisi i file di input, il numero di Reducer non è vincolato e può essere specificato dal programmatore o lasciato scegliere al sistema. Oltre alla map(), Hadoop supporta due ulteriori funzioni, setup() e cleanup(), che, se sovrascritte dal programmatore, vengono richiamate, rispettivamente, alla creazione del Mapper e al termine delle chiamate a map(). Francesco Romeo | 69 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 4.4 YARN Hadoop 2.0 è una completa ristrutturazione della piattaforma Hadoop 1.0 ed è retrocompatibile con i Job di MapReduce scritti per Hadoop 1.0. L’evoluzione rende Hadoop 2.0 più vicino ad una vera piattaforma distribuita in grado di gestire i Big Data e compatibile con qualsiasi tipo di applicazione di data management. Rispetto alla versione precedente, l’architettura più complessa permette maggiori gradi di libertà e un maggior controllo delle risorse disponibili sul cluster. L’ambiente di cluster management e gestione delle applicazioni, che in Hadoop 1.0 non aveva un nome, anche perché c’era solo MapReduce, in Hadoop 2.0 si chiama YARN. In sostanza, i principali cambiamenti sono i seguenti: HDFS è sostituito con HDFS2, che introduce funzionalità evolute da file system distribuito come la possibilità di effettuare snapshot, di far collaborare tra loro più cluster HDFS e di mettere in alta affidabilità il NameNode. A differenza di Hadoop 1.0 dove si partiva dal concetto di Job MapReduce, in YARN si parla di applicazioni. Un’applicazione YARN è qualsiasi tipo di applicazione che possa sfruttare un sistema distribuito o parallelo. MapReduce è una di queste possibili applicazioni, ma non l’unica. Quindi, YARN implementa anche MapReduce, ma lascia allo sviluppatore la libertà di scrivere qualsiasi tipo di applicazione distribuita. 70 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto L’architettura fisica è sempre a due livelli, ovvero: Il Resource Manager, che rappresenta il master del sistema distribuito che contiene, a sua volta, uno Scheduler e un Application Manager. Quest'ultimo è il componente che negozia con i Node Manager le risorse per lanciare le applicazioni sui nodi del cluster. Il Node Manager, in esecuzione su ogni nodo di calcolo del cluster escluso il Resource Manager, che gestisce le risorse locali del nodo e crea dei container; questi sono, in pratica, delle sendbox dove vengono fatte girare le applicazioni. Con Hadoop 1.0 si parlava di Mapper e Reducer. In questo caso non c’è un ruolo specifico: un nodo di calcolo è solo un nodo di calcolo. Dal momento che YARN è un puro e semplice ambiente di esecuzione per applicazioni distribuite, ogni applicazione deve essere auto contenuta, cioè deve essere in grado di lanciare le varie copie dei Job in parallelo, ricevere i risultati delle sottoelaborazioni, combinarli e restituirli al client. YARN non si occuperà di cosa faccia l’applicazione, ma solo di assegnare ad essa le risorse sui nodi del cluster. Le applicazioni sul cluster YARN presentano il seguente funzionamento: l’utente scrive la propria applicazione, che prende il nome di Application Master, e, tramite il client YARN, Francesco Romeo | 71 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto richiede al Resource Manager la possibilità di installare l’Application Master sul cluster. Il Resource Manager richiede a un nodo del cluster la creazione di un container per eseguire l’Application Master. Il container è una sandbox con un determinato ammontare di risorse RAM e CPU che limitano l’utilizzo, da parte dell’applicazione, per evitare di bloccare il nodo. L’Application Master viene, quindi, mandato in esecuzione sul container ottenuto con ID=O. Una volta in esecuzione, il Master si moltiplica, richiedendo, a sua volta, al Resource Manager, tramite le apposite API di YARN, altri container su altri nodi su cui lanciare le varie copie dell’applicazione distribuita. Ogni replica dell’applicazione viene lanciata, quindi, in un container e comunica con l’Application Master secondo quanto definito nel codice. L’Application Master, a sua volta, invia segnali di heartbeat al Resource Manager per indicare di essere ancora vivo e funzionante. Il Resource Manager si occupa di gestire le richieste di container da parte dei vari Application Master in esecuzione sul cluster. L’allocazione è dinamica, tramite lo scheduler, cioè ogni Application Master si troverà ad avere a disposizione più o meno container a seconda di quanto il cluster ha a disposizione. Il client, a questo punto, comunica direttamente con il suo Application Master per avere i risultati dell’esecuzione dell’applicazione, di nuovo a seconda di come è scritto il codice, e YARN non interviene su tali comunicazioni. Un esempio di un’applicazione YARN è proprio MapReduce. In questo caso l’Application Master è il JobTracker mentre le varie repliche lanciate sui vari container sono i vari TaskTracker Mapper o Reducer. MapReduce è un Application Master già disponibile in YARN, in modo da mantenere un minimo di retrocompatibilità con Hadoop 1.0, anche se essa non è, però, sempre garantita. Per le aziende che pensano di adottare un cluster Hadoop al posto dei vecchi Data Warehouse sarebbe buona cosa partire già da Hadoop 2.0 non dando tanto peso alla retrocompatibilità e cercando di capire bene quali applicazioni di analisi o gestione dei dati possano beneficiare di una esecuzione distribuita. Come già detto, il valore di YARN è la flessibilità che sta nella sua capacità di eseguire qualsiasi tipo di applicazione distribuita, non solo MapReduce. Un altro punto di forza per Hadoop 2 e YARN è, sicuramente, la capacità di elaborare dati in tempo reale (stream processing), a differenza di MapReduce, limitato esclusivamente al batch processing. E proprio le mutate necessità dell’utenza, le cui esigenze di stream processing sono aumentate sensibilmente negli ultimi tempi, avrebbero portato Google all’abbandono di MapReduce in favore di Cloud Dataflow, in grado di combinare stream e batch processing. 72 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 5. CASSANDRA, MONGODB, HBASE In questo capitolo verranno trattati tre dei più importanti DBMS NoSQL utilizzati dai progettisti software, rispettivamente Cassandra, MongoDB e HBase. Verranno presentate le caratteristiche peculiari di ognuno di essi e si procederà ad una valutazione comparativa degli stessi. 1 Cassandra 2 MongoDB 3 HBase 1 4 Confronto tra i DBMS NoSQL trattati Francesco Romeo | 73 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 5.1 CASSANDRA Cassandra è un DBMS NoSQL, open source, nato inizialmente come progetto interno a Facebook per poi diventare, nel marzo 2009, parte del progetto Incubator di Apache. Da quel momento anche altre compagnie iniziarono ad usarlo, tra le quali Twitter, Netflix e Cisco. Cassandra appartiene alla famiglia dei DBMS Column Oriented fornendo, tramite il concetto di Column-Family, una versione estesa del metodo Key-Value store, costruito su una struttura Column Oriented; esso, inoltre, introduce una struttura aggiuntiva, ovvero le Super ColumnFamily. Tutto in Cassandra si potrebbe riassumere in una struttura ricorsiva, a quattro o cinque livelli, basati sul concetto di chiave-valore: Column-Family: è una struttura, forse la più complessa, che funge da contenitore delle colonne. La Chiave: è l'entità principale per mezzo della quale Cassandra può recuperare i dati contenuti in una Column-Family. La chiave deve essere univoca a livello di ColumnFamily, può essere generata applicativamente e può essere un numero, una stringa, una data nel formato timestamp o un generico UUID. Tuttavia, Cassandra supporta anche altri tipi di dati. Colonna: all’interno di una Column-Family trovano posto una o più coppie chiave-valore. L’unione di una chiave con il suo relativo set di colonne è chiamato Riga. Attraverso queste tre entità Cassandra gestisce i dati. Occorre considerare anche le seguenti, ulteriori, entità: 74 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto KeySpace: è l'unita informativa di più alto livello per Cassandra, associabile ad un intero DBMS di un modello relazionale; deve essere creato prima di poter effettuare qualsiasi operazione. Esso conterrà quindi tutte le singole tabelle le quali erediteranno gli attributi definiti sul KeySpace che le contiene. Questi attributi sono essenzialmente tre: il Replication factor, la Replica placement strategy, (indicanti quante copie del dato si vuole tenere nella rete e il modo in cui si voglia distribuire queste copie), e le ColumnFamily, paragonabili alle tabelle di un DBMS relazionale ed appartenenti ad uno e un solo KeySpace. Super Column: è un aggregato di Column-Family. Non sono altro che colonne il cui campo value contiene un array di colonne. Questo DBMS rispetta le proprietà di Partitioning e Availability rispetto a quanto detto nel Capitolo 3 riguardo al CAP Theorem. I nodi, anche se non comunicanti tra loro, rendono sempre disponibile la possibilità di scrivere e leggere i propri dati, lasciando poi decidere all'utente quali politiche di merge adottare nel momento in cui la comunicazione tra nodi torni stabile. Cassandra utilizza la tecnica del Consistent Hashing in cui i nodi della rete formano un anello; ogni nodo è gerarchicamente uguale agli altri. Poiché Cassandra è stato ideato e pensato per contesti in cui è presente un elevato dinamismo della rete, questa tecnica permette di ridurre al minimo la quantità di dati da dover “rimappare” al variare della quantità di nodi presenti. L'architettura di Cassandra è Shared Nothing; quindi, non ci sono configurazioni master-slave Francesco Romeo | 75 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto o simili, permettendo di avere un sistema no-single-point-of-failure, cioè in grado di essere disponibile anche dopo la caduta di un qualsiasi nodo della rete. Per individuare quali sono i nodi responsabili di una determinata chiave, il client può contattare un qualunque nodo che diventerà il coordinatore della richiesta. Il bilanciamento del carico è fortemente dipendente dal tipo di partizionamento che è stato configurato per il cluster. Tutte le informazioni topologiche sono memorizzate nel servizio di Snich che mappa gli IP ai Rack e ai data center definendo come i nodi sono raggruppati. Ogni nodo di uno stesso cluster deve utilizzare lo stesso Snich. Essendo Shared Nothing, Cassandra rende persistenti i dati solo in locale, senza utilizzare un servizio di file system distribuito. I nodi Cassandra hanno un modulo di scrittura, nelle operazioni di write, che salva i commit su un file di log e su una struttura in-memory, che viene salvata su disco in maniera asincrona una volta raggiunta una dimensione soglia. Le scritture su disco avvengono in un formato indicizzato per la lettura basata su chiave, aggiungendo anche indici sulle Column-Family e sulle colonne. All'aumentare dei file su disco, al fine di ottimizzare la gestione delle risorse su quest’ultimo dispositivo, un processo in background esegue compressione e accorpamento. Le operazioni di read sono il risultato della visione unificata tra le informazioni in-memory e quelle su disco. Nella versione base di Cassandra le chiavi vengono distribuite in maniera uniforme, senza contare le reali risorse hardware delle macchine fisiche. Cassandra usa suddividere il data center in diversi anelli e sposta i nodi al fine di migliorare l'utilizzo delle risorse disponibili. Nella configurazione iniziale di Cassandra è possibile selezionare due strategie di partizionamento. La prima, casuale, è il RandomPartitoner (RP), che distribuisce le coppie chiave-valore con il vantaggio di avere un buon bilanciamento dei dati ma con lo svantaggio di dover contattare diversi nodi per ricostruire una riga. Diversamente, è possibile designare un ordinamento che preserva l'ordine, OrderPreservingPartitioner (OPP), distribuendo le coppie in modo tale che le stesse chiavi non siano distanti tra loro. Per quanto riguarda la disposizione dei nodi nel cluster, la creazione di un singolo anello è una soluzione comunemente utilizzata, soprattutto per la sua semplicità implementativa. È possibile, comunque, disporre, in caso si voglia riservare particolare attenzione alla distribuzione fisica dei dati, di più anelli cooperanti tra loro, soluzione in cui ovviamente tutti i nodi sono considerati ancora uguali. La possibilità di avere una rete multicluster viene utilizzata spesso per la replicazione dei dati, aumentando l’affidabilità dell'intero sistema. 76 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Per verificare il corretto funzionamento della rete e controllarne l'integrità, Cassandra utilizza un protocollo di tipo GOSSIP, basato sulla distribuzione casuale e continua dell'informazione da un nodo all'altro, quest'ultimo scelto casualmente dal primo. Proprio per la semplicità strutturale della ring, l'elasticità dell'intero anello viene gestita in modo facile e completamente automatico. Quando un nodo si aggiunge al cluster, calcola un token casuale per trovare la sua posizione all'interno dell'anello e l'intervallo di chiavi di cui deve essere responsabile. Tali informazioni vengono memorizzate sia in locale che su un servizio di sincronizzazione distribuito. Una volta entrato nella rete, il nodo inizia a cercare indirizzi degli altri, sia dalle configurazioni locali che dal servizio distribuito, ed annuncia ad essi la propria presenza, lanciando il protocollo GOSSIP, che porterà l'intera rete sulla nuova membership. Dopodiché avviene la riassegnazione/migrazione dei dati da un nodo all'altro in base al nuovo assegnamento dei token. Nel caso in cui un nodo viene tolto dalla rete o non riesce ad essere raggiungibile, i nodi rimanenti si occuperanno di distribuire tra loro i dati del nodo rimosso, riassegnando, anche in questo caso, i token per un più equilibrato bilanciamento del DBMS. I nodi della rete Cassandra provano a identificare se un nodo è attivo o meno utilizzando un meccanismo di failure detector, in cui non si determina in maniera booleana il fallimento di un nodo, ma se ne determina un livello di sospetto. Tramite questo meccanismo si ottiene Francesco Romeo | 77 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto un'ottima accuratezza e una buona velocità nel reagire ai possibili cambiamenti della rete. Tutti i moduli che permettono a una macchina di entrare in una rete Cassandra sono scritti in Java e operano su un software in cui lo scambio di messaggi utilizza il protocollo UDP per le operazioni di sistema, e il TCP per rispondere alle richieste del client. La replicazione, in un DBMS, consiste nel creare una copia del dato originale, permettendo di disporre dei dati anche nel momento in cui un nodo presenti degli errori. Cassandra crea tante copie del dato originale quante ne sono state definite tramite l'attributo Replication factor, del Keyspace nel quale si sta lavorando. Le copie sono recuperabili in qualunque momento dal DBMS, garantendo la disponibilità dei dati anche nel caso di malfunzionamento del nodo contenente i dati originali. Le copie ricoprono, inoltre, un ruolo di controllo di correttezza e consistenza che può avere impatti anche molto rilevanti riguardo alle prestazioni. Esse possono essere distribuite sui vari nodi in accordo a due principali strategie tra cui scegliere, ovvero la Simple Strategy o la Network Topology Strategy. La prima distribuisce i dati seguendo l'ordine dell'anello: se, ad esempio, si vuole creare una singola copia del dato originale, 78 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto memorizzato nel nodo numero due, la copia andrà collocata nel prossimo nodo seguendo la rete, vale a dire nel nodo numero tre. Si segue, all'aumentare del Replication factor, la circolarità dell'anello fino a quando non si ha la memorizzazione di tutte le copie. Con la seconda strategia, invece, vengono distribuiti i dati in base alla conoscenza della rete, dando priorità alla distribuzione su vari anelli poiché ci si aspetta che nodi appartenenti allo stesso anello abbiano più probabilità di fallire rispetto ai nodi inseriti in anelli diversi, tenendo in considerazione la vicinanza fisica delle macchine. Cassandra sceglie un modello Eventual Consistency, facendo decidere al client che tipo di consistenza debba essere utilizzata. Occorre stabilire quanti nodi devono confermare l'avvenuta operazione, prima che questa possa essere considerata conclusa, permettendo, inoltre, di controllare periodicamente la consistenza tra tutte le copie del dato richiesto presenti nella rete. Si può attribuire il valore ONE nel caso in cui , per considerare la transazione riuscita, è necessaria la conferma da parte di un solo nodo , TWO, se occorre la conferma di due nodi, e così via; esistono, infine, altre possibilità, quali ANY per l'attesa di tutti i nodi della rete, o QUORUM, che prevede di effettuare una votazione tra i nodi dell’anello. Francesco Romeo | 79 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 5.2 MONGODB MongoDB è divenuto il più utilizzato DBMS NoSQL grazie alla sua estrema facilita di installazione e manutenzione. Questa semplicità non impedisce, però, di ottenere ottime prestazioni da questo DBMS. Grazie ad una campagna di vendita aggressiva e ad un supporto continuo, oltre alla fornitura di API in molti linguaggi di programmazione, continua la sua scalata verso le prime posizioni tra i DBMS più usati, anche più di alcuni DBMS relazionali. Scritto in C++ è orientato alla velocità e scalabilità, pur mantenendo un buon livello di consistenza. Può essere usato anche per memorizzare e distribuire file binari di grandi dimensioni, come immagini o video. Questo DBMS mira a colmare l'enorme distanza tra la velocità e la scalabilità tipica dei DBMS chiave-valore con le ricche funzionalità dei DBMS relazionali. MongoDB è un DBMS Document Oriented; pertanto l'unita fondamentale sono i documenti, in formato BSON (Binary JSON, che è una estensione del formato JSON con il supporto a tipi aggiuntivi), equivalenti alle singole tabelle di un DBMS relazionale, ma molto più espressivi. I documenti sono tutti identificati da una chiave speciale ed univoca (ID). Occorre aggiungere anche il concetto di Collection che rappresenta un insieme di documenti. La possibilità di innestare documenti o di avere delle referenze tra essi rende molto potente, flessibile e dinamico questo modello. Infatti, nei DBMS NoSQL classici il valore memorizzato viene trattato come un'informazione binaria e l'applicazione sovrastante gestisce la struttura dei dati. Per quanto riguarda il CAP Theorem, MongoDB utilizza le proprietà di Partitioning e Consistency. I dati non sono disponibili nel momento in cui il nodo principale, detto primario, non risulta disponibile Occorre, quindi, aspettare che essi vengano recuperati. La replicazione in MongoDB avviene creando un replica set. Questo è un gruppo di nodi in cui, tramite una votazione interna al set, uno di questi viene eletto come primario, mentre gli altri vengono catalogati come secondari. Questi ultimi ricevono i commit log e li utilizzano per aggiornare i propri dati, memorizzando solo copie esatte degli stessi dati contenuti nella macchina primaria. I commit log possono essere scritti solo dai nodi primari. Nel caso in cui la macchina primaria non dovesse essere più funzionante viene sostituita con una delle secondarie, scelta tramite una votazione effet- 80 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto tuata dall'intero gruppo. Quindi, mentre la macchina primaria può eseguire sia operazioni di scrittura che di lettura, le secondarie possono servire solo per operazioni di lettura. Di conseguenza, MongoDB risulta essere particolarmente efficace in applicazioni che fanno uso intensivo di operazioni di read. Di default MongoDB permette, comunque, la sola lettura sul nodo primario, attribuendo ai nodi secondari una funzione finalizzata solo al recupero dati in caso di guasto. Un replica set è vincolato ad avere una sola macchina primaria e al massimo fino a sei macchine secondarie, a cui possono essere aggiunte fino a cinque macchine che entrano in funzione solamente durante la fase di votazione. Le macchine dedicate a questa funzione sono denominate arbiter e, al contrario delle macchine secondarie che possono diventare primarie, non cambiano mai il proprio stato. Si noti che, al contrario di Cassandra, questo sistema permette fino ad un massimo di sette replicazioni, limitazione dovuta al numero di macchine secondarie implementabili in un replica set. Tutti i nodi che compongono una implementazione di MongoDB comunicano attraverso un protocollo denominato Wire Protocol, che è sostanzialmente un protocollo TCP/IP semplificato. Un messaggio è costituito da un contenitore con un header al cui interno sono descritti il tipo di operazione da eseguire, la lunghezza del messaggio, il nome della collezione sulla quale eseguire la richiesta e un documento, generalmente in JSON, rappresentante l'informazione. Un altro messaggio scambiato è l’heartbeat request, richiesta inviata ogni due secondi tra ogni macchina per verificare lo stato del cluster. Altra interessante funzione di tale richiesta è quella di verificare che il nodo primario possa raggiungere la maggioranza degli altri nodi. Nel caso in cui ciò non risulti, il nodo si autosqualifica come primario della rete, procedendo a far partire una votazione tra i membri del cluster per una nuova elezione. Francesco Romeo | 81 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto Per distribuire i dati ed eseguire il partizionamento di questi sui diversi nodi della rete, MongoDB utilizza il processo detto Sharding. Ogni shard, il cui numero non è limitato, diventa comproprietaria di un certo numero di dati, i quali possono essere replicati rendendo lo shard un replica set. È possibile avere un numero di repliche diverso per ogni shard. Per consentire il corretto funzionamento di tale struttura devono essere eseguiti, su una o più macchine, diversi processi: Mongod: è il processo base per MongoDB. Gestisce le richieste e il formato dei dati, ed esegue operazioni di gestione. Questo processo fa svolgere le votazioni necessarie per dichiarare il nodo primario. Permette, anche, di risolvere le richieste provenienti dai client e relative ad operazioni di lettura e scrittura in base al ruolo, primario o secondario, della macchina oggetto della richiesta stessa. Config server: Nel momento in cui si decide di avere una rete multi shard, bisogna inserire due nuovi processi all'interno dell'architettura di MongoDB. Il primo tra questi è il config server, processo chiave dell'intero cluster. Tale processo tiene traccia dei vari dati presenti in un determinato nodo del cluster. Esso è una particolare istanza del processo mongod ed è possibile, nell'intero cluster, istanziarne solamente uno o tre, per permettere un risultato sicuro ed immediato nel momento in cui debba svolgersi una votazione, necessario nel caso di inconsistenza dei dati. Mongos: è il secondo processo necessario qualora si decida di creare piu shard. Questo dispone di un elenco contenente tutti i nodi che compongono il DBMS e il relativo replica set di appartenenza, dati recuperati e continuamente aggiornati attraverso la continua comunicazione con i config server. È, inoltre, l'unico processo ad essere abilitato a comunicare con i client, reindirizzando la loro richiesta ai nodi delle varie shard e restituendo i 82 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto risultati al richiedente il servizio. Non ci sono limiti sul numero di istanze possibili di questo processo; come conseguenza di ciò, il numero di entry point per MongoDB uguale al numero di processi mongos istanziati. Per ogni istanza del processo mongod viene creato, sulla stessa macchina, il rispettivo Journal, sul quale vengono memorizzati l'esatta locazione sul disco ed i relativi byte cambiati, riguardo ai dati inseriti in seguito ad un’operazione di scrittura. Ciò permette, in seguito ad un crash di alcuni nodi della rete, di recuperare e rieseguire i cambiamenti svolti sul DBMS dalle write che non sono state fisicamente scritte su disco. Le operazioni vengono, infatti, memorizzate su disco ogni 60 secondi (di default); perciò il Journal necessita di memorizzare solo gli ultimi 60 secondi circa di quanto accaduto al DBMS riguardo le scritture. Write Concern rappresenta quanta garanzia MongoDB fornisce all'applicazione client riguardo al successo di un’operazione di tipo write. Ci sono diversi livelli di garanzia sviluppati per soddisfare le varie applicazioni. I livelli di Write Concern sono: Error ignored: tale configurazione rappresenta il livello più basso in cui nessuna notifica viene ricevuta dal client. Qualunque fallimento della rete o dello storage stesso viene ignorato. Unacknowledged: assenza di riscontro da parte del client, è simile al livello ignored, con la differenza che il driver cattura errori della rete. Normal: MongoDB fornisce al client una risposta sull'avvenuta ricezione dell'operazione di scrittura. Journaled: con un journaled write concern il client viene avvisato della corretta esecuzione della scrittura solo una volta che è stata eseguita l'operazione ed è stato effettuato un commit di essa sul Journal. Replica acknowledged: prevede un invio di avvenuta esecuzione della scrittura solo quando questa è stata eseguita sul nodo primario ed è stata replicata sull'intero replica set. Francesco Romeo | 83 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 5.3 HBASE HBase è un DBMS scritto in Java, nato come clone di BigTable, un DBMS fortemente distribuito e costruito sopra un file system apposito. Questa caratteristica necessita di applicazioni e tecnologie che forniscano sincronizzazione e gestione di un ambiente particolarmente dinamico. Il file system su cui HBase si appoggia è HDFS, uno dei principali componenti di Hadoop, descritto nel capitolo 4. HBase sta riscuotendo particolare successo negli ultimi tempi. Essendo in grado di gestire cluster di notevoli dimensioni, si sposa adeguatamente alle tecniche di analisi su grandi quantità di dati. Riesce a soddisfare diverse esigenze; alcune richiedono basse latenze per garantire all'utente risposte in tempo reale, mentre altre sono più orientate all'elevato volume di produzione dei dati. HBase fa parte della famiglia Column Oriented DBMS. Al contrario di Cassandra, però, qui non si hanno Super Column-Family, concetto esclusivo di Cassandra. Particolarità interessante è però data dal fatto che HBase supporta esclusivamente l’Ordered Partitioning. Le righe di una Column-Family devono essere sempre memorizzate in ordine di row-key. Questo permette di interrogare il DBMS con operazioni quali scan, definendo un range di row-key, e di estrarre tutti i valori trovati con delle performance particolarmente elevate. Da notare che i file di una Column-Family possono essere sparsi su vari nodi, ma, visto l'utilizzo di Hadoop, il quale presenta dei blocchi di dimensioni elevate, un’operazione di scan su un range elevato di row-key, utilizzando questi grossi blocchi, impiega brevi tempi di latenza dati dal seek time. Facendo riferimento al CAP Theorem, come MongoDB, anche HBase presenta le proprietà di Partitioning e Consistency. Quando un nodo non è più riconosciuto dal cluster, i suoi dati non sono più accessibili. Si avvia, quindi, una fase di recupero, nel caso in cui i dati siano stati precedentemente replicati, in cui HDFS e HBase cooperano per ripristinare i dati persi. L'unità di base in HBase è detta Region; si tratta, sostanzialmente, di un insieme di righe contigue, memorizzate insieme e riguardanti una tabella. La particolarità di queste è che il nodo che le contiene è in grado, una volta raggiunta una certa dimensione, di eseguire uno split di esse, cioè un partizionamento in una o più Region di dimensioni minori, creando diverse Region per 84 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto un'unica tabella. In questo modo si vengono a creare diverse regioni cui l'intero sistema si prenderà cura bilanciandone il carico sulla rete e distribuendole lungo l'intero cluster. Questo metodo viene visto come una sorta di Autosharding proprio per il suo automatico partizionamento dei dati. Si noti che la Region iniziale risiede su un singolo nodo e che il partizionamento avviene gradualmente, generando carichi di lavoro non uniformemente distribuiti se non per carichi di dati estremamente elevati. Due tabelle sono fondamentali per l'intero DBMS ed il corretto funzionamento riguardante le Region: le tabelle ROOT e META. La tabella ROOT tiene traccia di dove sia memorizzata la tabella META, con informazioni relative ai nodi su quali risiede e sulle Region nei quali è partizionata. La tabella META è incaricata di contenere una lista sempre aggiornata sull'elenco di tutte le Region presenti sui nodi. Queste due tabelle sono create ed assegnate automaticamente dal master di rete durante l'avvio dell' intero DBMS. Due processi risultano di rilevante importanza in HBase, ovvero HMaster, il master della rete, e uno o più HRegionServer, che si occupano della gestione dei dati. Il primo si occupa di gestire l' assegnazione, per ogni HRegionServer, delle varie Region nel momento in cui queste vengono create o partizionate, prendendosi cura anche della corretta gestione delle Region speciali ROOT e META. Il secondo contiene le Region, gestendo la loro crescita e dimensione, oltre, ovviamente, a fornire le operazioni di base per il recupero e memorizzazione dei dati. Questi secondi processi possono essere eseguiti tutti su una macchina, oppure possono essere distribuiti su più nodi. A causa della possibilità di avere più HMaster, che risultano essere il punto critico dell'intera infrastruttura di HBase, e che possono essere anche spostati da una macchina all'altra, HBase necessita di un coordinatore esterno. Questa funzione viene fornita da Zookeeper, un servizio centralizzato di configurazione e sincronizzazione per grandi sistemi distribuiti. Questo si Francesco Romeo | 85 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto occupa, quindi, di tenere traccia dello stato dei master di HBase, di prendersi carico dei messaggi heartbeat, di controllare lo stato tra HMaster e HRegionServer, e di tenere traccia delle tabelle ROOT e META, fornendo dati per far comunicare direttamente il client con i nodi della rete. Si noti che, vista questa comunicazione diretta con gli HRegionServer, il numero di entry point della rete non è definibile: il client accederà direttamente al nodo su cui risiedono i dati a cui è interessato. Zookeeper viene generalmente eseguito su un cluster esterno, rispetto a quello dove avvengono i processi di HBase, per ragioni di sicurezza e di disponibilità. In caso di recupero dei dati o in presenza di conflitti deve essere eseguita una votazione dalle istanze dei processi di Zookeeper . La replicazione fornita da questo DBMS permette di replicare dati esclusivamente tra diversi cluster di HBase; tale replicazione, asincrona, viene effettuata solitamente per avere una copia in caso di malfunzionamenti sul cluster principale. Per avere una replicazione sul singolo cluster ci si appoggia, invece, ad Hadoop e al relativo HDFS. Per HBase la replicazione è assolutamente ininfluente da un punto di vista prestazionale poiché essa viene eseguita in modo del tutto trasparente al DBMS. Il vantaggio di tale meccanismo è dato dal fatto che, in caso di guasto ad una macchina, il DBMS è conscio della presenza sul file system di copie dei dati andati perduti, permettendo, quindi, un processo di recupero. Da notare che, al contrario di Cassandra, il numero di replicazioni impostato tramite Hadoop non può essere configurato come superiore al numero di HRegionServer presenti nella rete. 86 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 5.4 CONFRONTO TRA I DBMS NOSQL TRATTATI Le differenze tra i diversi DBMS NoSQL sono molto più grandi di quanto non ci siano tra un DBMS SQL e l’altro. Ciò significa che, fin dall’inizio, c’è una maggiore responsabilità affidata ai progettisti software nello scegliere la tecnologia per un progetto. Cassandra viene spesso visto come il punto di incontro tra l'architettura fortemente orientata alla distribuzione e alla scalabilità di Dynamo e il modello dei dati potente e flessibile di BigTable. Gran parte dei vantaggi risiedono nel buon compromesso tra le idee di due DBMS molto potenti e sviluppati. In generale, Cassandra può essere vista come una delle migliori implementazioni di sistemi Shared Nothing da cui ne deriva gran parte dei vantaggi e svantaggi. In termini del teorema CAP, il DBMS si colloca sulla classificazione di tipo AP, ossia orientato alla scalabilità e alla disponibilità a discapito della consistenza, non garantita da uno strato di file system distribuito. Inoltre, Cassandra richiede un’amministrazione continua del DBMS in relazione all'andamento dei dati. I principali vantaggi di Cassandra sono i seguenti: distribuzione open source; modello dei dati di BigTable con supporto alle Super Column; range e filtered query efficienti; livello di consistenza dinamico; controllo di integrità e riparazione automatica; elevatissime prestazioni e scalabilità; elevata disponibilità; assenza di colli di bottiglia sul nodo master; bilanciamento dei dati dinamico; gestione delle membership e dei failure dinamici; Francesco Romeo | 87 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto elevata configurabilità. I principali svantaggi sono, invece, i seguenti: sistema di difficile amministrazione; sistema fortemente dipendente dalla strategia di partizionamento; supporto a MapReduce non nativo; nessuna gestione di relazioni tra righe; consistenza non sempre garantita. Nonostante sia un DBMS NoSQL relativamente recente, MongoDB si è velocemente imposto come uno dei più conosciuti ed utilizzati. Le elevate prestazioni sono garantire dal modello di dati che permette di accorpare molte informazioni sotto forma di documenti sui quali applicare indici secondari. Il modello a documenti, sotto questo punto di vista, può essere visto come una forma di partizionamento implicito delle informazioni. Questo schema si adatta bene a molti contesti ma ha il difetto di rendere il sistema poco flessibile. Un altro punto a favore di questo modello è la disponibilità alla replicazione delle informazioni con gestione automatizzata dei fallimenti, in cui è anche possibile decidere il livello di consistenza desiderato. Infine, il partizionamento è reso efficiente dalla gestione automatizzata dei blocchi di documenti che vengono splittati e spostati nella rete tramite processi eseguiti in background. A livello di CAP, MongoDB permette, quindi, di lasciar scegliere al client un comportamento consistente (CP) o più disponibile (AP). Cercando di fare un elenco dei vantaggi che si hanno utilizzando MongoDB, abbiamo: doppia licenza; supporto ufficiale per molti linguaggi; modello a documenti facile da usare; modello query ad oggetti; 88 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto indicizzazione dei campi e dei sotto-documenti; operazioni atomiche su documenti; livello di consistenza adattabile lato client; partizionamento automatico; ottimizzazione delle range query opzionale; assenza di colli di bottiglia; gestione dei fallimenti automatica; membership facile via processi. I principali svantaggi di questo tool sono, invece, i seguenti: modello a documenti poco flessibile a grandi cambiamenti strutturali; operazioni di write solo su un singolo nodo; nessuna gestione delle transazioni. L'introduzione di BigTable nel mondo dei NoSQL ha portato molte novità che sono state riprese anche da altri software. Per HBase la flessibilità che deriva dal modello ColumnFamily rappresenta il vero punto di forza. In termini del Teorema CAP, HBase si colloca nella categoria CP. Per quanto concerne i vantaggi di questo sistema, abbiamo: modello di dati semplice e flessibile; concetto di Column-Family potente; controllo degli accessi potente e basato su Column-Family; range e filltered query efficienti; Francesco Romeo | 89 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto supporto a MapReduce; elevata consistenza delle write; replicazione garantita dal file system; elevate prestazioni tramite gestione in-memory; assenza di colli di bottiglia sul nodo master; bilanciamento dei dati dinamico; gestione delle membership e delle failure dinamici. Gli svantaggi di tale DBMS sono, invece, i seguenti: necessità, per l’applicazione client, di inviare le richieste ai server; nessuna gestione di relazioni tra righe; disponibilità non sempre garantita; single point of failure nel serivizio di lock. Grazie a DB-Engines Ranking è possibile collocare i DBMS NoSQL da noi studiati in base alla loro popolarità. DB-Engines Ranking , per calcolare la popolarità di un sistema, sfrutta i seguenti parametri: Numero di citazioni del sistema su siti web, misurato come numero delle query effettuate nei motori di ricerca. Al momento, per questa misurazione, vengono utilizzati Google e Bing. Interesse generale nel sistema. Per questa misurazione, si usa la frequenza delle ricerche in Google Trends. Frequenza delle discussioni tecniche sul sistema. Vengono utilizzati il numero delle discus- 90 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto sioni e il numero di utenti interessati nei ben noti siti Internet stackoverflow.com e dba.stackexchange.com . Numero di offerte di lavoro, in cui è citato il sistema. Viene utilizzato il numero di offerte nei principali motori di ricerca del lavoro, Indeed e Simply Hired. Numero di profili in reti professionali, in cui è menzionato il sistema. Viene utilizzata la più diffusa rete internazionale riguardante le professioni, ovvero LinkedIn. Pertinenza nelle reti sociali. Vengono contati il numero di tweet di Twitter in cui è menzionato il sistema. Come era prevedibile, MongoDB ottiene un risultato migliore rispetto agli altri due DBMS. Di seguito la figura che rappresenta la popolarità in funzione del tempo: Francesco Romeo | 91 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto CONCLUSIONI 1 In questa tesi è stato studiato il fenomeno dei Big Data e sono stati mostrati i benefici che le aziende, attraverso la fase di analisi, riescono ad ottenere. In particolare, i risultati ricavati grazie all’analisi predittiva risultano essere di fondamentale importanza per ottenere la strada del successo. La produzione dei dati ha una crescita continua e si prevede che, nei prossimi anni, abbia un andamento esponenziale. Grazie allo sviluppo tecnologico i dati possono essere ottenuti mediante svariati mezzi. I Big Data possono essere sfruttati , oltre che per le aziende che lavorano in ambito commerciale, anche in altri svariati settori; si pensi, ad esempio, al lavoro svolto dai navigatori satellitari oppure agli open data, nati allo scopo di aumentare i livelli di trasparenza, efficienza e responsabilizzazione delle Pubbliche Amministrazioni. L’intero processo di estrazione della conoscenza dai database, dall’acquisizione dei dati fino alla visualizzazione dei risultati ottenuti, ed in particolare la fase di Data Mining, svolgono un lavoro straordinario per tutte le medie e grandi aziende che hanno intenzione di essere un passo avanti rispetto alla concorrenza. In azienda è, quindi, necessaria l’innovativa figura professionale del Data Scientist, soggetto che deve avere più competenze. Tale figura deve avere l’abilità di sapere gestire, acquisire, organizzare ed elaborare dati. La seconda competenza è di tipo statistico, ovvero il sapere come e quali dati estrarre. La terza capacità è il saper comunicare a tutti, con diverse forme di rappresentazione, cosa suggeriscono i dati. L’ immagazzinamento delle grandi moli di dati, spesso personali, deve essere in grado di garantire un alto livello di sicurezza e rispetto della privacy. Ciò non può essere assicurato unicamente dal processo di conformità con il sistema normativo. Una nuova idea è rappresentata dal concetto di Privacy By Design. Tale novità si riferisce alla filosofia e all'approccio di considerare la privacy nelle specifiche di progettazione delle varie tecnologie. Un ruolo fondamentale per lo sviluppo e la diffusione dei Big Data è svolto dalle tecnologie NoSQL ed Hadoop. La prima consente di acquisire ed immagazzinare dati strutturati, ovvero la maggior parte dei dati generati dai diversi mezzi tecnologici, ed inoltre permet- Francesco Romeo | 93 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto te flessibilità nel partizionare, distribuire e replicare i dati. Ci sono progetti che hanno il compito di ospitare dati che crescono in maniera costante, e a volte non lineare, la cui memorizzazione su un solo server di storage richiede costi, sia hardware che software, elevati e, con i tempi che corrono, difficilmente giustificabili al cliente finale. Da contare l’esigenza di avere un sistema di replica online per la continuità del servizio. Altro punto forte di questa tecnologia è che essa permette di effettuare delle statistiche precise del dato. Si tende a raggruppare i database NoSQL in quattro categorie fondamentali: KeyValue Distribuiti, Document Oriented, Column Oriented, Graph Oriented. Ogni categoria presenta pro e contro; all’interno della tesi, si è scelto di studiare tre dei più utilizzati DBMS NoSQL: Cassandra, MongoDB e HBase. Tra questi, dopo un’ analisi approssimativa, MongoDB risulta essere quello maggiormente popolare, addirittura più di vari DBMS relazionali. Ogni DBMS trattato presenta caratteristiche differenti ed è, quindi, compito del progettista software decidere quale strada seguire, in base alle necessità del sistema che si vuole sviluppare. La tecnologia Hadoop sostanzialmente consente la distribuzione dei dati su più macchine, abbattendo costi computazionali e di storage, per l’immagazzinamento e l’analisi dei Big Data. Hadoop è un framework concepito per scrivere facilmente applicazioni che elaborano grandi quantità di dati in parallelo, su cluster di diverse dimensioni, in modo affidabile e tollerante ai guasti. Fra i sottoprogetti di Hadoop, quelli di maggiore importanza e che meritano particolare attenzione sono MapReduce e HDFS. Il primo rappresenta una strategia per eseguire l'elaborazione dei dati su sistemi distribuiti e con elevato parallelismo. HDFS è un file system distribuito ideato per soddisfare requisiti quali affidabilità e scalabilità, ed è in grado di gestire un numero elevatissimo di file, anche di dimensioni elevate, attraverso la realizzazione di cluster che possono contenere migliaia di nodi. 1Per quanto riguarda i possibili sviluppi futuri in questo settore, appare interessante citare Automatic Statistician, un progetto annunciato da Google per condurre “Intelligenza Artificiale per la scienza dei dati”. Ad oggi i Big Data hanno un potenziale ancora non completamente espresso, proprio a causa dell’impossibilità di farne un utilizzo concreto, dovuta ai limiti delle facoltà computazionali umane. Per elaborare enormi quantità di dati un cervello umano non basta. Un sistema intelligente, che operi senza bisogno di intermediazioni umane, è quel che ci vuole. Nato in collaborazione con l’Università di Cambridge, Automatic Statician ha lo scopo di automatizzare la selezione, la costruzione e la spiegazione di modelli statistici per l’analisi dei Big Data. In sostanza, esso sarà in grado di passare in rassegna grandi quantità di dati e determinare quale sarebbe il miglior algoritmo per analizzarli, mettendone in evidenza le caratteristiche più importanti. Il risultato 94 |Francesco Romeo Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto di tale lavoro sarà spiegato nel dettaglio in un rapporto elaborato automaticamente dal sistema perché gli umani ne prendano visione. Ecco spiegata la sfida intrapresa da Google, l’azienda che dispone forse del maggior quantitativo di dati interpretabili al mondo. Elaborare i dati in maniera più rapida ed efficiente grazie all'Intelligenza Artificiale offrirebbe a Google opportunità senza precedenti nell'erogazione di servizi di advertising più mirati. 1 Francesco Romeo | 95 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto BIGLIOGRAFIA Big Data. http://www.webopedia.com/TERM/B/big_data.html, 2014. Big Data Analytics. http://www.sobigdata.eu/master/bigdata, 2014. Cassandra. http://cassandra.apache.org/, 2014. Data Mining. http://www.laits.utexas.edu/~anorman/BUS.FOR/ course.mat/Alex/, 2014. 5. Data Scientist. http://www.rainews.it/dl/rainews/articoli/datascientist-il-lavoro-sexy-50712477-5a83-4682-8f73522428eb3281.html, 2014. 6. Hadoop. http://hadoop.apache.org/, 2014. 7. HBase. http://hbase.apache.org/, 2014. 8. HDFS. http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html, 2014. 9. KDD. http://www.kdd.org/kdd2014/index.html, 2014. 10. MapReduce. http://www.mapreduce.it/, 2014. 11. MongoDB. http://www.mongodb.org/, 2014. 12. NoSQL. http://nosql-database.org/, 2014. 13. Open data. http://www.dati.gov.it/, 2014. 14. Privacy By Design. http://www.privacybydesign.ca/, 2014. 15. YARN. http://hadoop.apache.org/docs/current/hadoop-yarn/ hadoop-yarn-site/YARN.html, 2014. 16. V. Agneeswaran. Big Data Analytics Beyond Hadoop. Pearson FT Press, 2014. 17. E. Capriolo. Cassandra High Performance Cookbook. Packt Publishing, 2011. 18. K. Chodorow. MongoDB: The Definitive Guide. O'Reilly Media, 2013. 19. A. Di Ciaccio and W. Lanzani. Gli analytics come motore per i big data, la ricerca e il sistema paese. Aracne, 2012. 20. E. Dumbill. Planning for Big Data. O'Reilly Media, 2012. 21. N. Garg. HBase Essentials. Packt Publishing, 2014. 22. J. Han, M. Kamber, J. Pei. Data Mining: Concepts and Techniques. Morgan Kaufmann Pub, 2011. E. Hewitt. Cassandra: The Definitive Guide. O'Reilly Media, 2010. 23. S. Hoberman. Data Modeling for MongoDB: Building Well-Designed and Supportable MongoDB Databases. Technics Publications, 2014. 1. 2. 3. 4. 1 Francesco Romeo | 97 Analisi del fenomeno dei Big Data e comparazione di DBMS NoSQL a loro supporto 24. H.Karambelkar. Scaling Big Data With Hadoop and Solr: Learn Exciting New Ways to Build Efficient, High Performance Enterprise Search Repositories for Big Data Using Hadoop and Solr. Packt Publishing, 2013. 25. G. Lars. HBase: The Definitive Guide. O'Reilly Media, 2011. 26. G. S. Linoff and M. J. Berry. Data Mining Techniques: For Marketing, Sales, and Customer Relationship Management. John Wiley & Sons Inc, 2011. 27. O. Maimon and L. Rokach. Data Mining and Knowledge Discovery Handbook. Springer US, 2006. 28. M. Manoochehri. Data Just Right: Introduction to Large-Scale Data & Analytics . AddisonWesley Professional, 2013. 29. V. Mayer-Schönberger, K. N. Cukier, R. Merlini. Big data. Una rivoluzione che trasformerà il nostro modo di vivere e già minaccia la nostra libertà. Garzanti Libri, 2013. 30. A. C. Murthy, V. K. Vavilapalli, D. Eadline, J. Niemiec, J. Markham. Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2. Addison-Wesley Professional, 2014. 31. V. Prajapati. Big Data Analytics with R and Hadoop. Packt Publishing, 2013. 32. F. Provost and T. Fawcett. Data Science for Business. O’ Reilly & Associates Inc, 2013. 33. A. Rezzani. Big data. Architettura, tecnologie e metodi per l'utilizzo di grandi basi di dati. Apogeo Education, 2013. 34. P. J. Sadalage. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley Professional, 2012. 35. The Enlightened DBA. DBA's Guide to NoSQL: Apache Cassandra. DataStax, 2014. 36. G. Vaish. Getting Started with NoSQL. Packt Publishing, 2013. 37. S. Wadkar and M. Siddalingaiah. Pro Apache Hadoop. Apress, 2014. 38. T. White. Hadoop: The Definitive Guide. Oreilly & Associates Inc, 2012. 98 |Francesco Romeo