SlideShare a Scribd company logo
1 of 69
Download to read offline
OLTRE IL MODELLO
RELAZIONALE
@STUDIOMADO 05/11/2019
IL MODELLO RELAZIONALE
IL MODELLO RELAZIONALE
▸ Definito da Edgar Codd nel 1970
▸ Definisce come un insieme di dati deve essere presentato
all’utente e non come deve essere rappresentato in
memoria
▸ Permette diversi livelli di adesione attraverso le forme
normali
▸ Non definisce il modo in cui debbano essere gestite
richieste concorrenti
IL MODELLO RELAZIONALE
IL MODELLO RELAZIONALE
ELEMENTI DELLA TEORIA RELAZIONALE
▸ Tuple: insieme disordinato di attributi (righe e colonne)
▸ Relazioni: collezione di tuple distinte (tabelle)
▸ Vincoli:
▸ Necessari per mantenere la consistenza del database
▸ Utilizzati per identificare le tuple e le loro relazioni
▸ Operazioni: vengono effettuate sulle relazioni e restituiscono
sempre una relazione (union, proiezioni, join, etc.)
IL MODELLO RELAZIONALE
IL MODELLO TRANSAZIONALE
▸ Definito da Jim Gray nel 1970
▸ in particolare definisce che
Una transazione é una trasformazione di stato, la
quale deve essere atomica, permanente e
consistente
IL MODELLO RELAZIONALE
IL MODELLO TRANSAZIONALE (ACID)
▸ Atomica: una transazione é indivisibile; tutte le istruzioni
devono essere applicate con successo altrimenti deve essere
ripristinato lo stato iniziale
▸ Consistente: il database deve rimanere in uno stato consistente
prima e dopo la transazione
▸ Isolata: se due transazioni vengono eseguite
contemporaneamente, l’una non deve vedere gli effetti dell’altra
▸ Permanente: gli effetti di una transazione avvenuta con
successo devono persistere in memoria
IL MODELLO RELAZIONALE
DATABASE WARS
GOOGLE, BIG DATA
E HADOOP
GOOGLE, BIG DATA E HADOOP
BIG DATA
▸ Crescita esponenziale dei dati a disposizione (multimedia,
social network, dati transazionali, etc.)
▸ Capacitá di generare ulteriore valore aggiunto dai dati a
disposizione grazie ai passi in avanti fatti in Machine
Learning, analisi predittiva, data mining
GOOGLE, BIG DATA E HADOOP
CICLO VIRTUOSO DEI BIG DATA
PIU’ UTENTI
PIU’ DATI
MIGLIOR USER
EXPERIENCE
MIGLIORI
ALGORITMI
Generano
Guidano verso
Creano
ATTIRA
GOOGLE, BIG DATA E HADOOP
GOOGLE E I BIG DATA
▸ I database relazionali erano inadeguati per gestire le
grandi moli di dati prodotte da Google attraverso
l’indicizzazione del web
▸ Google utilizzata una propria architettura hardware e
software per immagazzinare e processare la sempre più
crescente quantità di dati
GOOGLE, BIG DATA E HADOOP
STACK SOFTWARE GOOGLE
▸ GFS (Google File System)
▸ File system in grado di astrarre gli storage dei data center,
permettendo di accedervi come ad un unico massivo e ridondante
file System
▸ MapReduce
▸ modello di programmazione per l’esecuzione di thread in parallelo
su più server in grado di gestire grandi quantità di dati
▸ BigTable:
▸ Sistema database non relazionale che utilizza GFS come storage
GOOGLE, BIG DATA E HADOOP
GOOGLE SOFTWARE STACK
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
DISK
CPU
GOOGLE FILE SYSTEM
BIG TABLEMAP REDUCE
GOOGLE APPLICATION
GOOGLE, BIG DATA E HADOOP
MAP/REDUCE
▸ Si divide in 2 fasi
▸ Mapping: l’input viene diviso in chunk di uguali
dimensioni e processati da thread che vengono eseguiti
in parallelo su server differenti
▸ Reduce: l’output dei thread viene raggruppato e
aggregato per ottenere l’output finale
GOOGLE, BIG DATA E HADOOP
CONTEGGIO PAROLE
CAT
DOG
CAT
CAT
DOG
DOG
DOG
…
INPUT
CAT, 1
DOG, 1
CAT, 1
…
CAT, 1
DOG, 1
CAT, 1
…
FISH, 1
DOG, 1
CAT, 1
…
MAP
DOG, 1
DOG, 1
DOG, 1
…
CAT, 1
CAT, 1
CAT, 1
…
FISH, 1
FISH, 1
FISH, 1
…
SHUFFLE
DOG, 10
CAT, 20
FISH, 7
REDUCE
DOG, 10
CAT, 20
FISH, 7
OUTPUT
GOOGLE, BIG DATA E HADOOP
UN ESEMPIO UN PO’ PIU’ COMPLESSO
DETTAGLIO
PRODOTTI
VISITE
PAGINE
PRODOTTI
DETTAGLI
CLIENTI
MAP REDUCE
JOIN
MAP REDUCE
JOIN
MAP REDUCE
AGGREGATE
GOOGLE, BIG DATA E HADOOP
HADOOP
▸ 2003: Google pubblica i dettagli di GFS
▸ 2004: Google pubblica i dettagli di MapReduce
▸ 2006: Google pubblica i dettagli di BigTable
▸ 2007: prima versione del progetto Open Source Hadoop
TESTO
COMPONENTI DELL’ECOSISTEMA HADOOP
▸ HDFS: versione open source di GFS
▸ HBASE: versione open source di Big Table
▸ HADOOP: piattaforma di calcolo
▸ Resource Manager
▸ Node Manager
▸ Application Manager
GOOGLE, BIG DATA E HADOOP
HADOOP
▸ Motivi del successo di Hadoop
▸ Scalabilitá
▸ Ridondanza dei dati
▸ Schema on read
GOOGLE, BIG DATA E HADOOP
HBASE
▸ Versione open source di delle Google Big Table
▸ Utilizza HDFS allo stesso modo in cui un RDBMS utilizza il
file system di un sistema operativo
▸ Alla base ci sono gli stessi componenti di un normale
RDBMS (colonne, tabelle, record, chiavi)
▸ Per ciascun valore (colonna di un record) é possibile
effettuare il versionamento (tramite timestamp)
▸ Ciascun record può avere il proprio set di colonne
GOOGLE, BIG DATA E HADOOP
HBASE
NOME SITO VISITE
Marco Google 500
Marco Ebay 100
Pietro Facebook 250
Gianni Facebook 560
Pietro Google 450
Marco Amazon 300
Pietro Amazon 400
GOOGLE, BIG DATA E HADOOP
HBASE
ID NOME
1 Marco
2 Pietro
3 Gianni
ID SITO
1 Google
2 Ebay
3 Facebook
4 Amazon
UTENTE_ID SITO_ID VISITE
1 1 500
1 2 250
2 3 300
2 4 100
3 1 300
3 2 430
GOOGLE, BIG DATA E HADOOP
HBASE
ID UTENTE GOOGLE EBAY AMAZON
1 Marco 500 300 250
ID UTENTE GOOGLE AMAZON
1 Gianni 500 250
ID UTENTE EBAY AMAZON
1 Pietro 100 300
GOOGLE, BIG DATA E HADOOP
HIVE
▸ Infrastruttura datawarehouse costruita su Hadoop per
fornire un riepilogo dei dati, interrogazioni e analisi
▸ E’ in grado di gestire i metadati dei dati registrati in HDFS
▸ Definisce un proprio linguaggio di interrogazione (HQL)
che viene tradotto in jobs Hadoop
▸ Non si tratta comunque di uno strumenti in grado di
fornire dati real-time
SHARDING,
AMAZON E LA
NASCITA DI
NOSQL
SHARDING, AMAZON E LA NASCITA DI NOSQL
IL PROBLEMA DELLA SCALABILITA’
▸ Web 1.0: pagine HTML statiche
▸ Web 2.0: pagine HTML generate dinamicamente con
capacità di fare richieste transazionali
▸ Nascita del pattern web server/database server
▸ Web server: facile da scalare
▸ Database server: difficile da scalare
SHARDING, AMAZON E LA NASCITA DI NOSQL
SOLUZIONE OPEN SOURCE
▸ Utilizzo di memcached: possibilità di costruire una cache
distribuita di dati rappresentati come oggetti
▸ Repliche di database: le modifiche di un database
(master) vengono replicate su altri database (read only)
▸ Queste tecniche hanno aumentato la capacità di lettura
dei database, ma non hanno risolto il problema di
bottleneck durante le operazioni di scrittura
SHARDING, AMAZON E LA NASCITA DI NOSQL
SHARDING
▸ Permette di partizionare un database in più server (shard)
▸ Una tabella applicativa può essere distribuita in più shard
▸ L’applicazione deve individuare in quale shard si trovano i
dati necessari ed inviare la query al server appropriato
▸ Facile in teoria, ma complesso in pratica
SHARDING, AMAZON E LA NASCITA DI NOSQL
SHARDING
▸ L’applicazione deve contenere anche la logica per capire
in che shard si trova un particolare dato
▸ Solo il programmatore può interrogare l’intero database
▸ Perdita di integrità transazionale
▸ Difficile gestione del load balancing
SHARDING, AMAZON E LA NASCITA DI NOSQL
IL TEOREMA ‘CAP'
▸ 2000: Eric Brewer enuncia un teorema tale per cui
In un sistema database distribuito si possono avere
al massimo due tra consistenza (Consistency),
disponibilità (Availability) e tolleranza ai guasti di
partizione (Partition tolerance)
SHARDING, AMAZON E LA NASCITA DI NOSQL
IL TEOREMA ‘CAP'
▸ Consistenza: ogni utente del database ha la stessa vista
sui dati in un dato istante
▸ Disponibilitá: in caso di errore di uno o più nodi, il
database rimane operativo
▸ Tolleranza ai guasti di partizione: il database rimane
operativo in caso di errore di comunicazione tra aree di
rete
SHARDING, AMAZON E LA NASCITA DI NOSQL
IL TEOREMA ‘CAP'
CONSISTENZA
DISPONIBILITA’
TOLLERANZA AI
GUASTI DI PARTIZIONE
Strict consistency
Eventual consistency
SHARDING, AMAZON E LA NASCITA DI NOSQL
IL MODELLO DYNAMO
▸ Amazon é stato il pioniere nell’utilizzo delle tecnologie nate con il
Web 2.0
▸ Inizialmente ha utilizzato Oracle come repository dei propri prodotti,
utenti e ordini
▸ Ha suddiviso il sito in aree funzionali, ognuna delle quali aveva un
database dedicato
▸ E’ stato uno dei primi ad adottare un’architettura orientata ai servizi
▸ Nel 2007 ha pubblicato i dettagli di un sistema database non
relazionale sviluppato internamente, chiamato Dynamo
SHARDING, AMAZON E LA NASCITA DI NOSQL
REQUISITI MODELLO DYNAMO
▸ Disponibilitá continua: i dati devono essere sempre
disponibili
▸ Tollerente ai guasti di rete
▸ Efficiente: i dati vengono salvati come oggetti non
strutturati e accessibili direttamente tramite chiave; la
dimensione di questi oggetti deve essere limitata (1 MB)
▸ Economico
▸ Scalabile
SHARDING, AMAZON E LA NASCITA DI NOSQL
HASHING
▸ E’ una funzione matematica che viene eseguita su un
valore di chiave
▸ Il risultato della funzione serve per determinare in che
nodo deve essere memorizzato il dato
▸ Una buona funzione di hashing distribuisce in modo
omogeneo i dati tra tutti i nodi disponibili
▸ Difficile da gestire quando si aggiungono o si rimuovono
nodi: i dati devono essere ridistribuiti
SHARDING, AMAZON E LA NASCITA DI NOSQL
CONSISTENT HASHING
Nodo 3
Nodo 2
Nodo 1
SHARDING, AMAZON E LA NASCITA DI NOSQL
CONSISTENT HASHING
Nodo 4
Nodo 3 Nodo 2
Nodo 1
SHARDING, AMAZON E LA NASCITA DI NOSQL
TUNABLE CONSISTENCY
▸ Dynamo permette di regolare il livello di consistenza dei dati,
performance in lettura e performance in scrittura attraverso i
parametri:
▸ N: numero di copie di un singolo dato che il database deve
mantenere
▸ W: numero di copie di un singolo dato che il database deve
scrivere prima che una scrittura possa considerarsi conclusa
▸ R: numero di copie alle quali l’applicazione deve accedere
quando un dato deve essere letto
SHARDING, AMAZON E LA NASCITA DI NOSQL
TUNABLE CONSISTENCY
APPLICAZIONE
DB DB DB
N=3 W=3 R=1
SCRITTURE LENTE
LETTURE VELOCI
CONSISTENTE
SHARDING, AMAZON E LA NASCITA DI NOSQL
TUNABLE CONSISTENCY
APPLICAZIONE
DB DB DB
N=3 W=2 R=2
SCRITTURE VELOCI
CONSISTENTE
SHARDING, AMAZON E LA NASCITA DI NOSQL
TUNABLE CONSISTENCY
APPLICAZIONE
DB DB DB
N=3 W=1 R=N
SCRITTURE VELOCI
LETTURE LENTE
CONSISTENTE
SHARDING, AMAZON E LA NASCITA DI NOSQL
TUNABLE CONSISTENCY
APPLICAZIONE
DB DB DB
N=3 W=1 R=1
SCRITTURE VELOCI
LETTURE VELOCI
NON CONSISTENTE
DOCUMENT
DATABASE
DOCUMENT DATABASE
DOCUMENT DATABASE
▸ Una database documentale é un database che memorizza i dati
come documenti strutturati, tipicamente in formato JSON o XML
▸ L’emergere di questo tipo di database si deve al fatto che
risolvono il conflitto tra la programmazione ad oggetti ed il
modello relazionale
▸ Il formato autodescrittivo dei documenti rende il dato
indipendente dalla piattaforma su cui é stato creato
▸ Di default non implementano nessun modello transazionale o
infrastrutturale
DOCUMENT DATABASE
XML VS JSON
▸ I primi database documentali memorizzavano i dati come
documenti XML
▸ XML richiede però molto spazio per essere memorizzato
ed il costo computazione di parsing é abbastanza elevato
▸ Durante i primi anni del 2000, grazie all’esplosione delle
tecnologie Web 2.0, viene alla ribalta un nuovo formato,
JSON (Javascript Object Notation)
DOCUMENT DATABASE
DOCUMENT DATABASE
▸ Documento
▸ Rappresenta l’unitá base di memorizzazione di un dato
▸ Possiamo paragonarlo approssimativamente ad un record di un database
relazionale
▸ E’ composta da una o più coppie chiave/valore
▸ Ciascun valore può essere a suo volta un altro documento o un array di documenti
▸ Collezione
▸ Insieme di documenti
▸ Possiamo paragonarla approssimativamente ad una tabella di una database
relazionale
DOCUMENT DATABASE
DATA MODEL IN UN DATABASE DOCUMENTALE
▸ Normalmente, i database documentali non permettono di effettuare operazioni
di join
▸ La struttura di un documento dovrebbe già assomigliare alla struttura degli
oggetti utilizzati nel codice
▸ I documenti innestati hanno il vantaggio di poter ottenere tutti i dati con una
sola operazione evitando operazioni di join
▸ Dall’altra parte si ha
▸ Duplicazione di dati
▸ Possibile inconsistenza di dati
▸ Difficile gestione delle modifiche
DOCUMENT DATABASE
DATA MODEL IN UN DATABASE DOCUMENTALE
▸ In un database relazionale, la modellazione dei dati é
guidata dalla natura stessa dei dati
▸ In un database documentale, la modellazione dei dati é
guidata dalla natura dell’utilizzo finale
DATABASE A
GRAFO
DATABASE A GRAFO
L’IMPORTANZA DELLE RELAZIONI
▸ Database relazionali organizzano dati in tabelle
▸ Database documentali organizzano dati in collezioni
▸ In certi contesti sono più rilevanti le relazioni tra i dati che i
dati stessi (ad esempio all’interno dei social network)
▸ Il modello relazionale é in grado di gestire queste
informazioni, ma non in maniera efficiente
DATABASE A GRAFO
TEORIA DEI GRAFI
▸ Un grafo é composto da:
▸ Nodi: rappresentano gli oggetti distinti all’interno del
grafo
▸ Archi: rappresentano i collegamenti tra 2 nodi
▸ Sia i nodi che gli archi possono avere delle proprietà
▸ Un grafo può essere percorso attraverso delle operazioni
di attraversamento
DATABASE A GRAFO
PROGETTARE UN GRAFO IN UN RDBMS
PERSONE
(ID, NOME)
FILM (ID, TITOLO)
REGISTA
(PERSONA_ID,
FILM_ID)
ATTORE
(PERSONA_ID,
FILM_ID)
DATABASE A GRAFO
TEORIA DEI GRAFI
▸ La sintassi ed SQL stesso non sono adatti per
l’attraversamento in profondità di un grafo, soprattutto se
questa é sconosciuta
▸ Le performance degradano velocemente mano a mano
che la profondità aumenta
DATABASE A GRAFO
NEO4J
▸ E’ il database a grafo più diffuso
▸ Scritto in Java
▸ In grado di gestire milioni di nodi
▸ Implementa il modello ACID
▸ Implementa il linguaggio dichiarativo Cypher, in grado di
interrogare il database in maniera simile ad SQL, ma in
maniera molto più espressiva e performante
DATABASE A GRAFO
NEO4J
Qualche esempio…
DATABASE A
COLONNE E
DATAWAREHOUSE
DATABASE A COLONNE E DATAWAREHOUSE
I DATAWAREHOUSE
▸ Necessità di produrre report dai dati presenti all’interno
dei database relazionali applicativi
▸ Non possono essere utilizzati i database applicativi di
produzione a causa della grande mole di dati da elaborare
▸ La schema stesso dei database relazionali applicativi non é
adatto per l’esecuzione di questi complesse
▸ I database applicativi sono progettati per soddisfare
requisiti CRUD
DATABASE A COLONNE E DATAWAREHOUSE
I DATAWAREHOUSE
▸ Necessitá di uno schema ottimizzato per la sola lettura dei
dati
▸ Utilizzo di indici
▸ Normalizzazione rilassata e ridondanza dei dati
accettabile
▸ Schema progettato sulle esigenze di interrogazione
▸ Al crescere dei dati, si continua ad avere un peggioramento
delle prestazioni
DATABASE A COLONNE E DATAWAREHOUSE
I DATAWAREHOUSE
TIME_DIMENSION
CUSTOMER_DIMENSIONPRODUCT_DIMENSION
STORE_DIMENSION
SALES_FACT
DATABASE A COLONNE E DATAWAREHOUSE
DATABASE A COLONNA
BLOCK NAME BIRTHDAY
1 James 22/07/1987
2 Frank 01/01/1990
3 Bob 03/03/2005
4 Robert 04/05/1998
5 Dan 12/05/1999
6 Steven 13/02/2000
DATABASE A COLONNE E DATAWAREHOUSE
DATABASE A COLONNA
BLOCK
1 James Frank Bob Robert
2 01/01/2000 23/02/1997 12/09/2008 13/04/2000
DATABASE A COLONNE E DATAWAREHOUSE
I DATABASE A COLONNA
▸ Le query che aggregano valori su una specifica colonna
sono ottimizzate perché riducono drasticamente il numero
di accessi al disco
▸ Possibilità di comprimere i dati:
▸ Compressione di dati ripetuti nella stessa porzione di
disco
▸ Se ordinati, possibilità di rappresentare ciascun dato
come delta rispetto al dato precedente
IN MEMORY
DATABASE
IN MEMORY DATABASE
LIMITI DEI SUPPORTI FISICI
▸ I/O verso dischi magnetici sono da sempre diversi ordini
di grandezza inferiori agli accessi verso la memoria o la
CPU
▸ Performance migliorare grazie alla nascita di memorie
SSD, ma le prestazioni rimangono limitate, specialmente in
scrittura
▸ Per sfruttare al massimo le caratteristiche SSD é
necessario sviluppare database in grado di sfruttarle
IN MEMORY DATABASE
IN MEMORY DATABASE
▸ Alcuni database sfruttano una cache in memoria per migliorare le
prestazioni
▸ I database tradizionale però prevedono l’accesso al disco per
operazioni frequenti
▸ Commit
▸ Transaction Log
▸ Checkpoint
▸ E’ necessaria un’architettura che preveda e consenta la completa
gestione dei dati in memoria e senza perderli in caso di errore
IN MEMORY DATABASE
IN MEMORY DATABASE
▸ Rispetto ai database tradizionali:
▸ Non hanno cache (stiamo già gestendo i dati in
memoria)
▸ Differente modello di persistenza attraverso:
▸ Replica dei dati su altri cluster
▸ Scrittura di un’immagine dell’intero database su disco
IN MEMORY DATABASE
TIMES-TEN
▸ E’ un database relazionale creato nel 1995 e acquisito da
Oracle nel 2005
▸ La persistenza é realizzata attraverso scritture periodiche
dei dati su disco (le scritture sono asincrone)
▸ Su se verifica un errore durante la scrittura su disco, alcuni
dati possono andare persi
IN MEMORY DATABASE
REDIS
▸ E’ un database chiave/valore sviluppato nel 2009
▸ Se la dimensione dei dati supera la memoria a disposizione é in grado di
gestire un’area di swap su disco
▸ La persistenza é realizzata attraverso la scrittura dell’intero database su
disco:
▸ La scrittura può avvenire:
▸ On demand
▸ Schedulazione
▸ Superamento di una quota di dati da scrivere
IN MEMORY DATABASE
SPARK
▸ Sviluppato nel 2011, rappresenta la versione in memory
del modello MapReduce di Hadoop
▸ Astrae il modello di MapReduce, semplificandone lo
sviluppo e aumentandone la produttività
▸ Trattandosi di un modello di programmazione non
necessita di alcun metodo di persistenza

