Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Basi di Dati Tecnologie NoSQL: SESAME Anno Accademico 2014/2015 Candidato: Antonio Giordano matr. N46000441 Alla mia famiglia ai miei amici a me Indice Indice .................................................................................................................................................. III Introduzione ......................................................................................................................................... 4 Capitolo 1: Sistemi NoSQL ................................................................................................................. 6 1.1 Il Teorema CAP..........................................................................................................................9 1.2 Parametri di qualità .................................................................................................................. 10 1.3 Vantaggi ................................................................................................................................... 12 1.4 Svantaggi .................................................................................................................................. 12 Capitolo 2: RDF Store........................................................................................................................ 13 2.1 Implementazione ...................................................................................................................... 14 2.2 Inferenza................................................................................................................................... 15 2.3 Triplestore vs NoSQL Graph Database ................................................................................... 17 Capitolo 3: SESAME ......................................................................................................................... 18 3.1 Database manager .................................................................................................................... 19 3.2 Portabilità ................................................................................................................................. 20 3.3 Specifiche tecniche .................................................................................................................. 21 3.3.1 Applicazioni integrate ....................................................................................................... 21 3.3.2 Pannello sempre disponibile……............…………………...………...…………………21 3.3.3 Anteprima del lavoro di progettazione..............................................................................21 3.3.4 Potenti funzionalità di ricerca............................................................................................22 3.3.5 Importazione ed esportazione ...........................................................................................22 3.3.6 Report................................................................................................................................22 Conclusioni ........................................................................................................................................ 23 Bibliografia ........................................................................................................................................ 24 Introduzione La rivoluzione introdotta da internet nell'era del web 2.0 ha completamente stravolto l'approccio ingegneristico alla gestione, memorizzazione e trasmissione dell'informazione. Le esigenze degli utenti si sono modificate facendo quindi in modo che l'attenzione si focalizzasse su cosa fosse veramente importante per un servizio online: la disponibilità delle informazioni, la consistenza dei dati, i tempi di risposta. Per comprendere facilmente quanto descritto sopra basti pensare alla classifica dei film più venduti del 2015, aggiornata fino al momento in cui l'utente decide di visualizzarla: dal punto di vista dell'utente è molto meglio accedere istantaneamente alla pagina della classifica (anche se non aggiornata perfettamente) piuttosto che aspettare un tempo indefinito ed ottenere un informazione consistente o aggiornata al secondo. In casi come questi le caratteristiche rigide dei sistemi relazionali possono diventare un vero e proprio collo di bottiglia per sistemi che potrebbero svincolarsi, seppur marginalmente, dall'affidabilità delle informazioni. In aggiunta l’arrivo di internet negli anni 90 ha indotto una vera e propria crescita esponenziale dei servizi online; il caso più esemplare che possiamo citare è Amazon, nata solo nel 1994 ma con un fatturato accertato di 61 miliardi di dollari nel 2012. 4 Sono aumentate inoltre le aziende che operano esclusivamente online (Facebook, Twitter e FourSquare ad esempio) fornendo contenuti sempre più numerosi e articolati; la disponibilità e l'affidabilità dei servizi unita alla necessità di coordinare una grande quantità di contenuti molto correlati tra loro è diventato un requisito quasi obbligatorio. Dunque la direzione intrapresa è stata quella di assicurare più il servizio o il contenuto a danno della correttezza delle informazioni o alla consistenza dei dati, fatto salvo dei casi di servizi sotto protocollo sicuro: ad esempio il settore bancario o alcune fasi di sicurezza dei dati nel commercio elettronico. I fautori di questo nuovo approccio sono stati Google e Amazon con i loro sistemi proprietari (rispettivamente BigTable e Dynamo) ma da subito si sono sviluppati sistemi di gestione equiparabili e diversi dai DBMS Relazionali (RDBMS). A questi nuovi sistemi è stato dato il nome di DBMS NoSql proprio per specificare il suo carattere determinante, sia come garanzia che come inflessibilità: la mancanza delle relazioni. Analizzeremo quindi la struttura principale e le caratteristiche di alcuni sistemi NoSql, fino ad arrivare al Sesame, un DBMS NoSQL nativo che si propone di rivoluzionare il tradizionale schema relazionale dei database in uso, per potenziarne le prestazioni, i tempi di risposta e l'adattabilità alle sempre crescenti esigenze di sicurezza e consistenza dei dati. 5 Capitolo 1: Sistemi NoSQL In passato i database relazionali venivano usati veramente ovunque, poichè ricchi di specifiche e funzionalità uniche che sembravano adattarsi perfettamente a qualsiasi compito che si potesse ragionevolmente affidare ad una banca dati. Tuttavia i loro punti di forza si sono rivelati nel tempo essere anche i loro più grandi difetti, in quanto la progettazione e la realizzazione di un database relazionale distribuito spesso risulta notevolmente complessa. In particolar modo è complicato, ed anche molto poco efficiente, effettuare transazioni ed operazioni di unione (join) nei sistemi distribuiti odierni, molto utilizzati nelle piattaforme social come Facebook, Twitter e altri colossi di servizi online come Google e Amazon. Ecco perché la limitatezza delle caratteristiche intrinseche di tali database tradizionali ha indotto dapprima all'ideazione e poi alla progettazione di nuove tecnologie di archiviazione dati, maggiormente appropriate per un utilizzo in ambienti distribuiti. Tali banche dati sono oggi chiamate database NoSQL. 6 In prima battuta il nome suggerisce un completo allontanamento, come sarebbe lecito aspettarsi, dalla logica relazionale e dal sistema di interrogazione dei database SQL. Ma ciò è vero solo in parte. Infatti l’acronimo esatto è “Not Only SQL”, una filosofia certamente innovativa, ma non completamente contraria alla logica relazionale. Il concetto è dunque chiaro: una singola tecnologia non basta. La maggior parte dei database NoSQL sono stati sviluppati per funzionare su cluster di computer, per interagire tra loro in maniera distribuita e orizzontale ed essere tolleranti agli eventuali fallimenti che potrebbero subire. Per raggiungere tali obbiettivi è necessario effettuare una rivalutazione delle classiche proprietà ACID del modello relazionale (Atomicità, Consistenza, Isolamento e Durabilità) in quanto non tutte possono essere rispettate contemporaneamente. Solitamente i database NoSQL sono progettati direttamente in funzione dei requisiti della maggior parte dei servizi web, e la maggior parte di essi sono liberi da schemi predefiniti (schemaless) e liberi di introdurre, o mantenere, un proprio linguaggio di interrogazione. 7 Le principali esigenze comuni a tutti i più recenti fruitori di database NoSQL sono : • Inarrestabile crescita del volume dei dati da gestire. • Bisogno improrogabile di elaborare grandi quantità di dati in poco tempo. Per comprendere questo concetto è opportuno riportare qualche numero : 3 miliardi della popolazione mondiale è costantemente online. 35 miliardi di ore vengono trascorse online ogni mese, l’equivalente di 4000 anni. 1,75 miliardi di utenti usano uno smartphone, ed il numero è in costante crescita. Tali dati, uniti alla continua espansione dell’OpenID e allo sviluppo tecnologico dei fornitori di servizi, hanno generato delle nuove necessità che subito hanno trovato il modo di essere soddisfatte. 8 1.1 Il Teorema CAP Nell’oramai già lontano 2000, Eric Brewer alla conferenza "Principle of Distribuited Computing" illustrò per la prima volta il Teorema del CAP, che rispondeva alle predette esigenze. Ogni lettera del teorema rappresenta una caratteristica ben precisa: 9 • Consistency (Coerenza): ogni utente vede in ogni istante la stessa versione del dato. • Availability (Disponibilità): tutti gli utenti possono sempre leggere e scrivere nel database. • Partition tolerance (Tolleranza al partizionamento): il sistema lavora bene nonostante sia fisicamente ripartito nella rete. Secondo il Teorema del CAP occorre scegliere solo due delle tre caratteristiche in ogni istante di tempo, poichè è impossibile farle coesistere in un sistema distribuito contemporaneamente. Per fare un esempio chiaro, Amazon ha scelto scientemente le ultime due, volendo privilegiare l'esperienza utente rispetto alla certezza di avere un sistema sempre consistente. 1.2 Parametri di qualità E' possibile mettere a confronto diversi tipi di database NoSQL tenendo conto di alcuni parametri di qualità: • Scalabilità: capacità del database di incrementare le proprie prestazioni in funzione delle risorse fornite. • Prestazione: capacità che verifica i vantaggi rispetto a determinati tipi di attività svolte con il database. • Consistenza: capacità del sistema di migrare sempre da uno stato consistente ad un altro. 10 Dunque in aggiunta alla configurazione CAP, in base ai parametri sopra riferiti distinguiamo i seguenti modelli di database NoSQL: • Relational: sistemi in cui ogni dato è rappresentato da una relazione ed è gestito da operazioni relazionali (join). • Key-Value: sistemi dove il dato è univocamente definito da una coppia "chiavevalore" e che supporta le operazioni basilari di get(), put(), e delete(). • Column-oriented: sistemi che non supportano l'operazione di join dove il dato è memorizzato in colonna e non in riga. • Document-oriented: sistemi dove il dato è strutturato come un documento (ad esempio JSON o XML) e le operazioni di join non sono previste. 11 1.3 Vantaggi L'operazione di JOIN, fondamentale nei database relazionali classici, è evitabile grazie al fatto che l'intera informazione è contenuta in ogni singolo elemento, in ogni singola tripla. I DBMS non relazionali (NRDBMS) sono molto più semplici da realizzare: l'inserimento o la cancellazione di un nodo nel sistema è impercettibile dall'utente finale e molto più veloce. Infine la progettazione di tali database viene mappata direttamente sul software applicativo dell'azienda committente, e dunque sulle classi oggetto del proprietario del database (ad esempio negozi virtuali come Amazon, o archivi di grosse quantità di dati come Google) e questo aspetto riduce di molto i tempi di sviluppo. 1.4 Svantaggi La semplicità con cui è stato presentata la "filosofia" NoSQL nasconde ovviamente dei lati negativi. Il principale è che tutto il controllo sull'integrità dei dati viene affidato al software applicativo che gestisce il database, che dunque deve essere testato accuratamente prima di essere messo in funzione. Giusto per porre un esempio, nel caso di un database relativo ad un negozio online (ad esempio Ebay), nel momento in cui un tente decide di cancellarsi dal sistema, il vecchio DBMS relazionale avrebbe provveduto a cancellare anche i relativi ordini di quel cliente e tutta la sua cronologia acquisti, attributi, feedback etc.. mentre nel database non relazionale deve essere il software di Ebay a provvedere all'integrità della banca dati. Infine la mancanza di uno standard universale è un’altra delle pecche di questi database non relazionali, ogni database ha infatti le proprie API e il suo metodo di memorizzazione e di accesso ai dati. 12 Capitolo 2: RDF Store Un RDF Store (o Triplestore) è un gestore di database costruito espressamente per l'archiviazione e il recupero di triple tramite query semantiche. Una tripla è un'entità di dati composta da soggetto-predicato-oggetto, come "Antonio ha 24 anni" o "Antonio desidera la laurea". Con il termine "web semantico", coniato dal suo ideatore, Tim Berners-Lee, si intende il progetto (ancora in itinere) che prevede la trasformazione del World Wide Web in un ambiente dove i documenti pubblicati (pagine, file, immagini, video) sono aggregati ad informazioni e dati (metadati) che ne determinano il contesto semantico in un formato idoneo all'interrogazione e l'interpretazione (facilitandone la ricerca) e, più in generale, all'elaborazione automatizzata. Con l'interpretazione del contenuto dei documenti che il Web semantico prevede, saranno possibili ricerche molto più evolute delle attuali, e altre azioni significative come la costruzione di reti di relazioni tra documenti che seguono logiche più elaborate del genuino - ma oramai superato - collegamento ipertestuale. A differenza di un database relazionale, un Triplestore è ottimizzato per la memorizzazione e il recupero di triple che possono essere importate ed esportate utilizzando il Resource Description Framework (RDF) e altri formati. I Triplestore sono Database Management Systems (DBMS) che gestiscono dati modellati con RDF. Il Resource Description Framework (RDF) è infatti lo strumento base proposto 13 da W3C per la codifica, lo scambio e il riutilizzo di metadati strutturati e consente l'interoperabilità tra applicazioni che condividono le informazioni sul Web. A differenza dei database relazionali che memorizzano i dati nelle relazioni (o tabelle) e vengono interrogati utilizzando SQL, i Triplestore utilizzano triple e vengono interrogati utilizzando un linguaggio di interrogazione chiamato SPARQL. Una caratteristica fondamentale di molti Triplestore è la capacità di fare inferenza. È importante notare che un DBMS tipicamente offre la capacità di gestire concorrenza, la sicurezza, la registrazione, il recupero e aggiornamenti, oltre al caricamento e memorizzazione dei dati. Non tutti Triplestore offrono tutte queste funzionalità (o almeno non ancora). 2.1 Implementazione Triplestores possono essere classificati in tre tipi di categorie: • I Triplestore nativi sono quelli che sono stati creati da zero per sfruttare appieno il modello dei dati RDF e memorizzare in modo efficiente. Questi includono: 4Store, AllegroGraph, BigData, Jena TDB, Sesame, Stardog, OWLIM and uRiKa. • I Triplestore RDBMS-backed sono costruiti con l'aggiunta di uno strato specifico RDF ad un RDBMS già esistente. Questi includono: Jena SDB , IBM DB2 e Virtuoso . • I NoSQL Triplestore sono state recentemente oggetto di studio come possibili gestori di archivi RDF. Diversi studi comparativi sono stati fatti per valutare le prestazioni dei Triplestore, ad esempio dei Benchmark popolari sono Lehigh University Benchmark (LUBM), Berlin SPARQL Benchmark (BSBM) , SP2Bench e recentemente il Benchmark DBpedia. 14 Qual è il miglior Triplestore? Si dovrebbero controllare tutti i risultati in funzione di ciascun criterio di riferimento. Non esiste una risposta giusta. 2.2 Inferenza Una caratteristica fondamentale di un RDF Store è la capacità di fare inferenza per le query. L'inferenza è il processo grazie al quale da una affermazione presa come vera si passa a una seconda affermazione la cui verità deriva dal contenuto della prima. Per comprendere tale concetto, procediamo con un esempio di facile intendimento. Si consideri il seguente ontologia OWL: ex1:FullProfessor rdf:subClassOf ex1:Professor. ex1:AssistantProfessor rdf:subClassOf ex1:Professor. ex1:Professor owl:equivalentClass ex2:Teacher In cui si afferma che un professore ordinario e un assistente sono entrambi professori. Abbiamo che l'insegnante semplice, appartiene ad una classe equivalente al professore. Consideriamo in seconda battuta i seguenti dati: ex1:Bob rdf:type ex1:FullProfessor ex1:Alice rdf:type ex1:AssistantProfessor ex2:Mary rdf:type ex2:Teacher Viene dichiarato quindi che Bob è un professore ordinario, Alice è un Assistant Professor e Maria è un insegnante semplice. Analizziamo la risposta del NRDBMS alla seguente query SPARQL: 15 SELECT ?x WHERE { ?x rdf:type ex1:Professor } Se la funzionalità di inferenza non è abilitata, la risposta alla domanda è vuota poichè i dati non affermare in maniera esplicita che qualcuno è un professore. Tuttavia, è possibile dedurre che sia Bob, sia Alice, sia Mary sono tutti professori perché sappiamo che professori ordinari e professori associati sono entrambi professori, e gli insegnanti sono anche professori. Un altro predicato ampiamente usato per l'inferenza in OWL è il costrutto sameAs. Consideriamo a tal proposito i seguenti dati: ex1:Bob foaf:name "Bob Smith" . ex1:Bob owl:sameAs ex2:Smith . ex2:Smith foaf:phone "555-1234" . Analizziamo la risposta del NRDBMS a questa nuova query SPARQL: SELECT ?name ?phone WHERE { ex1:Bob foaf:name ?name . ex1:Bob foaf:phone ?phone . } Senza inferenza, la risposta alla query sarebbe vuota poichè non c'è tripla che abbia come soggetto "Bob" e predicato "telefono". Tuttavia, se l'inferenza è abilitata, si può dedurre che Bob ha come numero di telefono "555-1234", proprio perché si tiene conto che "Bob" è la stessa cosa (sameAs) di Smith, e che Smith ha numero di telefono "555-1234". 16 2.3 Triplestore vs NoSQL Graph Database Database come Neo4j, HyperGraphDB e InfiniteGraph, archiviano e gestiscono dati rappresentandoli come grafici. Dato che il modello di dati RDF può essere interpretato come un grafico particolare, è giusto affermare che Triplestore è un tipo di database grafico. Tuttavia è possibile evidenziare diverse sue peculiarità. I Triplestore sono stati implementati per memorizzare RDF, che è assimilabile ad un particolare tipo di grafico: un grafico direttamente etichettato. Un database NoSQL è in grado di memorizzare diversi tipi di grafici: grafici senza etichetta, grafi non orientati, grafici pesati, ipergrafi, etc.. Un database grafico non supporta necessariamente il modello RDF, o il linguaggio SPARQL, o comunque qualsiasi tipo di inferenza. Tuttavia esso potrebbe essere utilizzato per memorizzare RDF ma potrebbe, al contempo, non fornire lo stesso set di funzionalità che ci si aspetta da un RDF Store. In definitiva possiamo dire che un RDF è un database grafico, ma non tutti i database grafici sono degli RDF Store. 17 Capitolo 3: Sesame Sesame è un ambiente di esecuzione open source Java per l'elaborazione di dati RDF. Questo include analisi, conservazione, inferenza e interrogazione di su tali dati. Esso gode chiaramente di tutte le caratteristiche finora incontrate nel trattamento dei sistemi NoSQL, ed offre una API di facile impiego che può essere collegata a tutte le principali applicazioni di archiviazione RDF. Esso permette di connettersi con gli endpoint SPARQL e creare applicazioni che sfruttano il legame dei dati connessi grazie al Web Semantico. Sesame offre due tipi di database RDF (quella interna ad esso e quella nativa), e in aggiunta sono disponibili anche molte altre soluzioni di memorizzazione fornite da aziende di terze parti. Tale ambiente offre una ampia scala di strumenti messi a disposizione degli sviluppatori per sfruttare la potenza di RDF e i relativi standard. Sesame supporta pienamente il linguaggio di interrogazione e aggiornamento SPARQL che consente l'esecuzione di query espressive ed offre inoltre l'accesso trasparente al repository remoto RDF utilizzando esattamente la stessa API utilizzata per l'accesso locale. Infine, Sesame supporta tutti i formati di file, tra cui il tradizionale RDF, RDF / XML, Turtle, N-triple, N-Quads, JSON-LD, trig e TriX. 18 3.1 Database manager Sesame è un potente gestore di database, flessibile e progettato per soddisfare le esigenze di una vasta gamma di usi e utenti. Che sia una piccola impresa, un amministratore aziendale, uno sviluppatore di applicazioni professionali, o la persona il cui compito è quello di tenere traccia di qualcosa, Sesame ha tutto il necessario per creare rapidamente applicazioni di database, organizzare e presentare le informazioni contenute in essi. L'intuitività e la semplicità sono le sue caratteristiche centrali. Esso presenta infatti un'interfaccia basata su form coerente e query intiuitive (se si digita Giordano nel campo Cognome e si preme F10 si ottiene il record Giordano), ed è inoltre portatile in HTML (web-ready) consentendo di creare applicazioni funzionanti in breve tempo. Sesame offre inoltre strumenti più avanzati per migliorare ulteriormente le applicazioni già operanti. 19 3.2 Portabilità Se si passa a Sesame da un altro DBMS, Sesame dispone di una varietà di servizi integrati in grado di aiutare l'utente a semplificare questa transizione. Se si sta attualmente utilizzando un altro software è infatti possibile usufruire di servizi di importazione dati attraverso un apposito strumento, in grado di effettuare anche importazioni gerarchiche durante la migrazione da un database relazionale. Sesame fornisce funzionalità client-server come se fossero diverse "personalità" dello stesso programma. Ciò significa che una copia di Sesame può funzionare in modalità standalone su un singolo computer o servire gli altri utenti connettendosi a un server Sesame. Sesame è infine un software multipiattaforma, attualmente disponibile sia per Microsoft Windows ™ sia per Linux, e il futuro della gestione dei dati personali e del business non potrà prescindere da questa sua semplice ma rivoluzionaria proprietà. 20 3.3 Specifiche tecniche 3.3.1 Applicazioni integrate Sesame ha gli strumenti che consentono di creare applicazioni aziendali complesse come immissione di ordini fatturazione, gestione dei contatti e sistemi di pianificazione. In un'applicazione che gestisce gli inserimenti degli ordini di acquisto di un azienda, per esempio, è possibile collegare i clienti, i prodotti e la fattura e aggiungere la personalizzazione in modo che gli ordini possano essere completati semplicemente puntando e cliccando su liste di selezione pop-up, ed ottenere la fattura stampata con un semplice clic. 3.3.2 Pannello sempre disponibile Sesame offre due modi per ottenere una visione chiara della struttura del database da gestire. Strutture, funzioni e comandi di navigazione possono essere visualizzati con un menu ad albero o tasti ad eventi. La maggior parte delle funzioni sono accessibili con la tastiera o il mouse. L'innovazione principale consiste nel fatto che non è più necessaria la noiosa caccia attraverso una confusa matrice di tasti a discesa per trovare l'attività che si desidera eseguire, infatti il menu del pannello può essere opzionalmente nascosto tramite il menu Visualizza/Nascondi. 3.3.3 Anteprima del lavoro di progettazione La modalità di anteprima consente di visualizzare in anteprima e testare la struttura delle applicazioni prima della loro integrazione nell'applicazione da implementare. Questo approccio è rivoluzionario per la gestione di un database, in quanto vuol dire che si può lavorare, modificare e migliorare le proprie applicazioni parallelamente al suo utilizzo, e quindi valutandone in tempo reale le prestazioni. 21 3.3.4 Potenti funzionalità di ricerca La possibilità di cercare i record che soddisfino i criteri delle query è una funzione fondamentale in qualsiasi gestore di database. Sesame offre una serie completa di strumenti per descrivere ed adattare i record recuperati fino a restituire esattamente i record richiesti nella query. Questi includono le ricerche normali, le ricerche additive, sottrattive, le ricerche drill-down, le ricerche invertite e universali. 3.3.5 Importazione ed esportazione di record Sesame può importare ed esportare intere gerarchie di record. Un import gerarchico crea automaticamente sia il record padre sia il sotto-record. Questo è un grande strumento sia per esportare i dati in un altro programma (come Microsoft Word) o per importare dati da un altro RDBMS. Sesame importa i file ASCII in stile CSV ed esporta file di testo ASCII con una vasta scelta di opzioni di esportazione per personalizzare il modo in cui il file esportato verrà formattato. 3.3.6 Report I report, basati su HTML, combinati con un veloce ed intuitivo Report Designer crea possono immediatamente essere inviati via email, caricati su un sito web, stampati o visualizzati in un qualsiasi browser. Poiché i report di Sesame sono HTML, possono essere facilmente importati in molti altri programmi di videoscrittura, fogli elettronici e database framework. Sesame supporta sia il formato in colonna sia le relazioni in formato libero, o ancora, una combinazione di entrambi gli stili. 22 Conclusioni In definitiva, il NoSQL è un concetto articolato e multiforme, che va analizzato sotto diversi punti di vista e sfaccettature per capirne la reale portata ed i benefici che esso può portare alla comunità. Sicuramente la capacità di gestire Big Data fa parte oramai di un qualsiasi strumento di analisi evoluto e proiettato al futuro, e questo aspetto porterà le tecnologie NoSQL ad essere protagoniste e pioniere del mondo virtuale del futuro, il Web Semantico. 23 Bibliografia [1] http://www.nosql-database.org/ [2] http://www.wikipedia.org [3] “Big Data: Architettura, tecnologie e metodi per l’utilizzo di grandi basi di dati”, Maggioli Editore, 2013 [4] http://www.html.it/articoli [5] http://blog.nahurst.com/visual-guide-to-nosql-systems [6] http://www.internetpost.it/i-database-non-relazionali-cosa-significa-nosql/ [7] http://arxiv.org/ftp/arxiv/papers/1401/1401.2101.pdf [8] http://www.sesamedatabase.com/features_detail.html 24