Tecnologie NoSQL: HBase



Documenti analoghi
HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

Linee di evoluzione dei Database

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Big Data. Davide Giarolo

Il database management system Access

Progettaz. e sviluppo Data Base

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

MODULO 5 Appunti ACCESS - Basi di dati

1. BASI DI DATI: GENERALITÀ

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Lezione 1. Introduzione e Modellazione Concettuale

Database. Si ringrazia Marco Bertini per le slides

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Base di dati e sistemi informativi

Approccio stratificato

Creare una Rete Locale Lezione n. 1

Progettazione di Basi di Dati

Capitolo 4 Pianificazione e Sviluppo di Web Part

Introduzione all Architettura del DBMS

SQL, NoSQL, o entrambi?

I database relazionali (Access)

La Metodologia adottata nel Corso

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Facoltà di Farmacia - Corso di Informatica

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Architetture Applicative

Strutturazione logica dei dati: i file

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Organizzazione degli archivi

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Access. P a r t e p r i m a

SOLUZIONE Web.Orders online

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Progettazione di un Database

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Scenario di Progettazione

Novità di Access 2010

Base Dati Introduzione

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Automazione Industriale (scheduling+mms) scheduling+mms.

Sistemi Informativi e Sistemi ERP

Le Basi di Dati. Le Basi di Dati

IT Cloud Service. Semplice - accessibile - sicuro - economico

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Introduzione al data base

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

IL SISTEMA INFORMATIVO

MService La soluzione per ottimizzare le prestazioni dell impianto

Il sistema C.R.M. / E.R.M.

INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Appunti sulla Macchina di Turing. Macchina di Turing