More Related Content

Similar to Oltre il modello relazionale

Big data stack tecnologico
Big data stack tecnologicoBig data stack tecnologico
Big data stack tecnologicoMassimo Romano
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastorefirenze-gtug
 
MySQL 5
MySQL 5MySQL 5
MySQL 5jekil
 
08 Introduzione All Architettura Di Un D B M S
08  Introduzione All Architettura Di Un  D B M S08  Introduzione All Architettura Di Un  D B M S
08 Introduzione All Architettura Di Un D B M Sguestbe916c
 
Archeo foss 2012 slides 1
Archeo foss 2012 slides 1Archeo foss 2012 slides 1
Archeo foss 2012 slides 1CSP Scarl
 
MongoDB
MongoDBMongoDB
MongoDBNaLUG
 
Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla ZRoberto Messora
 
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"MarziaPaschini
 
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...festival ICT 2016
 
Cassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyCassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyFabrizio Spataro
 

Similar to Oltre il modello relazionale (20)

Big data stack tecnologico
Big data stack tecnologicoBig data stack tecnologico
Big data stack tecnologico
 
Appunti di big data
Appunti di big dataAppunti di big data
Appunti di big data
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastore
 
MongoDB
MongoDBMongoDB
MongoDB
 
MySQL 5
MySQL 5MySQL 5
MySQL 5
 
