Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Basi di Dati Big Data e Tecnologie NoSQL: AllegroGraph Anno Accademico 2014/2015 Candidato: Maria Amodeo matr. N46001256 Alla mia famiglia e a Lia, a cui devo molto. Indice Indice .................................................................................................................................................. III Introduzione ......................................................................................................................................... 4 Capitolo 1: Big Data ............................................................................................................................ 6 1.1 Definizione e caratteristiche: le quattro V dei Big Data ............................................................ 6 1.2 Vantaggi dei Big Data ................................................................................................................ 7 1.3 Limiti dei Big Data .................................................................................................................... 8 Capitolo 2: Tecnologie NoSQL ......................................................................................................... 10 2.1 Teorema CAP e proprietà BASE ............................................................................................. 10 2.2 Vantaggi e svantaggi ................................................................................................................ 12 2.3 Categorie di database NoSQL .................................................................................................. 13 Capitolo 3: AllegroGraph................................................................................................................... 16 3.1 Caratteristiche generali ............................................................................................................ 17 3.2 Funzionalità avanzate ............................................................................................................... 18 3.2.1 Primitive geospaziali e temporali .......................................................................................... 19 3.3 Indicizzazione .......................................................................................................................... 19 3.4 Esempio applicativo ................................................................................................................. 21 3.4.1 Gruff ...................................................................................................................................... 21 3.4.2 Realizzazione query attraverso l’uso della query view ......................................................... 22 Conclusioni ........................................................................................................................................ 28 Bibliografia ........................................................................................................................................ 29 Introduzione Se si cerca l’etimologia del termine informazione ci si accorge che deriva dal termine latino informatio che vuol dire nozione, idea, rappresentazione. Trasmettere un’informazione, e di conseguenza l’azione dell’informare, consiste nel dare forma a qualcosa, sia essa un’idea o un concetto. Fin dai tempi più antichi si è sentita l’esigenza di trascrivere e memorizzare dati e informazioni per poterli visionare in futuro ed averne traccia. Basti pensare che le più straordinarie invenzioni che sono state realizzate nel corso degli anni, dall’evoluzione dei linguaggi, alla progettazione e realizzazione di strumenti e macchine potenti, tra cui gli stessi PC, in grado di facilitare il lavoro dell’uomo, sono state quelle che hanno fatto sì che le persone potessero comunicare, scambiandosi informazioni e memorizzandole. Negli ultimi anni, tuttavia, grazie anche allo sviluppo di nuove tecnologie, il volume di dati prodotto dai social networks, dalle reti di sensori, dalle trascrizioni delle transazioni di acquisto e da tanti altri mezzi, continua a crescere in maniera esponenziale e ha raggiunto ormai livelli enormi. Essendo i dati presenti in in tutte le organizzazioni e le economie, queste enormi quantità di dati, che prendono a buon ragione il nome di Big Data, interessano i leader di tutti i settori e collegare e relazionare insieme questi zettabyte di dati di ogni tipo che provengono da fonti diverse, che vanno da Facebook a Twitter, da sistemi operativi a cellulari, possono offrire grandi vantaggi alle aziende che li posseggono. Potranno, infatti, migliorare i rapporti con i loro clienti e capire le loro esigenze, rispondere a richieste specifiche e accelerare i tempi di consegna; tuttavia, l’utilizzo dei tradizionali database relazionali non è adatto ad immagazzinare questa mole di informazione, nè tantomeno a garantire un’elevata velocità di analisi. La nascita e lo sviluppo delle tecnologie NoSQL ha permesso la gestione efficace di grandi quantità di dati, grazie a database flessibili e soprattutto scalabili che garantiranno velocità di elaborazione anche di terabyte e terabyte di dati, 4 la scalabilità orizzontale con l’aggiunta di nuovi server e la possibilità di gestire dati anche non strutturati, non essendoci dipendenza da schemi fissi. Diverse sono le tipologie di DBMS NoSQL, ognuna con le sue caratteristiche e funzionalità: dai database in cui vengono memorizzate le coppie chiave-valore a un modello basato su strutture a grafi, da database orientati ai documenti a quelli orientati alle colonne. La scelta dell’utilizzo di un database piuttosto che un altro dipende dalle problematiche che si vogliono risolvere e studiare e in base a ciò si sceglierà la tipologia che meglio soddisfa le nostre esigenze. In particolare, in questo elaborato, verrà analizzato uno dei database a grafi che si sta sviluppando negli ultimi anni: AllegroGraph. Ne verranno descritte le caratteristiche e funzionalità principali e, infine, verrà presentato un esempio di utilizzo svolto in laboratorio. 5 Capitolo 1: Big Data La quantità di dati che oggi viene prodotta in tutto il mondo è in enorme crescita: aziende che raccolgono migliaia di miliardi di byte di informazioni sui loro clienti e sui loro fornitori, in modo tale da tener traccia delle loro operazioni e da fare statistiche e previsioni relativamente al proprio mercato; milioni di sensori, presenti in diversi dispositivi, quali cellulari e automobili, che rilevano e trasferiscono informazioni sotto forma di dati; adulti e ragazzi che scambiano dati attraverso smartphones e social network, e l’elenco potrebbe continuare. I Big Data, grandi quantità di dati che possono essere memorizzati e analizzati, caratterizzano pertanto ogni settore dell’ambiente e dell’economia globale. Tutto questo è reso possibile grazie allo sviluppo di nuove tecnologie e a persone che per comunicare e memorizzare informazioni utilizzano sempre più dispositivi digitali. 1.1 Definizione e caratteristiche: le quattro V dei Big Data Come suggerisce il nome, i Big Data rappresentano un insieme di dati di grandi dimensioni la cui stima è variabile, a causa della necessità di analizzare i dati in un unico insieme, con l’obiettivo di ricavarne informazioni maggiori. Le caratteristiche dei Big Data possono essere racchiuse nelle quattro V che li 6 caratterizzano: Volume: indica la dimensione effettiva del dataset e si riferisce alla capacità di memorizzare e accedere a grandi quantità di dati (fino all’ordine dei Zettabyte, ovvero miliardi di Terabyte). Questa grande quantità di dati dipende dal fatto che le fonti di provenienza sono eterogenee, quindi non avremo solo dati strutturati ma anche non strutturati e ciò è rappresentato dalla seconda caratteristica: la varietà; Varietà: i dati che costituiscono questo unico grande insieme appartengono a tipologie differenti; sono presenti, infatti, dati che provengono da sensori o da altri tipi di dispositivi e vengono trasmessi sotto forma di immagini, documenti, e-mail, suoni, video. Avremo perciò dati non strutturati che non sono gestibili con sistemi “tradizionali”, ma sarà necessario introdurre nuove tecnologie per l’analisi di tali dati; Velocità: fa riferimento alla velocità di generazione dei dati, la cui analisi deve avvenire quasi in tempo reale. Questo permette, ad esempio, di individuare una tendenza prima di chiunque altro e sfruttare a proprio favore le informazioni ottenute, traendone vantaggi competitivi ed economici; Veridicità: essere sicuri dell’affidabilità dei dati è fondamentale per poterli utilizzare come fonte di valore e di profitto. Per effettuare scelte e ricavarne vantaggi, bisogna analizzare dati che siano affidabili, perciò solo la qualità di questi ultimi permette di avere idee innovative e fa sì che siano un vero e proprio valore per coloro che li analizzano. 1.2 Vantaggi dei Big Data Sebbene molti cittadini possano vedere questa raccolta di informazioni con molto sospetto, considerando questa divulgazione dei propri dati come un’intrusione nella loro privacy, i Big Data hanno avuto un’enorme e rapida diffusione grazie ai numerosi vantaggi offerti: o Trasparenza: rendendo questi dati accessibili in maniera tempestiva a coloro che 7 sono interessati a ricavarne informazioni, si può avere un enorme vantaggio. Ad esempio, nel settore manifatturiero, integrando i dati provenienti da diverse unità di produzione, è possibile ridurre i tempi di produzione ed aumentarne la qualità; o Effettuare degli esperimenti per migliorare le prestazioni: analizzando i dati a disposizione, le varie organizzazioni possono raccogliere informazioni dettagliate e utilizzare questi dati per verificare la variabilità delle prestazioni effettuando una scelta piuttosto che un’altra, in modo tale da incrementare le perfomance; o Sostituzione/supporto delle decisioni umane con algoritmi automatizzati: analisi sofisticate possono migliorare in maniera sostanziale il processo decisionale, scoprendo informazioni preziose. Ciò può essere fatto anche in maniera automatica attraverso algoritmi in modo tale da ottimizzare tali processi come la messa a punto automatica di inventari e prezzi; o Innovazione con nuovi modelli di business, prodotti e servizi: le aziende possono, attraverso i Big Data, creare nuovi prodotti e servizi, migliorare quelli esistenti e inventare modelli di business completamente nuovi. L’emergere di dati di localizzazione in tempo reale ha creato una serie completamente nuova di servizi basati sulla posizione, come servizi di assicurazione per infortuni in base a dove e come le persone guidano la propria auto. 1.3 Limiti dei Big Data Come ogni cosa, anche i Big Data presentano limiti e problemi. Possiamo avere problemi di affidabilità della sorgente dei dati o di qualità stessa dei dati (correttezza, aggiornamento del dato), problemi di consistenza nel caso in cui abbiamo contraddizioni tra i vari dati e limiti soprattutto per quanto riguarda la gestione dei Big Data stessi. A causa delle grandi dimensioni dei dati e della varietà degli stessi, non è possibile 8 gestire i Big Data attraverso i “tradizionali” RDBMS1, i quali non garantiscono velocità di analisi e archiviazione di grandi quantità di dati. I RDBMS, inoltre, gestiscono in modo efficiente informazioni che sono fortemente strutturate, ma all’interno dei Big Data sono presenti immagini e video digitali, dati GPS e tanti altri che rientrano nella categoria di dati non strutturati e che non sono gestibili attraverso i sistemi per la gestione di basi di dati relazionali. A supporto dei Big Data, sono nate tecnologie “specifiche” in grado di andare oltre questi limiti; esse fanno uso di sistemi scalabili, che rispondono in maniera veloce e precisa e che riescono a gestire grandi quantità di dati in modo tale da estrapolare informazioni preziose. Queste tecnologie sono note come Tecnologie NoSQL. 1 Il Relational Database Management System (RDBMS) è un sistema di gestione di basi di dati basato sul modello relazionale, il quale è strutturato intorno al concetto di relazione matematica (detta anche tabella). 9 Capitolo 2: Tecnologie NoSQL Con il termine NoSQL si fa riferimento alla nuova famiglia di database, sviluppatasi negli ultimi anni, che si discosta dalla famiglia di database relazionali, garantendo alti livelli di disponibilità dei dati nonché elevata velocità di recupero. Il termine venne utilizzato per la prima volta nel 1998 da Carlo Strozzi per far riferimento a una base di dati relazionale open source che non usava un’interfaccia SQL. Infatti, NoSQL è l’acronimo di Not Only SQL, pertanto non si oppone all’utilizzo di database relazionali, come si potrebbe pensare, ma va oltre; verranno utilizzati laddove i tradizionali database relazionali non sono in grado di gestire efficientemente i dati. Il termine fu successivamente ripreso da Eric Evans, nel 2009, per far riferimento al crescente numero di database non relazionali e distribuiti che si stavano sviluppando e che erano caratterizzati dalle cosiddette proprietà base (BASE) introdotte da Eric Browers, anche autore del Teorema CAP. 2.1 Teorema CAP e proprietà BASE Il Teorema CAP afferma che per un sistema informatico distribuito è possibile che si verifichino, contemporaneamente, al massimo solo due delle seguenti garanzie: Coerenza: tutti i nodi vedono gli stessi dati nello stesso momento. Un sistema, infatti, è definito completamente coerente se garantisce che, memorizzato un nuovo stato del sistema, per ogni operazione successiva, prima di un nuovo cambiamento dello stesso, verrà utilizzato sempre questo stato; 10 Disponibilità: la garanzia che ogni richiesta riceva sempre una risposta; Tolleranza di partizione: il sistema continua a funzionare nonostante il partizionamento della rete e una serie di fallimenti o perdite di messaggi. Il singolo nodo non causerà il collasso di un intero sistema. Quindi, sebbene sia auspicabile per un sistema distribuito avere contemporaneamente totale coerenza, disponibilità e tolleranza alle partizioni, ciò non è possibile e di volta in volta bisogna scegliere quale garanzia sacrificare rispetto alle altre due in base ai requisiti richiesti. Se ad esempio, viene sacrificata la coerenza potrà accadere, in alcuni casi, che un partizionamento generi disallineamento tra le repliche dei dati e nello stesso momento ogni nodo avrà una visione diversa degli stessi. Tuttavia, questo non significa che il sistema non è consistente ma solo che in alcuni casi potrebbe non esserlo, ossia garantisce una consistenza “debole”. Se rinunciamo alla disponibilità, invece, abbiamo coerenza e tolleranza alle partizioni però non abbiamo disponibilità nel caso in cui un nodo fallisca. Infine, se si sceglie di non avere tolleranza alle partizioni, ciò che accade nei database relazionali dove i dati vengono memorizzati su un’unica macchina per evitare partizionamenti, avremo problemi di scalabilità, in quanto sarà possibile scalare soltanto in verticale, e non in orizzontale, e ciò è molto più costoso. Quindi, in base alla garanzia da sacrificare, abbiamo tre tipi di sistemi: CA, CP e AP. I sistemi tradizionali relazionali rientrano in quelli di tipo CA in quanto non tollerano perdite di messaggi. 11 Rispettando tale teorema, i nuovi sistemi dovranno soddisfare le cosiddette caratteristiche BASE: o Basically Available: il sistema deve garantire la disponibilità delle informazioni, anche se i dati possono trovarsi in uno stato inconsistente o cambiare; o Soft State: lo stato del sistema può cambiare nel tempo anche in assenza di input; non deve garantire la consistenza dei dati in ogni istante; o Eventual Consistency: il sistema, alla fine, quando non ci saranno più aggiornamenti, dovrà diventare consistente: tutti i nodi otterranno l’ultima versione del dato in questione. Le inconsistenze sono dunque transitorie. 2.2 Vantaggi e svantaggi A differenza dei database relazionali, nei database di tipo NoSQL i dati possono essere conservati in documenti, pertanto un’applicazione che dovrà analizzare le informazioni, si troverà ad analizzare un unico documento in cui sono raccolti tutti i dati di cui ha bisogno e le informazioni correlate risulteranno perciò raggruppate e non distribuite in differenti strutture logiche. Non utilizzando tabelle, questi database non richiedono uno schema fisso (schemaless), ciò permette loro di incapsulare nuovi tipi di dati, compresi quelli non strutturati. L’assenza di schema definito a priori permette a questi database di scalare orizzontalmente, utilizzando un comune hardware da aggiungere ai propri sistemi, il ché non è possibile ai RDBMS, che per conservare un numero di dati sempre maggiore, scalano in verticale, aumentando i costi dell’hardware sottostante, dovendo quest’ultimo essere sempre più performante. Inoltre grazie al fatto di raggruppare i dati in un unico documento, i database non relazionali evitano spesso le operazioni di unione (join) ottenendo così una maggiore leggerezza computazionale. Nel caso dei database relazionali, la complessità computazionale aumentava al crescere dei dati, delle tabelle e delle informazioni da trattare a causa delle numerose operazioni di 12 aggregazione che occorreva fare per raccogliere le informazioni desiderate. Nei database di tipo NoSQL ciò non è necessario e abbiamo perciò un vantaggio sulle prestazioni e sulle performance. Di contro, tra i problemi emergenti abbiamo la duplicazione delle informazioni a causa dell’elevata flessibilità e della proprietà di aggregazione, tuttavia questo problema non è così rilevante, grazie alla continua diminuzione dei costi dei sistemi di memorizzazione. Inoltre si ha la mancanza di uno standard per l’accesso ai dati e di strumenti di ottimizzazione per l’interrogazione e l’implementazione di nuovi tipi di dati. A differenza dei RDBMS, dove i risultati delle richieste fatte attraverso query possono essere visualizzati in ambienti standard e un database creato in un determinato ambiente può interfacciarsi con un altro RDBMS, per i sistemi NoSQL ogni realizzazione ha la sua interfaccia utente e manca uno standard universale, essendo questi database molto diversi tra loro (ognuno ha le proprie API, il suo metodo di storing e accesso ai dati). Pertanto se interrompessimo lo sviluppo di un database sul quale si basa il nostro applicativo, il passaggio ad un altro database richiederebbe delle modifiche più o meno radicali da apportare al nostro applicativo e ciò richiederebbe tempo e lavoro. Infine, la semplicità di questi database ha comportato l’assenza di controlli fondamentali per l’integrità dei dati. Sarà compito dell’applicativo effettuare controlli sui dati che appartengono al database con il quale sta dialogando. 2.3 Categorie di database NoSQL In base al tipo di modello adottato, possiamo raggruppare i database NoSQL in quattro grandi famiglie: Columnfamily; Key/Value; Document Oriented; 13 Graph-based. I database di tipo columnfamily possono apparire, a prima vista, molto simili ai database relazionali, ma dopo un’attenta analisi ci si accorge che in realtà si differenziano da questi ultimi in maniera sostanziale. Innanzitutto, in questi database i dati vengono memorizzati per colonna e non per riga, come accadeva nei database relazionali. Le righe possono essere viste come un insieme di colonne e una singola riga, in un database columnfamily, può contenere diverse colonne. Le colonne correlate tra loro, che contengono la stessa tipologia di informazione, vengono raggruppate in columnfamily e il vantaggio principale è che le colonne che le costituiscono non devono essere definite a priori, possono perciò essere aggiunte se necessarie o rimosse se inutilizzate. La flessibilità delle columnfamily permette alle applicazioni di eseguire query complesse e analisi dei dati, simile, per molti aspetti, alla funzionalità offerta dai database relazionali. Sono progettati, inoltre, per contenere grandi quantità di dati (centinaia di milioni o miliardi di righe contenenti centinaia di colonne) e per fornire un accesso rapido a questi dati correlati tra loro. Rispetto ad un database relazionale che contiene un volume equivalente di dati, un database di questo tipo sarà più veloce e più scalabile; grazie alla sua flessibilità, questo modello viene molto utilizzato nel campo dei Big Data e siti web a traffico elevato. Nei database di tipo Key/Value i dati vengono memorizzati in coppie chiave-valore, dove la chiave permette di accedere ai dati (solitamente tipi primitivi, come numeri interi e stringhe) e il valore rappresenta i dati veri e propri a cui si vuole accedere. Questo modello risulta essere quello più semplice e riesce a garantisce un’elevata scalabilità orizzontale, grazie all’assenza di legami tra le varie coppie, che potranno essere distribuite su server differenti. Anche le ricerche nel database possono essere fatte in maniera parallela (con funzioni come Map e Reduce), garantendo in questo modo un’elevata concorrenza e disponibilità di informazioni, a sfavore della consistenza dei dati. Inoltre alcuni database memorizzano i dati in memoria (RAM), mentre altri garantiscono la persistenza dei dati impiegando unità a stato solido (SSD) o dischi rotanti. 14 I database di tipo Document Oriented vengono progettati intorno alla nozione di documento: i dati non sono memorizzati in tabelle con campi uniformi per ogni record, ma questi ultimi vengono memorizzati come documenti, ognuno con le proprie caratteristiche; ad ogni documento è possibile aggiungere un certo numero di campi con lunghezze anche differenti in modo tale da non avere campi vuoti all’interno dei documenti. I documenti incapsulano e codificano i dati e le informazioni secondo alcuni standard, come XML, JSON. Questi documenti possono essere individuati, all’interno della base dati, attraverso una chiave univoca (tipicamente il database possiede un indice delle chiavi per velocizzare il recupero dei documenti) e, nei sistemi più moderni, è possibile recuperare i documenti anche in base al loro contenuto, attraverso un linguaggio di query o API che variano significativamente da un’implementazione all’altra. Perciò i database di tipo Document Oriented possono essere visti come un’evoluzione di quelli Key/Value: essi avranno i vantaggi del modello Key/Value ma non si è limitati ad effettuare interrogazioni solo attraverso la chiave. Nei database di tipo Graph-Based, invece, i dati vengono memorizzati sotto forma di grafi, ossia come un insieme di nodi e archi, rappresentanti le relazioni tra i dati. Questo modello di database è stato introdotto, infatti, proprio per le applicazioni dove le informazioni sull’interconnessione dei dati sono importanti quanto i dati stessi. Rispetto ai database relazionali sono più veloci nell’associazione dei dati, scalano molto facilmente permettendo di memorizzare grandi quantità di dati, non utilizzano operazioni di join e sono adatti a gestire dati mutevoli. Le relazioni tra i nodi sono utilizzate, ad esempio, dall’operazione di attraversamento (graph traversal), che stabilisce come passare da un nodo all’altro e ciò può essere utile in applicazioni complesse, che contengono numerosi dati interconnessi, come i social networks. Tra i database di tipo graph-based analizzeremo, di seguito, AllegroGraph. 15 Capitolo 3: AllegroGraph AllegroGraph, realizzato da Franz Inc., è un database di tipo graph-based ed è alla base di molte applicazioni del Semantic Web2. E’ in grado di memorizzare i dati sotto forma di triple ed effettua interrogazioni attraverso diversi linguaggi come SPARQL e Prolog3. Le informazioni vengono quindi memorizzate secondo il modello di dati di tipo RDF4, che si basa sull’idea di raggruppare le informazioni sotto forma di espressioni del tipo soggetto-predicato-oggetto; in realtà anche se si è soliti parlare di triple, ogni asserzione ha cinque campi: Soggetto Predicato Oggetto Grafo Triple-id I primi quattro campi sono stringhe di dimensione arbitraria, l’ultimo campo rappresenta l’identificatore della tripla. E’ possibile rappresentare ciascuna struttura a grafo considerando i soggetti e gli oggetti come nodi, mentre i predicati 2 Il Semantic Web rappresenta un’evoluzione del World Wide Web, in quanto si cerca di dare ai dati presenti sul web un “significato”, in modo da poterli identificare e mettere in relazione. In questo modo, nuove possibilità di analisi e di navigazione dei dati verranno fornite all’utente che vuole effettuare una ricerca. 3 SPARQL(Simple Protocol And RDF Query Language) è un linguaggio di interrogazione e recupero dei dati espressi in RDF. Prolog è un linguaggio di programmazione che adotta il paradigma di programmazione logica. 4 Il Resource Description Framework (RDF) è lo strumento base proposto da WC3 (World Wide Web Consortium), organizzazione non governativa internazionale che ha come scopo quello di sviluppare tutte le potenzialità del World Wide Web, per la codifica, lo scambio e il riutilizzo di metadati strutturati e consente l’interoperabilità tra applicazioni che condividono le informazioni sul Web. Lo statement permette di rappresentare un’informazione in RDF ed è una tripla del tipo Soggetto-Predicato-Oggetto, dove il soggetto rappresenta una risorsa, il predicato rappresenta una proprietà e l’oggetto un valore. 16 identificheranno i collegamenti tra i vari nodi; in questo modo avremo una tripla per ciascun collegamento e il campo grafo permetterà di conservare delle informazioni aggiuntive. Quindi, anche se utilizza un modello di dati di questo tipo, nulla vincola AllegroGraph al mondo dell’RDF e potrà, perciò, essere considerato un vero e proprio database grafico. Per velocizzare le query, sono stati introdotti degli indici che contengono non solo le asserzioni ma anche informazioni aggiuntive ed, inoltre, si tiene traccia anche delle triple cancellate. Per molte applicazioni, come tutti i database grafici, può essere più veloce e flessibile dei tradizionali database relazionali grazie al fatto che tutto è indicizzato ed è possibile aggiungere nuovi predicati senza cambiare nessuno schema. 3.1 Caratteristiche generali AllegroGraph dà la possibilità di manipolare i dati attraverso diverse interfacce e linguaggi, come Java e Lisp e caricare grandi quantità di dati di tipo N-Triples5, RDF/XML6, Turtle7 e altri formati. In aggiunta, supporta una vasta gamma di tipi di dati codificati come numeri, date e coordinate geospaziali; l’utilizzo di questi tipi di dati, non solo riduce la dimensione del triple store8, in quanto i dati che formano la stringa non devono essere salvati, ma permette di realizzare inoltre delle query molto veloci e di tipo geospaziale. AllegroGraph, infatti, costruisce gli indici automaticamente in modo da velocizzare l’esecuzione delle query. E’ possibile abbreviare i tipi di indici utilizzando s per il soggetto, p per il predicato e così via. Ciò che conta è il criterio di ordinamento delle triple, ad esempio per l’indice spogi avremo prima il soggetto, poi il predicato, l’oggetto, il grafo e infine l’id. 5 Le triple N-Triples sono una sequenza di termini RDF che rappresentano il soggetto, il predicato e l’oggetto di una tripla RDF. Ogni sequenza termina con un “.”. 6 RDF/XML è una sintassi che viene utilizzata per rappresentare un grafo RDF come un documento XML. 7 Un documento Turtle è una rappresentazione testuale di un grafo RDF, costituito da triple Soggetto-PredicatoOggetto. 8 Un triple store è un database realizzato per la memorizzazione e il recupero di triple RDF. Sarà poi possibile recuperare le informazioni memorizzate attraverso un linguaggio di query, ad esempio SPARQL. 17 E’ possibile che vengano memorizzate triple duplicate, perché ad esempio due utenti in maniera indipendente creano la stessa tripla. Dato che, triple duplicate riducono l’efficienza del sistema, viene messa a disposizione una funzione che permette di eliminare triple identiche. Questa funzione, delete-duplicate-triples, ci permette di specificare cosa intendiamo per triple identiche, perché possono essere uguali se hanno lo stesso soggetto, predicato, oggetto, grafo così come possiamo ritenerle identiche se hanno lo stesso soggetto, predicato e oggetto, ignorando il grafo. 3.2 Funzionalità avanzate AllegroGraph supporta diversi tipi di dati specializzati per la memorizzazione efficiente, manipolazione e ricerca di informazioni dei Social Network, geospaziali e temporali. Visualizzando interazioni come le connessioni in un grafo, possiamo trattare un gran numero di situazioni diverse utilizzando strumenti messi a disposizione dal Social Network Analysis (SNA). SNA ci permette di rispondere a domande come: Quanto strettamente sono connessi due individui tra loro? Quali gruppi possiamo individuare all’interno dei dati? Quanto è importante una determinata persona (o società) per il flusso di informazioni? Quante probabilità ci sono che due persone si conoscano? Il campo è pieno di tecniche matematiche e potenti algoritmi per rispondere a tali 18 domande e gli strumenti messi a disposizione da AllegroGraph comprendono una serie di metodi di ricerca e strumenti per misurare la centralità e l’importanza dei vari individui. 3.2.1 Primitive geospaziali e temporali AllegroGraph fornisce un nuovo meccanismo per la memorizzazione e per il recupero di dati multi-dimensionali, in particolare per i dati di localizzazione. Anche se spesso ci riferiamo a questi tipi di dati con “geospaziali”, questo termine in realtà si riferisce specificamente a posizioni o ad un intorno della superficie terrestre. AllegroGraph, invece, supporta una nozione più generale di sistemi ad ordinate di tipo N-dimensionale, rappresentanti ad esempio la latitudine, la longitudine, l’altitudine, il tempo, ecc., che potrebbero essere utilizzati in campi di tipo non-geo, come la produzione di semiconduttori (ad es. la superficie di un chip di silicio) e la biologia. Sebbene non vi sia alcun limite rigido nel numero di dimensioni, in pratica non si utilizzano più di 5 o 6 dimensioni. AllegroGraph permette, inoltre, il recupero e l’archiviazione di dati temporali, oltre che spaziali, come istanti di tempo, intervalli di tempo, data e ora; una volta che i dati sono stati codificati, le applicazioni possono eseguire query sulla base di un’ampia gamma di vincoli temporali sui dati, includendo relazioni come: due istanti due intervalli istanti e intervalli istanti e date intervalli e date 3.3 Indicizzazione AllegroGraph utilizza un insieme di indici ordinati per identificare rapidamente un blocco contiguo di triple e sono caratterizzati da nomi che ne descrivono 19 l’organizzazione; il set predefinito di indici a disposizione sono spogi, posgi, ospgi, gspoi, gposi, gospi e i, dove: S sta per l’URI9 soggetto; P sta per l’URI predicato; O sta per l’URI oggetto o letterale; G sta per l’URI che rappresenta il grafico; I sta per l’identificatore della tripla. Questi sette indici standard sono disponibili quando si crea un triple store, ma è anche possibile eliminare gli indici che l’applicazione non userà e realizzare indici personalizzati. L’ordine delle lettere indica come un indice è organizzato, ad esempio l’indice spogi contiene tutte le triple ordinate prima per soggetto, poi per predicato, oggetto e infine per grafo, l’identificativo è presente come quinta colonna dell’indice. Se il soggetto è noto, questo indice ci permetterà di trovare tutte le triple che hanno quel determinato valore come soggetto, raggruppate in un blocco. Questo blocco è ulteriormente ordinato secondo il predicato, in modo tale che se il valore del predicato è noto, possiamo immediatamente ridurre le possibili corrispondenze a un piccolo insieme di triple, di solito a una sola tripla. Per cui questo tipo di indice verrà utilizzato quando è noto il soggetto, o sono noti soggetto e predicato, o soggetto predicato e oggetto, o soggetto predicato oggetto e grafo. L’indice posgi verrà utilizzato per ricercare soggetti ignoti, quando il predicato e l’oggetto sono specificati, così come ci si servirà dell’indice ospgi se è noto il valore dell’oggetto, attraverso il quale si potrà ricavare il corrispondente soggetto e predicato. Gli indici basati sul grafo gspoi, gposi, e gospi vengono utilizzati quando il triple store è diviso in sottografi. Se si conosce il sottografo, possiamo isolare tutte le sue triple e successivamente indicizzare attraverso il soggetto, il predicato o l’oggetto se necessario. Infine l’indice i ci permette di avere un elenco di tutte le triple ordinate per 9 L’URI, Uniform Resource Identifier, rappresenta una stringa utilizzata per identificare univocamente una risorsa generica che può essere un indirizzo Web, un documento, un file, ecc. 20 id. Ciò è utile quando si vuole effettuare una cancellazione attraverso l’id della tripla, infatti attraverso l’id è possibile identificare univocamente una determinata tripla ed AllegroGraph potrà cancellare la stessa tripla dagli altri indici. Ciò rende più veloce la cancellazione, dato che senza tale indice avrebbe dovuto analizzare ogni singola linea per trovare la corrispondenza tra gli id. 3.4 Esempio applicativo Di seguito verrà riportato un esempio di utilizzo di Allegrograph, realizzato nell’ambito del progetto SMART HEALTH, il cui obiettivo è realizzare un sistema tecnologico che permetta di realizzare un nuovo modello di Sanità digitale basato sulla cooperazione tra le diverse entità della Sanità. Dopo una prima fase di installazione di AllegroGraph Virtual Machine, è stato utilizzato Gruff per realizzare query su un file dati ti tipo NTRIPLES. 3.4.1 Gruff Gruff è un triple-store browser interattivo basato su AllegroGraph, fornisce vari metodi di interrogazione e permette il recupero dei dati in maniera semplice e veloce con numerosi strumenti per tracciare grafici, visualizzare tabelle di proprietà dei vari nodi, gestire e realizzare query come diagrammi visivi. Nella modalità di visualizzazione grafica, i dati vengono visualizzati sotto forma di nodi e i collegamenti tra i dati sono rappresentati da archi, in modo tale da avere un “grafico” delle informazioni che stiamo analizzando, mentre la visualizzazione tabellare permette di vedere le proprietà di ogni singolo nodo. Per la realizzazione delle query, è possibile utilizzare query view dove è possibile scrivere query in SPARQL o Prolog e visualizzare i risultati all’interno di una tabella. I nodi risultanti potranno essere analizzati in dettaglio passando in modalità table view o aggiungendo i nodi all’interno del graph view; se si sceglie invece di realizzare query attraverso il graphical query 21 view, la realizzazione delle query risulterà ancora più semplice in quanto sarà possibile elaborare una query come se fosse un “diagramma”, disegnando nodi ed archi. 3.4.2 Realizzazione query attraverso l’uso della query view Prima di iniziare con le interrogazioni, è stato realizzato un nuovo Triple-Store e caricato un file di cartelle mediche contenenti informazioni su vari pazienti, quali le diete seguite, le diagnosi con cui sono stati dimessi, il tipo di alimentazione, il reparto nel quale sono ricoverati, la malattia da cui sono affetti, il sesso, l’età, ecc., attraverso il comando Load N-Triples. Per avere una visione grafica delle triple caricate, grazie al comando Display Some Sample Triple, è stato possibile vedere graficamente parte dei nodi e dei collegamenti tra gli stessi: dove i link di collegamento hanno colori diversi in base alle proprietà che rappresentano. Per poter effettuare delle query sulle 12368 triple caricate, verrà utilizzata la modalità query view e scelto come linguaggio di interrogazione SPARQL. 22 1.Supponiamo di voler sapere per ogni paziente l’intervento subito. All’interno della query avremo perciò come variabili il paziente e l’intervento, che saranno contrassegnate con un punto interrogativo: La select definisce le variabili da prendere in considerazione nel risultato; la where definisce il criterio di selezione specificando tra parentesi graffe un “triple pattern”, mentre limit pone un limite superiore al numero di risultati restituiti, in questo caso vengono mostrati solo i primi 100. Eseguendo la query con Run Query, l’elenco di tutti i pazienti con i relativi interventi verrà mostrato all’interno di una tabella: E’ possibile avere una vista grafica dei risultati cliccando su Create Visual Graph e ottenendo l’insieme dei nodi dei pazienti collegati ognuno al nodo intervento subito; nell’immagine riportata di seguito sono presenti i pazienti che hanno subito l’asportazione dell’appendice, l’appendicectomia: 23 2.Nel caso in cui si vuole effettuare una query più specifica, ad esempio si vogliono conoscere i pazienti che soffrono di uno specifico disturbo, ad esempio l’inappetenza, allora sarà necessario introdurre una sola variabile (paziente): e come risultato avremo in questo caso solo l’elenco dei pazienti che soffrono di inappetenza: 24 Dal punto di vista grafico, rispetto al caso precedente, avendo fatto una selezione, avremo un minor numero di nodi: Per avere informazioni dettagliate, è possibile visualizzare per ogni singolo nodo tutte le informazioni possibili ed avere anche informazioni su eventuali altri nodi cliccando su Table View : 25 Come ultimo esempio, supponiamo di avere due condizioni da voler soddisfare: 3. Si vuole sapere quali sono i pazienti di sesso femminile e quelli che sono stati dimessi con diagnosi di insufficienza respiratoria. In questo caso utilizzeremo la parola chiave UNION, che esprime un OR logico: la query catturerà sia le triple che soddisfano il primo triple pattern, sia quelle che soddisfano il secondo. I risultati verranno riportati in tabella: mentre dal punto di vista grafico avremo: 26 E’ possibile anche memorizzare la query con i relativi risultati contenuti nella tabella in un file attraverso l’opzione Write Text Report: Oltre ad essere salvati i risultati ottenuti, abbiamo anche informazioni sulla velocità di esecuzione della query, in questo caso sono state trovate 100 soluzioni in 0,175 secondi. 27 Conclusioni In questo elaborato abbiamo analizzato il fenomeno dei Big Data e i motivi per cui sono stati introdotti database di tipo non relazionale, concentrando particolare attenzione su uno dei database a grafi, AllegroGraph. Sono state analizzate le principali caratteristiche e vantaggi di questo moderno e high-performance database, progettato per avere massima velocità di caricamento e di realizzazione delle query. Come la maggior parte dei database a grafi, si è sviluppato ed è stato utilizzato principalmente grazie alle potenzialità legate all’espressività e alla facilità di analisi nella risoluzione di molteplici problemi e alla velocità nell’associazione di insiemi di dati. Numerose sono ad oggi le aziende e le istituzioni che utilizzano AllegroGraph, dal campo della Bioinformatica alla Sanità come Mayo Clinic, Merck e Novartis, dal campo della Difesa come DISA (Defence Information Systems Agency) e ONR (Office of Naval Research), al campo finanziario come Bank of America e Hoovers, dal campo governativo come la NASA al campo manifatturiero come Ford e Siemens, dal campo dei media come Kodak e Adobe al campo delle tecnologie e delle telecomunicazioni come SAP e KTF e l’elenco è destinato a crescere nei prossimi anni. 28 Bibliografia [1] http://it.wikipedia.org/wiki/Big_data [2] http://deloitte.wsj.com/cfo/files/2013/09/TooBigIgnore.pdf [3] http://losviluppatore.it/big-data-dalla-teoria-allimplementazione/ [4] http://it.wikipedia.org/wiki/NoSQL [5] http://www.garr.it/eventiGARR/conf10/docs/poster-boraso-conf10.pdf [6] http://arxiv.org/ftp/arxiv/papers/1401/1401.2101.pdf [7]……...http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.6951&rep=rep 1&type=pdf [8] http://www2.mokabyte.it/cms/article.run?permalink=mb186_BrewerCAP-1 [9] http://nosql-database.org/ [10] http://blog.artera.it/programmazione/sql-nosql-database-non-relazionali [11] http://franz.com/agraph/allegrograph/ 29