L o. Walter Ambu japs: una soluzione agile (

Introduzione ai database relazionali

Università degli Studi di Salerno

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

SDD System design document

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

Corso di Informatica

Brochure Internet. Versione The Keyrules Company s.r.l. Pagina 2 di 8

Concetti di base di ingegneria del software

Le Infrastrutture Software ed il Sistema Operativo

Le fattispecie di riuso

Sistemi Informativi e Basi di Dati

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

CONTENT MANAGEMENT SY STEM

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Gestione della memoria centrale

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

SCENARIO. Personas ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Coordinazione Distribuita

Corso di Informatica (Basi di Dati)

Manuale d'uso. Manuale d'uso Primo utilizzo Generale Gestione conti Indici di fatturazione Aliquote...

Sistemi informativi secondo prospettive combinate

Presentazione MyMailing 3.0

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Dispensa di database Access

Più processori uguale più velocità?

La tecnologia cloud computing a supporto della gestione delle risorse umane

Generazione Automatica di Asserzioni da Modelli di Specifica

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

IL MARKETING E QUELLA FUNZIONE D IMPRESA CHE:

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

MANUALE DELLA QUALITÀ Pag. 1 di 6

SOFTWARE PER LA RILEVAZIONE PRESENZE SUL WEB

Progetto Virtualizzazione

Informatica Documentale

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Transcript:

Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Basi di Dati Tecnologie NoSQL: HBase Anno Accademico 2014/2015 Candidato: Daniela Bianco matr. N46001409

Ai miei genitori, per esser stati un assiduo sostegno durante questo percorso. Alla mia dolce metà, per aver camminato al mio fianco.

Indice Indice. III Introduzione.4 Capitolo 1: Sistemi NoSQL...6 1.1Vantaggi e svantaggi.......7 1.2 Confronto con i RDBMS...7 1.3 Base Teorema CAP...9 1.4 Classificazione dei database NoSQL...11 Capitolo 2 : Big Data.14 2.1 Caratteristiche....15 2.2 Gestione dei Big Data..16 2.2.1 Limiti dei RDBMS e nuovi approcci per l elaborazione dei Big Data......16 Capitolo 3: HBase...18 3.1 Modello dei dati...19 3.2 Architettura.. 20 3.3 Caratteristiche..20 3.4 HBASE VS RDBMS...21 3.5 HBASE VS HDFS...21 3.6 Sperimentazione..22 Conclusione...29 Bibliografia....30 Ringraziamenti......31

Introduzione La tesi ha lo scopo di analizzare il mondo dei database non relazionali, che rappresentano un quadro completamente diverso di database, infatti riescono a garantire alte prestazioni ed elaborazioni agili di informazioni su scala massiccia. In altre parole, se in passato non esisteva un modo conveniente per memorizzare e analizzare moli di dati, oggi con questa infrastruttura di database NoSQL si riesce a gestire pesanti richieste di grandi dati. Di fatto è stata la soluzione per gestire alcuni dei più grandi data warehause come Google, Amazon, Facebook, Twitter e tanti altri. Nel primo capitolo verranno discusse le principali caratteristiche dei database NoSQL, i quali saranno poi messi a confronto con i database relazionali. Verrà esposto il teorema CAP e infine verranno introdotte le categorie di database non relazionali. Il secondo capitolo sarà dedicato al concetto di Big Data, descrivendone le caratteristiche e la loro gestione. Infatti l utilizzo di questi Big Data ha permesso di ottenere la massimizzazione e la concretezza del valore delle informazioni, portando molte aziende a sviluppare le loro architetture di gestione dei dati in un sistema di gestione dei Big Data. Quest ultimo si è adeguato a tutte le tipologie di dati provenienti da varie fonti come Hadoop, dati relazionali e NoSQL, assicurando un buon livello di sicurezza e controllo per le informazioni sensibili o regolamentate. In azienda, con i Big Data si assiste ad un cambiamento dei modelli di produzione delle informazioni, ciò ha contribuito a nuove forme di conoscenza aziendale più ampia e profonda degli oggetti (clienti, prodotti, concorrenti, canali, ect.) e degli eventi (ordini, pagamenti, traporti, etc.) di business. 4

Infine nel terzo capitolo verrà preso come caso di studio il database NoSQL HBASE. E un database adatto a molti casi di utilizzo, alcuni tra quali sono: la gestione dei sistemi di messaggistica, come Facebook; l acquisizione di dati raccolti in modo incrementale da varie origini; l esecuzione di query in tempo reale; e l uso di HBase come piattaforma per le applicazioni. Di HBase si focalizzerà l attenzione sul modello dei dati, sull architettura, sulle caratteristiche e come ultimo step verrà illustrato il linguaggio di interrogazione di questo database sia attraverso un interazione con la shell di HBase e sia con l interfaccia web. 5

Capitolo 1: Sistemi NoSQL La rapida evoluzione tecnologica, unita all insoddisfazione del mondo web, dovuta alla rigidità del modello relazionale e all esigenza di grande scalabilità orizzontale, hanno fatto emergere nuove esigenze applicative. Infatti negli ultimi anni sono stati progettati nuovi sistemi, che hanno cercato di aggirare il rigido modello relazionale, aumentando il livello delle prestazioni nella gestione e interrogazione dei dati. Questi sistemi sono stati inglobati sotto il termine NoSQL. Cosa si intende per NoSQL? Il termine NoSQL fu adoperato per la prima volta nel 1998 per una base di dati relazionale open source 1 che non utilizzava un'interfaccia SQL. La parola NoSQL potrebbe far pensare che è un movimento contrario all'utilizzo di database 2 relazionali, ma in realtà il suo acronimo è Not Only SQL che sta a rivelare la presenza di diversi casi d'uso per i quali il modello relazionale rappresenta un esagerazione, ma per tanti altri tale modello è ancora un ottima soluzione. Allora sorge una domanda: perché cercare altri DBMS se esistono quelli relazionali che svolgono bene il loro lavoro? I database NoSQL non solo sono open source, ma sono semplici da adoperare, infatti 1 Open source: la natura open source del database NoSQL significa che è possibile occuparsi di applicazioni di grandi dimensioni con enormi quantità di dati a un prezzo più basso. 2 Database: i database o banche dati sono archivi di dati, in cui le informazione in essi sono ben strutturate in modo da permettere una veloce ricerca al loro interno. Essi consentono la gestione dei dati in termini di inserimento, aggiornamento, ricerca e cancellazione delle informazioni. 6

hanno un paradigma di programmazione ad oggetti, i dati sono riutilizzabili su sistemi diversi e memorizzati nei database NoSQL senza alcun vincolo. Inoltre i database NoSQL sono caratterizzati da scalabilità orizzontale e offrono un meccanismo trasparente all utilizzatore nell assegnazione e nell esecuzione di enormi quantità di dati. Oggi, i database NoSQL sono considerati molto affidabili, questo ha permesso di ampliare il proprio raggio d azione, permettendo di poter conservare dati critici, di poter gestire sia contenuti web, e sia dati relativi alla tracciabilità delle materie prime delle industrie di produzione. 1.1 Vantaggi e svantaggi NoSQL Dalle caratteristiche di questi database NoSQL si possono intravedere sia vantaggi che svantaggi. Se da un lato la scalabilità orizzontale (cioè la capacità di distribuire il carico di lavoro su più nodi, al fine di parallelizzare le operazioni e minimizzare le elaborazioni dei dati sul singolo nodo) offre come vantaggi un costo più basso e una maggiore tolleranza ai guasti, dall altro porta a uno svantaggio in fase di progettazione, perché l applicazione deve supportare questo modello di scalabilità. L assenza di schema, tipica dei database non relazionali, permette sia di velocizzare la fase iniziale di sviluppo di un applicazione e sia di aggiungere nuovi dati a quest ultima mantenendo inalterata l integrità dei dati. Questo ha consentito di rendere i database NoSQL estremamente flessibili, portando anche a un miglioramento della produttività di programmazione. Uno dei problemi principali presenti nei database NoSQL sono sia la mancanza di strumenti per l'analisi e il test delle prestazioni di reporting che l assenza di standardizzazione, quest ultima può causare problemi durante la migrazione dei database. 1.2 Confronto con i RDBMS Fino a pochi anni fa, quando non esisteva ancora qualcosa di più performante, produttivo, 7

scalabile e flessibile di un database relazionale, ovvero i DB NoSQL, i DBMS relazionali giocavano il ruolo di protagonisti. Ma cosa differenzia l uno dall altro? Uno dei primi aspetti che differenzia i database relazionali 3 con quelli NoSQL è che i primi aderiscono ad uno standard de facto, in cui il risultato di richieste realizzate tramite opportune query possono essere visualizzati in ambienti standard. Invece i database NoSQL sono caratterizzati da una interfaccia utente per ogni implementazione, quest ultimo è più adattabile a livello di scalabilità orizzontale. Un RDBMS ricorre ad una scalabilità verticale per consentire di contenere sempre più informazioni, pertanto richiede hardware sempre più performante e costoso. Viceversa i database NoSQL permettono di usare dispositivi molto comuni e non troppo costosi. Se da una parte nasce la necessità nei sistemi relazionali di utilizzare dei JOIN per ricostruire le informazioni da elaborare, dall altra nei sistemi NoSQL si desidera avere la massima libertà per poter modificare ed alterare sia la struttura dei dati che le relazioni che esistono tra loro, così da permettere alle applicazioni che li dovrà elaborare di organizzarli e memorizzarli in formati meno astratti. Un altra differenza sostanziale tra i database relazionali e quelli non relazionali è che, i primi possiedono uno schema rigido, ossia bloccare l intero database, per permettere l aggiunta di un nuovo campo o di una nuova relazione, fino a che la modifica non viene completata. I database NoSQL, al contrario, sono caratterizzati dall'assenza di uno schema rigido consentendo di aggiungere nuovi dati, e nuove relazioni senza la necessità di modificare la struttura del database e senza bloccarne l'accesso. Nei database non relazionali, il processo di migrazione verso un altro database risulta molto più complesso rispetto alle soluzioni relazionali. 3 Database relazionali: permettono di articolare i dati in modo da costruire modelli di raccolta dati complessi, essi si basano su relazioni univoche fra i dati. Tutti i dati sono memorizzati in strutture fisse, dette tabelle, dove sono posti l uno dopo all altro in modo da formare singoli record. Ciascun dato presente nella tabella si trasforma in un informazione vera e propria solo se associato al suo corrispondente attributo, che rappresenta l intestazione della colonna in cui il dato è memorizzato. 8

1.3 Base Teorema CAP I database NoSql non si preoccupano di soddisfare le proprietà acide (ACID 4 ), tipiche dei RDBMS, ma si concentrano sulle proprietà base (BASE). Le proprietà BASE sono state diffuse da Eric Browers e definiscono i requisiti che un sistema deve soddisfare sottostando al teorema di CAP: (B)asically(A)vailable: garantire accessibilità alle informazioni. Infatti si preferisce affidare i dati su più sistemi di salvataggio con un alto grado di replicazione, piuttosto che avere complessi sistemi. Questa distribuzione però non assicura la consistenza dei dati. (S)oft State: cambiamento nel tempo dello stato del sistema. Dato che i dati possono variare nel tempo anche in assenza di modifiche, questo principio lascia allo sviluppatore la scelta di assicurare o meno la consistenza dei dati. (E)ventual consistency: rendere consistente il sistema nel tempo, attraverso opportuni sistemi di recupero della consistenza. Si può notare che i sistemi BASE si focalizzano sulla disponibilità del servizio anziché sulla consistenza, tipica dei RDBMS. Infatti i database non relazionali cercano di fornire una base di dati sempre disponibile ed espandibile a piacere, anche se ciò non permette di garantire dati sempre aggiornati. 4 ACID: (A)tomicity: la transizione è unica nell esecuzione, o viene eseguita completa o nulla. (C)onsistency: l inizio e la fine di una transizione devono portare il sistema in uno stato coerente, in modo da garantire i vincoli di integrità dei dati. (I)solation: ogni transizione è autonoma dalle altre e un suo fallimento non può causare danni ad altre transazioni. (D)urability: quando una transizione richiede un commit, i cambiamenti non dovranno essere persi. 9

Esaminiamo in dettaglio invece i principi del teorema CAP, introdotto anch esso da Eric Browers: (C)onsistency: un sistema coerente permette di salvare un nuovo stato nel sistema, per poi utilizzarlo nelle seguenti operazioni fino alla successiva modifica dello stesso. Pertanto, tutti i client vedono sempre gli stessi dati nello stesso istante. (A)vailability: un sistema è detto continuamente disponibile quando è in grado di fornire una risposta a tutte le richieste ed erogare i propri servizi. (P)artition Tolerance: il sistema continua ad operare anche a fronte di perdita dei messaggi sulla rete e di una comunicazione con il server poco sicura. La negazione della comunicazione è causata soltanto dalla mancanza totale di connettività (total network failure). Tutti e tre i principi, secondo Seth Gilbert e Nancy Lynch, non sono possibili in un sistema informatico distribuito, ma solo due delle tre proprietà possono essere soddisfatte contemporaneamente. Le possibili combinazioni sono: Consistency+Availability (CA) elevata coerenza/alta disponibilità: tutti i nodi sono in contatto tra di loro e i dati devono essere coerenti tra tutti i nodi. Finché tutti i nodi sono attivi, gli utenti possono leggere / scrivere da qualsiasi nodo. Il sistema si blocca se si verifica una partizione della rete. Availability+Partition Tolerance (AP) elevata coerenza/tolleranza alle partizioni: in tutti i nodi del cluster i dati sono conservati in maniera coerente. Assicurando anche tolleranza alle partizione si evita che dati possano desincronizzarsi. Consistency+Partition Tolerance (CP) continua disponibilità/tolleranza alle partizioni: i nodi restano on-line, anche se la loro comunicazione risulta assente; in tutti i nodi non c è nessuna certezza che i dati e i valori relativi alla partizione e alla risoluzione, restino uguali. 10

1.4 Classificazione dei database NoSQL Nel mondo open-source sono state realizzate molti DBMS NoSQL e a seconda della struttura dati con cui si presentano i record di dato, possono essere raggruppati in quattro categorie fondamentali: 1. Column (come Cassandra): suddividono i dati per colonne in contrasto con i database row-oriented, che immagazzinano i dati per righe successive. Questi database column-oriented grazie alla memorizzazione dei valori in colonna consentono di conseguire tempi di risposta migliori, perché vengono letti soltanto i dati di interesse, diminuendo il numero di accessi alle memorie di massa. Si posso anche applicare tecniche di compressione dei dati, poiché ogni colonna è costituita da un solo tipo di dati riducendo l occupazione di spazio. I database che appartengono a questa categoria definiscono il concetto di column- family. Una column-family è un informazione che è presente nello schema e che raggruppa una stessa tipologia di informazioni in un insieme di colonne. I column family si dividono in: Standard column family: in cui la row key (la chiave più esterna ) individua l'aggregato, che a sua volta è costituito da una o più famiglie di colonne dove è possibile trovare diversi valori associati ad una diversa column key. 11

Super colunn family: è un estensione dello Standard Column Family, infatti inserisce un ulteriore livello di indicizzazione (chiamato super column) fra la row key e l insieme delle colonne. Questa chiave viene impiegata per raggruppare attributi correlati fra di loro, riferiti allo stesso aggregato. 2. Key-Value (come Dynamo, Riak): permettono di eseguire query solo sulle chiavi in modo da realizzare un sistema scalabile orizzontalmente, in cui le coppie <chiave:valore> sono assegnate tramite opportuni algoritmi. Ogni chiave è collegata ad un blob binario oscuro (questo nega l esecuzione di query basate sul contenuto del valore), che può includere una qualunque tipologia di dato (stringa di testo, documento, immagine, video, ecc...). L implementazione del modello chiave-valore consentono tipi di valore più complessi come tabelle hash o liste, mentre altri offrono mezzi per scorrere le chiavi. Sebbene questi database offrono ottime prestazioni per certe applicazioni, solitamente non supportano operazioni complicate di interrogazione e aggregazione 12

3. Document Oriented (MongoDB, SimpleDB): permettono di raggruppare gruppi di chiavi in strutture chiamate appunto documenti. Questa tipologia di database consente di compiere delle ricerche, sia sulle chiavi che sui valori, poiché i valori sono costituiti da strutture in formati come xml o json che sono pesanti. A differenza dei database basati su chiave-valore, questi sistemi forniscono interrogazioni e memorizzazione di grandi quantità di informazione 4. Graph Oriented (come Neo4J, AllegroGraph, Pregel): memorizzano le informazioni attraverso strutture a grafi, dove su di esse si effettuano ricerche per accedere ad archi e nodi (i nodi del grafo sono dati che possiedono coppie key/value, gli archi sono le relazioni). Questo tipo di database può essere considerato come un caso particolare di un database orientato ai documenti, questi ultimi rappresentano non solo i nodi, ma anche gli archi. La potenza di questo database è di gestire il passaggio da un nodo all altro sfruttando le relazioni tra nodi. 13

Capitolo 2: Big Data L imponente crescita dei dati, creata da persone (tramite smartphone, card magnetiche o con sensori, ect.), da cose (auto, beni in movimento, etc.) e da eventi (meteo, atterraggio degli aerei, pagamento finanziario, malfunzionamento di un distributore, etc.), unita allo sviluppo del web, hanno portato ad introdurre un nuovo concetto noto come i BigData. Questo fenomeno ha manifestato un bisogno non solo di tecnologie di raccolta ed elaborazione di questi dati, ma anche una maggiore capacità analitica e interpretativa. In primis si è cercato di utilizzare tecnologie e metodologie esistenti (database relazionali, architetture master/slave, etc.), parallelamente si è svolta un attività di ricerca al fine di proporre soluzioni alternative, come i database non relazionali. Ma cosa si intende per Big Data e perché sono diventati così importanti? Il termine Big Data è usato per descrivere un volume enorme di dati strutturati e non strutturati, che è difficile da trattare con tecniche di database e software tradizionali, poiché non riescono a gestire quantità di dati sempre crescenti. Inoltre i Big Data permettono di ottenere grandi benefici sia in ambito economico, garantendo maggiore accuratezza delle analisi del comportamento del mercato e delle informazioni sui clienti, sia finanziario, migliorando la gestione dei rischi e delle frodi assicurative o finanziarie, e sia in ambito scientifico. 14

2.1 Caratteristiche Secondo l analista Doug Laney, i Big Data hanno tre caratteristiche peculiari: Volume: rappresenta la dimensione del dataset. Grazie al valore di questo parametro è possibile capire se un gruppo di dati è da considerarsi Big Data o meno. Tipicamente le dimensioni sono nell ordine dei Petabytes fino all'ordine degli Zettabytes. Velocità: si riferisce alla necessità di comprimere i tempi di gestione e di analisi dei dati, quest ultimi saranno processati a ritmi sostenuti o in tempo reale. Varietà: intesa come molteplicità di fonti o come eterogeneità dei formati dei dati. Infatti i dati possono essere generati da diverse fonti interne o esterne e possono avere diversi formati (database, testo, immagini, video, audio, ect.) riconducibili a tre categorie: dati strutturati 1, semi-strutturati 2 e non strutturati 3. Questo è stato definito come modello delle "3V". Col passare del tempo si è assistito ad un aumento del Volume dei dati, della Velocità e della loro Varietà portando ad una necessità di estendere tale modello con un'ulteriore "V": 1 Dati strutturati: sono quei dati che rispettano regole predefinite quali; tipo di contenuto, lunghezza, formato, etc. Questa tipologia di dati è tipica dei DB relazionali. 2 Dati non strutturati: non seguono gli schemi di un tradizionale database e per questo motivo sono di più difficile interpretazione e richiedono quindi sforzi maggiori per il loro trattamento. 3 Dati semi-strutturati non sono conformi al modello dati di un tipico database ma possono essere divisi in records più o meno strutturati utilizzando dei separatori come i tag semantici. 15

Veridicità: indica l utilità di un dato, intesa come il valore informativo che risulta rilevante ai fini dell analisi decisionale. Successivamente il modello è stato esteso aggiungendo altre caratteristiche: Variabilità: riguarda alla contestualizzazione di un dato. Ogni dato può avere un significato diverso a seconda del contesto in cui esso viene analizzato. Complessità: più è grande la complessità e tanto più grande sarà lo sforzo per estrarre informazioni utili dai dati. 2.2 Gestione dei Big Data La gestione dei Big Data nella maggior parte degli scenari non si basa sulle tradizionali logiche di RDBMS e di SQL, ma su nuove tecniche che cercano di soddisfare efficacemente le esigenze in termini di volumi, velocità e varietà a seconda dei tipi di dati trattati. 2.2.1 Limiti dei RDBMS e nuovi approcci per l elaborazione dei Big Data Dal momento che la dimensione dei dati richiesti da trattare è aumentata enormemente, un RDBMS (Relational Database Management System) non è più considerato come la soluzione appropriata per ogni esigenza del database. Infatti un database relazionale RDBMS non è all'altezza delle esigenze dei Big Data, in quanto un primo limite dei RDBMS è dato dalla difficoltà di gestire questi grandi volumi di dati. Per far fronte a questo, i database relazionali hanno cercato di aggiungere più unità centrali di elaborazione (o CPU) o più memoria al sistema per poter scalare verticalmente. Un altro limite per i database relazionali è causato dall assenza di uno schema flessibile, che ha negato la possibilità di categorizzare i dati non strutturati, i quali sono maggiormente richiesti dai Big Data. Inoltre, essendo la velocità di crescita dei dati molto elevata nei Big Data, un RDBMS non riesce a fronteggiare questi scenari di crescita rapida, dato che è stato progettato per la gestione costante dei dati. 16

Quindi l utilizzo dei database relazionali per la gestione e la memorizzazione dei Big Data risulta da un lato troppo costoso e dall'altro addirittura inefficiente. Per poter processare efficientemente grandi moli di dati in tempi tollerabili, sono state utilizzate tre tecnologie più performanti: database NoSQL, database distribuiti (come Hadoop, Hive) e sistemi MPP (Massive Parallel Processing). Le prime due permettono l uso di hardware a basso costo, una gestione dei fallimenti e l ottimizzazione delle performance via software. I sistemi MMP sono costituiti da un sistema di I/O per ogni processore, e da operazioni suddivise in task paralleli e indipendenti. 17

Capitolo 3: HBase Una categoria di database NoSQL, utile per la gestione di un volume e una varietà di dati, è quella dei database colonnari (le cui caratteristiche sono già state descritte nel paragrafo 1.4). Uno dei database colonnari più diffusi è HBase. HBase è una base dati open source, scalabile e distribuita, caratterizzata da una gestione strutturata di dati sotto forma di tabelle di grandi dimensioni, in modo da garantire coerenza dei dati e tolleranza alle partizioni. Il suo sviluppo si basa sul modello di Google BigTable, infatti sfrutta la memorizzazione di dati distribuiti fornita da Google File System. HBase nasce come parte del progetto Hadoop dell'apache Software Foundation ed eseguito su HDFS (Hadoop Distributed File System), esso può essere usato da MapReduce 1 sia come sorgente e sia come destinazione per i suoi calcoli. Nel corso degli anni, HBase è diventato una scelta di database sempre più popolare per le applicazioni che necessitano di veloce accesso casuali a grandi quantità di dati. 1 MapReduce: è un sistema di elaborazione parallela dei dati. 18

3.1 Modello dei dati Un sistema HBase comprende una serie di tabelle. Ogni tabella è formata da righe, che sono identificate dalla Row Key e contengono un numero arbitrario di colonne. Ogni colonna rappresenta un attributo di un oggetto, molti di questi attributi vengono raggruppati in famiglie di colonna, in modo tale che gli elementi di una famiglia vengono tutti memorizzati insieme. Quindi ogni famiglia è costituita da un numero qualsiasi di colonne e ogni colonna è costituita da un numero qualsiasi di versioni. Il nome di una colonna è dato da un prefisso della famiglia (parte fissa) e da un qualificatore (parte variabile). HBase permette di aggiungere a runtime nuove colonne alle famiglie, in modo da adattarsi alle esigenze applicative. Per poter recuperare un singolo valore da una tabella HBase, bisogna specificare: una RowKey, una ColumnFamily e un timestamp (versione del valore). PICTURE TABLE 19

3.2 Architettura Hbase ha un'architettura di tipo master-slave. Un cluster HBase ha un nodo master, detto HMaster ha il compito di inizializzare il cluster e di assegnare region ai regionserver registrati nel cluster; e uno o più slave, detti HRegionServer il loro compito è di gestire le region e coordinare l'accesso ai dati. Tutte le modifiche per tutte le Regioni, portate da un particolare regionserver sono inserite prima in HLog. C è un HLog per regionserver. Nelle Regioni vengono memorizzate un insieme di righe di una tabella, e quando una tabella diventa troppo grande per essere contenuta in un server, essa può essere partizionata orizzontalmente in più Regioni. All interno di ciascuna Region è presente uno Store per ciascuna column family associata alla tabella. All interno di uno store sono presenti: un MemStore, che si occupa di conservare in RAM le modifiche (che verranno successivamente salvate sul disco) e da zero a più StoreFile che rappresentano dei file su HDFS (ogni file è composto da uno a più blocchi). Poiché più HMaster possono essere presenti contemporaneamente, HBase ha bisogno di un coordinatore esterno (Zookeeperun), per garantire che un solo master sia in esecuzione. 3.3 Caratteristiche HBase offre i seguenti benefici: 20

modello dei dati flessibile; semplici API Java per la realizzazione e la collaborazione con altri sistemi; possibilità di avere un accesso continuo ai dati, grazie all esistenza di più nodi master (fault tolerant); ricerche effettuate quasi in tempo reale (per esempio, la messaggistica); load balancing delle tabelle; replicazione dei dati; letture e scritture casuali; 3.4 HBASE VS RDBMS La differenza principale tra un database colonna-oriented rispetto a un database filaoriented è su come i dati vengono memorizzati sul disco. La massima dimensione dei dati gestita dai database relazionali è sui Terabytes, invece in HBase è di circa centinai di Petabytes. HBase non supporta un linguaggio di interrogazione strutturato come SQL (tipico dei database relazionali), infatti le applicazioni HBase sono scritte in Java. 3.5 HBASE VS HDFS HDFS è un file system distribuito che è adatto per la memorizzazione di file di grandi dimensioni. HBase è costruito sulla base di HDFS, ma mettendoli a confronto presentano alcune differenze: HDFS è più adatto per le operazioni di elaborazioni batch di alta latenza, ciò nega la possibilità di letture e scritture casuali, al contrario HBase è progettato per le operazioni di bassa latenza; l accesso ai dati è consentito attraverso MapReduce (nel HDFS), invece HBase prevede comandi di shell, API Java e Thrift. 21

3.6 Sperimentazione Nei precedenti paragrafi è stata fornita una panoramica sul database HBase, in particolare è stato illustrato il suo modello dei dati utile per poter comprendere l esecuzione dei test effettuati tramite la shell di HBase. Per poter effettuare i test sul nostro database è necessario, dapprima configurare opportunamente il sistema, e solo dopo è possibile avviare la shell HBase mediante il seguente comando:. /hbase shell Di seguito sul terminale, se tutto è andato a buon fine, apparirà il prompt di shell HBase. Per questa sperimentazione si presuppone di popolare il database con il dataset di DBpidia 2, e si è previsto di realizzare una tabella (chiamata PICTURE) per memorizzare i quadri di differenti pittori. La creazione di questa tabella è ottenuta mediante la seguente sintassi: create <table name>, <column family>. In questo caso Author e Opera sono due column family. Con il comando list è possibile elencare le tabelle HBase create: 2 DBpedia: è uno dei più importanti progetti legati al Web semantico, il progetto consiste nella trasposizione in dati strutturati di tutto l enorme patrimonio di conoscenze di Wikipedia, e nel rilascio di queste informazioni sul Web come Linked Open in formato RDF (Resource Description Framework). 22

list <table name>. La shell HBase permette di inserire un valore all interno di una tabella mediante il comando put: put <table name>, <row>, <column family prefix: column qualifier suffix>, <value>. Si può osservare che ciascuna riga della tabella PICTURE è identificata da una row key, la quale contiene le informazioni passate al database ed è costituita in questo caso da un URL. Come qualificatore della column family si è scelto di dare informazioni sul nome, cognome, nazionalità e stile artistico dell autore, mentre invece per l opera si è deciso di specificare nome, data, tecnica e ubicazione. Il comando put ci permette anche di aggiornare un valore già esistente, per farlo basta seguire la stessa sintassi e indicare il nuovo valore: Il conteggio del numero di righe di una tabella è effettuato tramite il comando count: 23

count <table name>. Mediante il comando get è possibile prelevare i contenuti relativi ad una riga: get <table name>, <row>. Oppure specificando sia la column family che il qualificatore si può ottenere il seguente risultato: get <table name>, <row>, <column family>. get <table name>, <row>, <column family: column qualifier>. Per poter visualizzare i dati della tabella creata, basta digitare il comando scan seguito dal nome della tabella: 24

scan <table name>. Con il comando scan si possono estrarre valori da una determinata column family specificando anche un qualificatore della column family. La sintassi è la seguente: scan <table name>, {COLUMNS => column family: column qualifier }. Utilizzando il comando deleteall è possibile eliminare una specifica riga dalla tabella. La regola per la costruzione corretta di questo comando è la seguente: 25

deleteall <table name>, <row>. Con delete si può rimuovere anche un determinato qualificatore della column family, specificando nella sitassi sempre la riga: delete <table name>, <row>, < column family: column qualifier>. Una tabella per essere eliminata, bisogna prima disabilitarla tramite il comando disable e solo dopo digitando drop, la tabella verrà definitivamente rimossa. 26

HBase permette anche di poter interagire attraverso l interfaccia web, digitando il seguente URL nel browser: http: //localhost:60010 27

Attraverso questa interfaccia si possono visualizzare: i Region Server in esecuzione, i master di backup, le tabelle HBase, lo stato del cluster, le statistiche, ect. 28

Ringraziamenti Desidero innanzitutto ringraziare il Prof. Moscato per i preziosi insegnamenti impartiti durante lo svolgimento delle sue lezioni e per l attenzione dedicata al mio elaborato. Inoltre, ringrazio tutti i docenti incontrati durante il mio percorso accademico, da ognuno di essi ho avuto modo di imparare qualcosa, non solo a livello didattico ma anche a livello umano. Un pensiero va ai miei genitori per l apporto morale e economico ai miei studi, oltre che per il grande aiuto che mi hanno sempre dato. Desidero ringraziare le mie sorelle per avermi aiutato in ogni momento e per non aver mai smesso di motivarmi e di supportarmi. Vorrei ringraziare anche Zia Elena, Zio Antonio, che nonostante la distanza hanno sempre avuto un pensiero per me. Un grazie va a Maria, una splendida persona conosciuta all università che è diventata la mia migliore amica. Ringrazio Carmela e Roberta per i bei momenti passati insieme in questi anni di università. Inoltre, esprimo tutta la mia gratitudine ai colleghi d università in modo particolare a Federico, che hanno condiviso con me questo percorso. Infine voglio ringraziare una persona molto importante nella mia vita, per la sua enorme pazienza, per essermi stato sempre vicino, per avermi sempre sostenuta e per aver creduto in me più di chiunque altro. Grazie Carmelo.. 29

Conclusioni Il lavoro di tesi ha fornito la possibilità di valutare la validità dei database NoSQL, i quali negli ultimi anni hanno attirato un gran numero di imprese e aziende, poiché sono in grado di garantire una velocità di esecuzione nell elaborazione di enormi quantità di dati, una scalabilità orizzontale con l aggiunta di nuovi server, e anche la possibilità di gestire migliaia di dati non strutturati senza dipendere da uno schema fisso. La crescita esponenziale del volume di dati generati da utenti, sistemi e sensori, ulteriormente accelerato dalla concentrazione di gran parte di questo volume su sistemi distribuiti, ha ricoperto una grande importanza nel mondo dei Big Data. Infatti questi ultimi hanno assunto una grande rilevanza nella vita di tutti i giorni, permettendo di gestire ingenti quantità di dati in maniera più efficiente e di soddisfare esigenze che prima non potevano trovare un riscontro. Per poter memorizzare e analizzare questi moli di dati, che da sempre ha costituito una problematica non superabile con i database tradizionali, sono state introdotte diverse categorie di database non relazionali. Una delle categorie presa in considerazione in questo elaborato è quella dei database colonnari, in particolare il database HBase, che offre una serie di vantaggi: permette di archiviare una grande quantità di dati offrendo un architettura orientata alla scalabilità, consente l integrazione con MapReduce e HDFS, supporta anche semplici API REST per accedere alle risorse e permette di operare in memoria. Con l utilizzo della shell di HBase si è potuto dimostrare che essa è stabile, veloce e di semplice utilizzo. In definitiva il mondo è in continuo evoluzione e sicuramente nei prossimi anni alcuni di questi database spariranno, mentre altri prenderanno il loro posto, traendo vantaggi dai vari database. 30

Bibliografia [1] https://hbase.apache.org [2] https://otherplus.com/tech/database-nosql/ [3] http://www.megadix.it/files/www.megadix.it/defranciscis_nosql.pdf [4] http://www.ecos2k.it/allegati/bigdata.pdf [5] http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/hbase.html [6] http://www-01.ibm.com/software/data/infosphere/hadoop/data-scientist.html [7] http://akbarahmed.com/category/hbase/ [8] Perego A, Pasini P, Big Data Live: casi di eccellenza, SDA Bocconi 2013 [9] Perego A, Pasini P, Nuove fonti di conoscenza Aziendale e nuovi modelli di management, SDA Bocconi, Dicembre 2012 [10] http://www.tutorialspoint.com/hbase/hbase_installation.htm [11] http://it.wikipedia.org/wiki/big_data 31