1. The Sequel to SQL:
Le nuove frontiere dei database
Prof Marcello Missiroli
Università di Modena e Reggio Emilia
XII Settimane della Scienza e della Tecnica
IIS Fermo Corni
Modena, 9 Dicembre 2014
4. Quiz
● 375.000.000 in 0,21 secondi
● Il tempo di accesso medio di un SSD è 5ns, 5
nanosecondi = 5.0 × 10-9
secondi
●
375.000.000×(5×10-9
)=1,78s
● Questi sono solo i risultati TROVATI da Google
● Il numero delle pagina ANALIZZATE è circa
2.000.000.000.
5. I database relazionali
● Un grande idea
● Una grande tecnologia
● Ottime implementazioni
● Un linguaggio quasi-standard (SQL) per
l'utilizzo
6. I database relazionali
● Un'idea del 1970
● Boom negli anni 80
● Tutti li usano (più o meno consciamente)
● Però, oggi il mondo è cambiato (informatico e
non). MOLTO cambiato!
8. 1. “Big data”
Esabyte (10 alla 18) salvati ogni anno nel mondo
Ogni anno creiamo
più contenuto digitale
di quanto ne sia stato
creato negli anni
precedenti.
La tendenza è
In aumento.
(*) Immagine da “NoSQL for Dummies”
9. 2. “Connectivity”
Nel corso del tempo,
I dati diventano sempre
più interconnessi.
Link, Hashtags, ...
“Connettività”delleinformazioni
(*) Immagine da “NoSQL for Dummies”
10. 3. Destrutturazione“Connettività”delleinformazioni
● La tendenza alla personalizzazione impedisce di trovare un
modello adatto per tutti.
● Necessario memorizzare molte informazioni per la stessa
entità (accelerata dal cosiddetto “web 2.0”)
● Esempi di evoluzione:
– “Titolo”
● negli anni 70: Stringa;
● oggi: Titolo multilinguaggio, con ideogrammi, multifont, da sinistra a destra
– “Ricavo da lavoro”
● negli anni 70: float.
● oggi: una lista di possibili lavori (occasionali, stagionali, fissi).
14. Il risultato
Complessità di dati
Performance
Per tutti questi motivi,
i DB relazionali non
sono più adeguati alle
necessità delle grandi
applicazioni moderne
(*) Immagine da “NoSQL for Dummies”
18. E che sarebbe?“Connettività”delleinformazioni
● Sta per “Not OnlySQL”
● Non vuol dire che SQL e i RDMBS non si
devono più usare!
● Indica che ci sono soluzioni che
POTREBBERO funzionare meglio!
19. CSC8101-2014-2015–P.Missier
Evoluzione dei modelli di dati
(*) Renzo Angles and Claudio Gutierrez. 2008. Survey of graph database
models. ACM Comput. Surv. 40, 1, Article 1 (February 2008), 39 pages.
DOI=10.1145/1322432.1322433 http://doi.acm.org/10.1145/1322432.1322433
20. Quattro categorie di NoSQLDB“Connettività”delleinformazioni
● Key-valueDB (Dynomite,
Voldermort,TokyoTyrant, ...)
● BigTable DB (Hbase, Hypertable,
Cassandra,...)
● Document DB (CouchDB, MongoDB, ...)
● GraphDB (Neo4j, Pregel, ...)
22. Cos'è un grafo?
● Un grafo è un insieme di elementi detti nodi
che possono essere collegati fra loro da linee
chiamate archi.
(*) Immagine da “A Walk in graph databases”
23. Grafo: il nodo
● Un identificatore
● Varie proprietà
● Lista di nodi in uscita
(*) Immagine da “A Walk in graph databases”
24. Grafo: l'arco
● Un identificatore
● Varie proprietà
● Un nodo d'ingresso
● Un nodo in uscita
(*) Immagine da “A Walk in graph databases”
26. CSC8101-2014-2015–P.Missier
Esempio concreto (in realtà MILIONI di nodi)
Type: user
Name:pippo
Type: tweet
Content:”#saluti a pluto!”
Type: user
Name:pluto
Type: hashtag
Value:”#saluti”
Type: user
Name:paperino
sent
contains
follows
m
entions
follows
28. CSC8101-2014-2015–P.Missier
Verificare la teoria dei sei gradi di separazione
Trovare il numero massimo di salti
necessari per collegare due qualsiasi utenti
MATCH x-[p:FOLLOWS*]->y
RETURN max(length(p))
29. Pregel / Giraph
● Approccio fortemente parallelo (Bulk
Synchronous Parallel)
● Una serie di iterazioni (supersteps)
● Ogni vertice richiama una funzione in parallelo
● Può leggere e spedire messaggi agli altri nodi
● Può decidere di fermarsi
● Quando tutti si fermano, l'algoritmo termina
33. 2A
∞
B
∞
C
30
D
5
E
2
S
0
5
30
Superstep 2
● Il nodo S non ha ricevuto
messaggi, e si disattiva
● I nodi C,D,E si attivano
● Aggiornano il proprio valore, se più
basso di quello memorizzato
● Inviano il messaggio ai vicini
(tranne da dove è arrivato il
messaggio con valore minimo)
2
2
2
2
7
4
32
34. 2A
7
B
4
C
30
D
5
E
2
S
0
5
30
Superstep 3
●
I nodi C,D,E non hanno ricevuto messaggi, e
si disattivano
●
I nodi A e B si attivano
●
Aggiornano il proprio valore, se più basso di
quello memorizzato (B riceve due messaggi,
e memorizza il minore)
●
Inviano il messaggio ai vicini (tranne da dove
è arrivato il messaggio con valore minimo)
2
2
2
26
9
6
38. 2A
6
B
4
C
6
D
5
E
2
S
0
5
30
Lo pseudocodice del programma
∀ Node v:
SS0: v.val = +inf;
SSn:
foreach msg in <incoming
messages>
minimum = min (min, msg.value)
if (minimum < v.val) {
v.val = minimum;
send v.val +
distance(v,v’) to all neighbours v’
except minimum origin
}
2
2
2
2
39. Riassumendo
● I Database relazionali, adatti a tanti problemi,
non sono in grado di gestire la grande mole di
dati dell'Information Age
● I Database NoSQL sono una possibile risposta:
sono scalabili, flessibili e in grado di sfruttare le
architetture parallele
● Non sono in competizione con i RDBMS, quanto
uno strumento aggiuntivo a nostra disposizione.
40. Riassumendo
● Imparare i DB NoSQL è una freccia in più al
vostro arco di conoscenza
● Forse al momento sembrano eccessivi, ma
l'evoluzione tecnologica è inarrestabile: chi si
limita all'esistente, rischia di restare indietro.
43. GRAZIE DELL'ATTENZIONE!
Marcello Missiroli
(prof.missiroli@gmail.com)
CREDITS
I.Paolo Missier, Dispense del corso “Introduction to Graph
Databases”.
II.Tobias Ivarrson, “NoSQL for Dummies”.
III. Pierre De Wilde “A Walk in Graph databases”
Per le parti di mia competenza, la licenza è CC BY-SA. Per
tutto il resto la licenza è dei rispettivi autori.