Data grid
Data gridData grid
Data grid
 
NOSQL
NOSQLNOSQL
NOSQL
 
Basi di dati
Basi di dati Basi di dati
Basi di dati
 
08 Introduzione All Architettura Di Un D B M S
08  Introduzione All Architettura Di Un  D B M S08  Introduzione All Architettura Di Un  D B M S
08 Introduzione All Architettura Di Un D B M S
 
Archeo foss 2012 slides 1
Archeo foss 2012 slides 1Archeo foss 2012 slides 1
Archeo foss 2012 slides 1
 
MongoDB
MongoDBMongoDB
MongoDB
 
Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
 
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
 
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud...
 
No Sql Intro
No Sql IntroNo Sql Intro
No Sql Intro
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Cassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - ItalyCassandra DB - Linux Day 2019 - Catania - Italy
Cassandra DB - Linux Day 2019 - Catania - Italy
 

Oltre il modello relazionale

  • 3. IL MODELLO RELAZIONALE ▸ Definito da Edgar Codd nel 1970 ▸ Definisce come un insieme di dati deve essere presentato all’utente e non come deve essere rappresentato in memoria ▸ Permette diversi livelli di adesione attraverso le forme normali ▸ Non definisce il modo in cui debbano essere gestite richieste concorrenti IL MODELLO RELAZIONALE
  • 4. IL MODELLO RELAZIONALE ELEMENTI DELLA TEORIA RELAZIONALE ▸ Tuple: insieme disordinato di attributi (righe e colonne) ▸ Relazioni: collezione di tuple distinte (tabelle) ▸ Vincoli: ▸ Necessari per mantenere la consistenza del database ▸ Utilizzati per identificare le tuple e le loro relazioni ▸ Operazioni: vengono effettuate sulle relazioni e restituiscono sempre una relazione (union, proiezioni, join, etc.)
  • 5. IL MODELLO RELAZIONALE IL MODELLO TRANSAZIONALE ▸ Definito da Jim Gray nel 1970 ▸ in particolare definisce che Una transazione é una trasformazione di stato, la quale deve essere atomica, permanente e consistente
  • 6. IL MODELLO RELAZIONALE IL MODELLO TRANSAZIONALE (ACID) ▸ Atomica: una transazione é indivisibile; tutte le istruzioni devono essere applicate con successo altrimenti deve essere ripristinato lo stato iniziale ▸ Consistente: il database deve rimanere in uno stato consistente prima e dopo la transazione ▸ Isolata: se due transazioni vengono eseguite contemporaneamente, l’una non deve vedere gli effetti dell’altra ▸ Permanente: gli effetti di una transazione avvenuta con successo devono persistere in memoria
  • 9. GOOGLE, BIG DATA E HADOOP BIG DATA ▸ Crescita esponenziale dei dati a disposizione (multimedia, social network, dati transazionali, etc.) ▸ Capacitá di generare ulteriore valore aggiunto dai dati a disposizione grazie ai passi in avanti fatti in Machine Learning, analisi predittiva, data mining
  • 10. GOOGLE, BIG DATA E HADOOP CICLO VIRTUOSO DEI BIG DATA PIU’ UTENTI PIU’ DATI MIGLIOR USER EXPERIENCE MIGLIORI ALGORITMI Generano Guidano verso Creano ATTIRA
  • 11. GOOGLE, BIG DATA E HADOOP GOOGLE E I BIG DATA ▸ I database relazionali erano inadeguati per gestire le grandi moli di dati prodotte da Google attraverso l’indicizzazione del web ▸ Google utilizzata una propria architettura hardware e software per immagazzinare e processare la sempre più crescente quantità di dati
  • 12. GOOGLE, BIG DATA E HADOOP STACK SOFTWARE GOOGLE ▸ GFS (Google File System) ▸ File system in grado di astrarre gli storage dei data center, permettendo di accedervi come ad un unico massivo e ridondante file System ▸ MapReduce ▸ modello di programmazione per l’esecuzione di thread in parallelo su più server in grado di gestire grandi quantità di dati ▸ BigTable: ▸ Sistema database non relazionale che utilizza GFS come storage
  • 13. GOOGLE, BIG DATA E HADOOP GOOGLE SOFTWARE STACK DISK CPU DISK CPU DISK CPU DISK CPU DISK CPU DISK CPU DISK CPU GOOGLE FILE SYSTEM BIG TABLEMAP REDUCE GOOGLE APPLICATION
  • 14. GOOGLE, BIG DATA E HADOOP MAP/REDUCE ▸ Si divide in 2 fasi ▸ Mapping: l’input viene diviso in chunk di uguali dimensioni e processati da thread che vengono eseguiti in parallelo su server differenti ▸ Reduce: l’output dei thread viene raggruppato e aggregato per ottenere l’output finale
  • 15. GOOGLE, BIG DATA E HADOOP CONTEGGIO PAROLE CAT DOG CAT CAT DOG DOG DOG … INPUT CAT, 1 DOG, 1 CAT, 1 … CAT, 1 DOG, 1 CAT, 1 … FISH, 1 DOG, 1 CAT, 1 … MAP DOG, 1 DOG, 1 DOG, 1 … CAT, 1 CAT, 1 CAT, 1 … FISH, 1 FISH, 1 FISH, 1 … SHUFFLE DOG, 10 CAT, 20 FISH, 7 REDUCE DOG, 10 CAT, 20 FISH, 7 OUTPUT
  • 16. GOOGLE, BIG DATA E HADOOP UN ESEMPIO UN PO’ PIU’ COMPLESSO DETTAGLIO PRODOTTI VISITE PAGINE PRODOTTI DETTAGLI CLIENTI MAP REDUCE JOIN MAP REDUCE JOIN MAP REDUCE AGGREGATE
  • 17. GOOGLE, BIG DATA E HADOOP HADOOP ▸ 2003: Google pubblica i dettagli di GFS ▸ 2004: Google pubblica i dettagli di MapReduce ▸ 2006: Google pubblica i dettagli di BigTable ▸ 2007: prima versione del progetto Open Source Hadoop
  • 18. TESTO COMPONENTI DELL’ECOSISTEMA HADOOP ▸ HDFS: versione open source di GFS ▸ HBASE: versione open source di Big Table ▸ HADOOP: piattaforma di calcolo ▸ Resource Manager ▸ Node Manager ▸ Application Manager
  • 19. GOOGLE, BIG DATA E HADOOP HADOOP ▸ Motivi del successo di Hadoop ▸ Scalabilitá ▸ Ridondanza dei dati ▸ Schema on read
  • 20. GOOGLE, BIG DATA E HADOOP HBASE ▸ Versione open source di delle Google Big Table ▸ Utilizza HDFS allo stesso modo in cui un RDBMS utilizza il file system di un sistema operativo ▸ Alla base ci sono gli stessi componenti di un normale RDBMS (colonne, tabelle, record, chiavi) ▸ Per ciascun valore (colonna di un record) é possibile effettuare il versionamento (tramite timestamp) ▸ Ciascun record può avere il proprio set di colonne
  • 21. GOOGLE, BIG DATA E HADOOP HBASE NOME SITO VISITE Marco Google 500 Marco Ebay 100 Pietro Facebook 250 Gianni Facebook 560 Pietro Google 450 Marco Amazon 300 Pietro Amazon 400
  • 22. GOOGLE, BIG DATA E HADOOP HBASE ID NOME 1 Marco 2 Pietro 3 Gianni ID SITO 1 Google 2 Ebay 3 Facebook 4 Amazon UTENTE_ID SITO_ID VISITE 1 1 500 1 2 250 2 3 300 2 4 100 3 1 300 3 2 430
  • 23. GOOGLE, BIG DATA E HADOOP HBASE ID UTENTE GOOGLE EBAY AMAZON 1 Marco 500 300 250 ID UTENTE GOOGLE AMAZON 1 Gianni 500 250 ID UTENTE EBAY AMAZON 1 Pietro 100 300
  • 24. GOOGLE, BIG DATA E HADOOP HIVE ▸ Infrastruttura datawarehouse costruita su Hadoop per fornire un riepilogo dei dati, interrogazioni e analisi ▸ E’ in grado di gestire i metadati dei dati registrati in HDFS ▸ Definisce un proprio linguaggio di interrogazione (HQL) che viene tradotto in jobs Hadoop ▸ Non si tratta comunque di uno strumenti in grado di fornire dati real-time
  • 26. SHARDING, AMAZON E LA NASCITA DI NOSQL IL PROBLEMA DELLA SCALABILITA’ ▸ Web 1.0: pagine HTML statiche ▸ Web 2.0: pagine HTML generate dinamicamente con capacità di fare richieste transazionali ▸ Nascita del pattern web server/database server ▸ Web server: facile da scalare ▸ Database server: difficile da scalare
  • 27. SHARDING, AMAZON E LA NASCITA DI NOSQL SOLUZIONE OPEN SOURCE ▸ Utilizzo di memcached: possibilità di costruire una cache distribuita di dati rappresentati come oggetti ▸ Repliche di database: le modifiche di un database (master) vengono replicate su altri database (read only) ▸ Queste tecniche hanno aumentato la capacità di lettura dei database, ma non hanno risolto il problema di bottleneck durante le operazioni di scrittura
  • 28. SHARDING, AMAZON E LA NASCITA DI NOSQL SHARDING ▸ Permette di partizionare un database in più server (shard) ▸ Una tabella applicativa può essere distribuita in più shard ▸ L’applicazione deve individuare in quale shard si trovano i dati necessari ed inviare la query al server appropriato ▸ Facile in teoria, ma complesso in pratica
  • 29. SHARDING, AMAZON E LA NASCITA DI NOSQL SHARDING ▸ L’applicazione deve contenere anche la logica per capire in che shard si trova un particolare dato ▸ Solo il programmatore può interrogare l’intero database ▸ Perdita di integrità transazionale ▸ Difficile gestione del load balancing
  • 30. SHARDING, AMAZON E LA NASCITA DI NOSQL IL TEOREMA ‘CAP' ▸ 2000: Eric Brewer enuncia un teorema tale per cui In un sistema database distribuito si possono avere al massimo due tra consistenza (Consistency), disponibilità (Availability) e tolleranza ai guasti di partizione (Partition tolerance)
  • 31. SHARDING, AMAZON E LA NASCITA DI NOSQL IL TEOREMA ‘CAP' ▸ Consistenza: ogni utente del database ha la stessa vista sui dati in un dato istante ▸ Disponibilitá: in caso di errore di uno o più nodi, il database rimane operativo ▸ Tolleranza ai guasti di partizione: il database rimane operativo in caso di errore di comunicazione tra aree di rete
  • 32. SHARDING, AMAZON E LA NASCITA DI NOSQL IL TEOREMA ‘CAP' CONSISTENZA DISPONIBILITA’ TOLLERANZA AI GUASTI DI PARTIZIONE Strict consistency Eventual consistency
  • 33. SHARDING, AMAZON E LA NASCITA DI NOSQL IL MODELLO DYNAMO ▸ Amazon é stato il pioniere nell’utilizzo delle tecnologie nate con il Web 2.0 ▸ Inizialmente ha utilizzato Oracle come repository dei propri prodotti, utenti e ordini ▸ Ha suddiviso il sito in aree funzionali, ognuna delle quali aveva un database dedicato ▸ E’ stato uno dei primi ad adottare un’architettura orientata ai servizi ▸ Nel 2007 ha pubblicato i dettagli di un sistema database non relazionale sviluppato internamente, chiamato Dynamo
  • 34. SHARDING, AMAZON E LA NASCITA DI NOSQL REQUISITI MODELLO DYNAMO ▸ Disponibilitá continua: i dati devono essere sempre disponibili ▸ Tollerente ai guasti di rete ▸ Efficiente: i dati vengono salvati come oggetti non strutturati e accessibili direttamente tramite chiave; la dimensione di questi oggetti deve essere limitata (1 MB) ▸ Economico ▸ Scalabile
  • 35. SHARDING, AMAZON E LA NASCITA DI NOSQL HASHING ▸ E’ una funzione matematica che viene eseguita su un valore di chiave ▸ Il risultato della funzione serve per determinare in che nodo deve essere memorizzato il dato ▸ Una buona funzione di hashing distribuisce in modo omogeneo i dati tra tutti i nodi disponibili ▸ Difficile da gestire quando si aggiungono o si rimuovono nodi: i dati devono essere ridistribuiti
  • 36. SHARDING, AMAZON E LA NASCITA DI NOSQL CONSISTENT HASHING Nodo 3 Nodo 2 Nodo 1
  • 37. SHARDING, AMAZON E LA NASCITA DI NOSQL CONSISTENT HASHING Nodo 4 Nodo 3 Nodo 2 Nodo 1
  • 38. SHARDING, AMAZON E LA NASCITA DI NOSQL TUNABLE CONSISTENCY ▸ Dynamo permette di regolare il livello di consistenza dei dati, performance in lettura e performance in scrittura attraverso i parametri: ▸ N: numero di copie di un singolo dato che il database deve mantenere ▸ W: numero di copie di un singolo dato che il database deve scrivere prima che una scrittura possa considerarsi conclusa ▸ R: numero di copie alle quali l’applicazione deve accedere quando un dato deve essere letto
  • 39. SHARDING, AMAZON E LA NASCITA DI NOSQL TUNABLE CONSISTENCY APPLICAZIONE DB DB DB N=3 W=3 R=1 SCRITTURE LENTE LETTURE VELOCI CONSISTENTE
  • 40. SHARDING, AMAZON E LA NASCITA DI NOSQL TUNABLE CONSISTENCY APPLICAZIONE DB DB DB N=3 W=2 R=2 SCRITTURE VELOCI CONSISTENTE
  • 41. SHARDING, AMAZON E LA NASCITA DI NOSQL TUNABLE CONSISTENCY APPLICAZIONE DB DB DB N=3 W=1 R=N SCRITTURE VELOCI LETTURE LENTE CONSISTENTE
  • 42. SHARDING, AMAZON E LA NASCITA DI NOSQL TUNABLE CONSISTENCY APPLICAZIONE DB DB DB N=3 W=1 R=1 SCRITTURE VELOCI LETTURE VELOCI NON CONSISTENTE
  • 44. DOCUMENT DATABASE DOCUMENT DATABASE ▸ Una database documentale é un database che memorizza i dati come documenti strutturati, tipicamente in formato JSON o XML ▸ L’emergere di questo tipo di database si deve al fatto che risolvono il conflitto tra la programmazione ad oggetti ed il modello relazionale ▸ Il formato autodescrittivo dei documenti rende il dato indipendente dalla piattaforma su cui é stato creato ▸ Di default non implementano nessun modello transazionale o infrastrutturale
  • 45. DOCUMENT DATABASE XML VS JSON ▸ I primi database documentali memorizzavano i dati come documenti XML ▸ XML richiede però molto spazio per essere memorizzato ed il costo computazione di parsing é abbastanza elevato ▸ Durante i primi anni del 2000, grazie all’esplosione delle tecnologie Web 2.0, viene alla ribalta un nuovo formato, JSON (Javascript Object Notation)
  • 46. DOCUMENT DATABASE DOCUMENT DATABASE ▸ Documento ▸ Rappresenta l’unitá base di memorizzazione di un dato ▸ Possiamo paragonarlo approssimativamente ad un record di un database relazionale ▸ E’ composta da una o più coppie chiave/valore ▸ Ciascun valore può essere a suo volta un altro documento o un array di documenti ▸ Collezione ▸ Insieme di documenti ▸ Possiamo paragonarla approssimativamente ad una tabella di una database relazionale
  • 47. DOCUMENT DATABASE DATA MODEL IN UN DATABASE DOCUMENTALE ▸ Normalmente, i database documentali non permettono di effettuare operazioni di join ▸ La struttura di un documento dovrebbe già assomigliare alla struttura degli oggetti utilizzati nel codice ▸ I documenti innestati hanno il vantaggio di poter ottenere tutti i dati con una sola operazione evitando operazioni di join ▸ Dall’altra parte si ha ▸ Duplicazione di dati ▸ Possibile inconsistenza di dati ▸ Difficile gestione delle modifiche
  • 48. DOCUMENT DATABASE DATA MODEL IN UN DATABASE DOCUMENTALE ▸ In un database relazionale, la modellazione dei dati é guidata dalla natura stessa dei dati ▸ In un database documentale, la modellazione dei dati é guidata dalla natura dell’utilizzo finale
  • 50. DATABASE A GRAFO L’IMPORTANZA DELLE RELAZIONI ▸ Database relazionali organizzano dati in tabelle ▸ Database documentali organizzano dati in collezioni ▸ In certi contesti sono più rilevanti le relazioni tra i dati che i dati stessi (ad esempio all’interno dei social network) ▸ Il modello relazionale é in grado di gestire queste informazioni, ma non in maniera efficiente
  • 51. DATABASE A GRAFO TEORIA DEI GRAFI ▸ Un grafo é composto da: ▸ Nodi: rappresentano gli oggetti distinti all’interno del grafo ▸ Archi: rappresentano i collegamenti tra 2 nodi ▸ Sia i nodi che gli archi possono avere delle proprietà ▸ Un grafo può essere percorso attraverso delle operazioni di attraversamento
  • 52. DATABASE A GRAFO PROGETTARE UN GRAFO IN UN RDBMS PERSONE (ID, NOME) FILM (ID, TITOLO) REGISTA (PERSONA_ID, FILM_ID) ATTORE (PERSONA_ID, FILM_ID)
  • 53. DATABASE A GRAFO TEORIA DEI GRAFI ▸ La sintassi ed SQL stesso non sono adatti per l’attraversamento in profondità di un grafo, soprattutto se questa é sconosciuta ▸ Le performance degradano velocemente mano a mano che la profondità aumenta
  • 54. DATABASE A GRAFO NEO4J ▸ E’ il database a grafo più diffuso ▸ Scritto in Java ▸ In grado di gestire milioni di nodi ▸ Implementa il modello ACID ▸ Implementa il linguaggio dichiarativo Cypher, in grado di interrogare il database in maniera simile ad SQL, ma in maniera molto più espressiva e performante
  • 57. DATABASE A COLONNE E DATAWAREHOUSE I DATAWAREHOUSE ▸ Necessità di produrre report dai dati presenti all’interno dei database relazionali applicativi ▸ Non possono essere utilizzati i database applicativi di produzione a causa della grande mole di dati da elaborare ▸ La schema stesso dei database relazionali applicativi non é adatto per l’esecuzione di questi complesse ▸ I database applicativi sono progettati per soddisfare requisiti CRUD
  • 58. DATABASE A COLONNE E DATAWAREHOUSE I DATAWAREHOUSE ▸ Necessitá di uno schema ottimizzato per la sola lettura dei dati ▸ Utilizzo di indici ▸ Normalizzazione rilassata e ridondanza dei dati accettabile ▸ Schema progettato sulle esigenze di interrogazione ▸ Al crescere dei dati, si continua ad avere un peggioramento delle prestazioni
  • 59. DATABASE A COLONNE E DATAWAREHOUSE I DATAWAREHOUSE TIME_DIMENSION CUSTOMER_DIMENSIONPRODUCT_DIMENSION STORE_DIMENSION SALES_FACT
  • 60. DATABASE A COLONNE E DATAWAREHOUSE DATABASE A COLONNA BLOCK NAME BIRTHDAY 1 James 22/07/1987 2 Frank 01/01/1990 3 Bob 03/03/2005 4 Robert 04/05/1998 5 Dan 12/05/1999 6 Steven 13/02/2000
  • 61. DATABASE A COLONNE E DATAWAREHOUSE DATABASE A COLONNA BLOCK 1 James Frank Bob Robert 2 01/01/2000 23/02/1997 12/09/2008 13/04/2000
  • 62. DATABASE A COLONNE E DATAWAREHOUSE I DATABASE A COLONNA ▸ Le query che aggregano valori su una specifica colonna sono ottimizzate perché riducono drasticamente il numero di accessi al disco ▸ Possibilità di comprimere i dati: ▸ Compressione di dati ripetuti nella stessa porzione di disco ▸ Se ordinati, possibilità di rappresentare ciascun dato come delta rispetto al dato precedente
  • 64. IN MEMORY DATABASE LIMITI DEI SUPPORTI FISICI ▸ I/O verso dischi magnetici sono da sempre diversi ordini di grandezza inferiori agli accessi verso la memoria o la CPU ▸ Performance migliorare grazie alla nascita di memorie SSD, ma le prestazioni rimangono limitate, specialmente in scrittura ▸ Per sfruttare al massimo le caratteristiche SSD é necessario sviluppare database in grado di sfruttarle
  • 65. IN MEMORY DATABASE IN MEMORY DATABASE ▸ Alcuni database sfruttano una cache in memoria per migliorare le prestazioni ▸ I database tradizionale però prevedono l’accesso al disco per operazioni frequenti ▸ Commit ▸ Transaction Log ▸ Checkpoint ▸ E’ necessaria un’architettura che preveda e consenta la completa gestione dei dati in memoria e senza perderli in caso di errore
  • 66. IN MEMORY DATABASE IN MEMORY DATABASE ▸ Rispetto ai database tradizionali: ▸ Non hanno cache (stiamo già gestendo i dati in memoria) ▸ Differente modello di persistenza attraverso: ▸ Replica dei dati su altri cluster ▸ Scrittura di un’immagine dell’intero database su disco
  • 67. IN MEMORY DATABASE TIMES-TEN ▸ E’ un database relazionale creato nel 1995 e acquisito da Oracle nel 2005 ▸ La persistenza é realizzata attraverso scritture periodiche dei dati su disco (le scritture sono asincrone) ▸ Su se verifica un errore durante la scrittura su disco, alcuni dati possono andare persi
  • 68. IN MEMORY DATABASE REDIS ▸ E’ un database chiave/valore sviluppato nel 2009 ▸ Se la dimensione dei dati supera la memoria a disposizione é in grado di gestire un’area di swap su disco ▸ La persistenza é realizzata attraverso la scrittura dell’intero database su disco: ▸ La scrittura può avvenire: ▸ On demand ▸ Schedulazione ▸ Superamento di una quota di dati da scrivere
  • 69. IN MEMORY DATABASE SPARK ▸ Sviluppato nel 2011, rappresenta la versione in memory del modello MapReduce di Hadoop ▸ Astrae il modello di MapReduce, semplificandone lo sviluppo e aumentandone la produttività ▸ Trattandosi di un modello di programmazione non necessita di alcun metodo di persistenza