nosql, no worries: vecchi problemi, nuove soluzioni
DESCRIPTION
Slide del talk sulle basi di dati non relazionali (NoSQL) al Codemotion di Venezia del 17/11/2012. Presentato un caso di studio di architettura basata su CouchDB, MongoDB, Redis e OrientDB, oltre che diversi concetti relativi ai datastore NoSQL.TRANSCRIPT
![Page 1: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/1.jpg)
NoSQL, No Worries
Stefano Maraspin
MV Associati
Vecchi problemi, nuove soluzioni
![Page 2: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/2.jpg)
@maraspin
![Page 3: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/3.jpg)
PARTIAMO DA UN CASE STUDY
![Page 4: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/4.jpg)
L’OBIETTIVO
![Page 5: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/5.jpg)
Classico Stack LAMP/LAPP
![Page 6: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/6.jpg)
![Page 7: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/7.jpg)
E SE?
![Page 8: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/8.jpg)
DISTRIBUZIONE DATI, LOGICA
![Page 9: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/9.jpg)
![Page 10: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/10.jpg)
VOGLIAMO ALTA DISPONIBILITÀ…
![Page 11: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/11.jpg)
…E COERENZA SUI DATI
![Page 12: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/12.jpg)
Non potete avere tutto, ragazzi!
Prof. Eric Brewer http://www.cs.berkeley.edu/~brewer/
![Page 13: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/13.jpg)
![Page 14: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/14.jpg)
![Page 15: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/15.jpg)
F H
![Page 16: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/16.jpg)
![Page 17: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/17.jpg)
Non scordiamo neppure la latenza!
![Page 18: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/18.jpg)
Consistency
Availability Partition Tolerance
![Page 19: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/19.jpg)
Consistency
Availability Partition Tolerance
Categoria AP: DynamoDB CouchDB Cassandra MongoDB* Tokyo Cabinet Riak* Voldemort etc.
* Posizione configurabile
Categoria CP: BigTable Hbase MongoDB* Riak* Redis Memcached Scalaris etc.
Categoria CA: RDBMS
![Page 20: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/20.jpg)
Consistency
Availability Partition Tolerance
Categoria AP: DynamoDB CouchDB Cassandra MongoDB* Tokyo Cabinet Riak* Voldemort etc.
* Posizione configurabile
Categoria CP: BigTable Hbase MongoDB* Riak* Redis Memcached Scalaris etc.
Categoria CA: RDBMS
![Page 21: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/21.jpg)
Cosa abbiamo considerato per la scelta? • Supporto multi-master configurabile • Facilità di sincronizzazione dati e
applicazione • Flessibilità del modello dati • Semplicità
![Page 22: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/22.jpg)
Consistency
Availability Partition Tolerance
Categoria AP: DynamoDB CouchDB Cassandra MongoDB Tokyo Cabinet Riak Voldemort etc.
Categoria CP: BigTable Hbase MongoDB Riak Redis Memcached Scalaris etc.
Categoria CA: RDBMS
![Page 23: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/23.jpg)
“designed with the web in mind”
![Page 24: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/24.jpg)
Cos’è CouchDB? • Datastore che parla HTTP • Modello dati documentale (JSON) • Pensato per contesti distribuiti • Replicazione master-master • Può contenere intere applicazioni Web
lato client HTML/CSS/JS (couchapp)
![Page 25: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/25.jpg)
![Page 26: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/26.jpg)
![Page 27: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/27.jpg)
SVILUPPATORI
SERVER-SIDE
![Page 28: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/28.jpg)
RELAZIONI
METADATI
![Page 29: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/29.jpg)
![Page 30: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/30.jpg)
0
2000
4000
6000
8000
10000
12000
14000
16000
DB Size (MB)
NB Quanto sopra su update!
Problema di spazio
![Page 31: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/31.jpg)
LA COMPATTAZIONE
![Page 32: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/32.jpg)
Prestazioni durante la compattazione
• 350 evt/sec in inserimento • 3000 evt/sec se in batch mode • 100 evt/sec su update • 10 evt/sec durante compattazione
NB: dati forniti unicamente per dare ordini di grandezza. Test eseguiti su server entry level IBM x3550 M3, 1x3.60 GHz Xeon, 4GB RAM, Dischi SAS in RAID 0; CouchDB configurato con httpd max_connections = 2048, export ERL_MAX_PORTS=4096, export ERL_FLAGS="+A 4«, fsync
![Page 33: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/33.jpg)
ULTERIORE ESIGENZA
![Page 34: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/34.jpg)
RSS
Previsioni meteo
Video
Eventi
...
REST API Crawler
CDN
![Page 35: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/35.jpg)
RSS
Previsioni meteo
Video
Eventi
...
REST API Crawler
CDN
?
![Page 36: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/36.jpg)
Cosa ci serve? • Flessibilità del modello dati • Facilità di dialogo con PHP • Contesto non distribuito • Durevolezza non fondamentale • Prestazioni • Flessibilità di query
![Page 37: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/37.jpg)
Perchè no CouchDB? • Flessibilità del modello dati • Facilità di dialogo con PHP • Contesto non distribuito • Durevolezza non fondamentale • Prestazioni • Flessibilità di query
![Page 38: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/38.jpg)
LE QUERY IN COUCHDB: MAP REDUCE
![Page 39: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/39.jpg)
Quante visioni hanno avuto i film in totale?
![Page 40: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/40.jpg)
{
"_id": "39c7c57daddba704c2b04606de001373",
"info_type": "view",
"movie": "The Gladiator",
"views": 37
}
{
"_id": "39c7c57daddba704c2b04606de000a2f",
"info_type": "view",
"movie": "Spiderman",
"views": 10
}
{
"_id": "39c7c57daddba704c2b04606de000c92",
"info_type": "view",
"movie": "Shrek",
"views": 25
}
![Page 41: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/41.jpg)
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
![Page 42: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/42.jpg)
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
10 37 25
![Page 43: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/43.jpg)
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
10 37 25
47 25
![Page 44: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/44.jpg)
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
10 37 25
47 25
72
![Page 45: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/45.jpg)
4
5
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
10 37 25
47 25
72
MAP
![Page 46: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/46.jpg)
4
6
{
"movie": "Spiderman",
"views": 10
}
{
"movie": "The Gladiator",
"views": 37
}
{
"movie": "Shrek",
"views": 25
}
10 37 25
47 25
72
REDUCE
![Page 47: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/47.jpg)
function(doc) {
if (doc.info_type == 'view') {
emit(doc.movie, doc.views);
}
}
Map:
Reduce: function (key, values, rereduce) {
return sum(values);
}
{
"_id": "39c7c57...",
"info_type": "view",
"movie": "The Gladiator",
"views": 37
}
![Page 48: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/48.jpg)
function(doc) {
if (doc.info_type == 'view') {
emit(doc.movie, doc.views);
}
}
Map:
Reduce: function (key, values, rereduce) {
return sum(values);
}
{
"_id": "39c7c57...",
"info_type": "view",
"movie": "The Gladiator",
"views": 37
}
Il problema è qui!
![Page 49: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/49.jpg)
“Hu(mongo)us”
![Page 50: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/50.jpg)
Cos’è MongoDB: • Datastore Documentale (JSON) • Protocollo Binario • Update in place -> locks! • Flessibilità nelle query
![Page 51: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/51.jpg)
Performance VS Data Safety
Le impostazioni predefinite (32bit e <v2.0) sono “rischiose” (no journal)
![Page 52: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/52.jpg)
Replica Set
![Page 53: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/53.jpg)
Failover
![Page 54: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/54.jpg)
A cosa fare attenzione?
• Nomi su database/collection: su errore, lui crea le entità specificate senza avvisare*
• Ordinamenti senza indici: raggiunto un certo quantitativo di dati non rallenta ma errore*
• Non farsi coinvolgere dalla flessibilità di query e cercare di costruirci sopra DB con relazioni
* esperienze con driver PHP
![Page 55: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/55.jpg)
![Page 56: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/56.jpg)
TUTTO APPOSTO SIGNORE!
![Page 57: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/57.jpg)
Cosa ci serve per un sistema di monitoring?
• Performance • Semplicità • Expiration automatico dei valori • Gestione del cold start • Non è un problema la perdita di dati
-> Ok persistenza volatile, no replicazione
![Page 58: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/58.jpg)
Perchè no CouchDB, MongoDB?
• Couch occupa troppo spazio, troppo lento • MongoDB non supportava TTL • Ci basta qualcosa di molto più semplice
![Page 59: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/59.jpg)
“Hey that’s Merz!”
![Page 60: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/60.jpg)
Cos’è Redis?
• Key/Value++ • Protocollo Binario • Salva su RAM (snapshot su disco, evita
problema cold start) • Necessario avere abbastanza RAM
![Page 61: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/61.jpg)
Dialogare con Redis
// Memorizzare un valore
> SET status ok
// Collezioni
> SADD luci_accese camera bagno
// Valore con scadenza prefissata
> SET status ok
> EXPIRE status 10 // in secondi
![Page 62: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/62.jpg)
![Page 63: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/63.jpg)
COME STANNO ANDANDO LE COSE?
![Page 64: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/64.jpg)
DI COSA PARLIAMO?
![Page 65: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/65.jpg)
Simuliamo un’esperienza d’uso
![Page 66: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/66.jpg)
Simuliamo un’esperienza d’uso
![Page 67: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/67.jpg)
Simuliamo un’esperienza d’uso
![Page 68: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/68.jpg)
Simuliamo un’esperienza d’uso
![Page 69: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/69.jpg)
G=(V,E)
![Page 70: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/70.jpg)
Quali sono state le applicazioni più usate?
![Page 71: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/71.jpg)
Database Relazionale
O(log N) O(log M) O(log N)
![Page 72: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/72.jpg)
Grafo
O(1)
O(1)
Reperimento nodi adiacenti diretto, senza necessità di consultare un indice
![Page 73: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/73.jpg)
“Multiple datamodels support”
![Page 74: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/74.jpg)
Modello Dati
![Page 75: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/75.jpg)
Di cosa parliamo?
“Interrogazioni“ con Stack Tinkerpop o SQL+
![Page 76: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/76.jpg)
![Page 77: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/77.jpg)
![Page 78: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/78.jpg)
![Page 79: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/79.jpg)
ACID Atomic Consistent Isolated Durable
BASE Basic Available Soft State Eventually Consistent
![Page 80: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/80.jpg)
Quindi non ho atomicità?
Ordine
Oggetto 1 Oggetto 2
Cliente
Aggiornamento ordine
![Page 81: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/81.jpg)
DATABASE RELAZIONALI
![Page 82: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/82.jpg)
NOSQL
![Page 83: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/83.jpg)
Aggregate Data Model
order_id = 1001
date = 2012-11-10
total_amount = 10.00€
name = Johnny
surname = Appleseed
product_name: Pear
quantity: 2
item_price: 2.50€
total_price: 5.00€
product_name: Mango
quantity: 1
item_price: 5.00€
total_price: 5.00€
![Page 84: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/84.jpg)
SCHEMALESS IS A LIE!
![Page 85: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/85.jpg)
Dati
Room TV Pannello Controllo
Analisi Statistiche
![Page 86: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/86.jpg)
Metadati
API
Dati hotel
API
Statistiche
API
Room TV Pannello Controllo
Analisi Statistiche
![Page 87: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/87.jpg)
POLYGLOT PERSISTANCE
![Page 88: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/88.jpg)
![Page 89: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/89.jpg)
TRADEOFFS
![Page 90: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/90.jpg)
VELOCITÀ VS PERSISTENZA
![Page 91: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/91.jpg)
DISPONIBILITÀ VS COERENZA
![Page 92: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/92.jpg)
SOLIDITÀ, AFFIDABILITÀ
![Page 93: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/93.jpg)
E IL MODELLO DATI?
![Page 94: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/94.jpg)
Dimensioni
Complessità
Key Value
Colonne
Documentale
A grafo
> 90% dei casi d’uso
Tratto da: http://www.slideshare.net/emileifrem/an-overview-of-nosql-jfokus-2011
![Page 95: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/95.jpg)
KEY/VALUE
![Page 96: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/96.jpg)
DOCUMENTALE
![Page 97: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/97.jpg)
GRAFO
![Page 98: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/98.jpg)
A COLONNA
![Page 99: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/99.jpg)
COSA PORTARE A CASA?
![Page 100: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/100.jpg)
DATABASE RELAZIONALI
![Page 101: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/101.jpg)
DATASTORE NOSQL
![Page 102: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/102.jpg)
GRAZIE
![Page 103: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/103.jpg)
DOMANDE?
![Page 104: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/104.jpg)
Nome speaker
Mail speaker – company or community
http://www.hubme.in/
Eventi di rilievo nell’Information Technology
![Page 105: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/105.jpg)
Nome speaker
Mail speaker – company or community
http://friuli.grusp.org/
![Page 106: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/106.jpg)
Nome speaker
Mail speaker – company or community
http://www.mvassociati.it/
Serve aiuto con architetture NoSQL?
![Page 107: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/107.jpg)
Per approfondire
![Page 108: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/108.jpg)
Per approfondire
![Page 109: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/109.jpg)
Per approfondire
![Page 110: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/110.jpg)
Nome speaker
Mail speaker – company or community
http://www.flickr.com/photos/leandrociuffo/4128603357/
http://www.flickr.com/photos/uggboy/8043043095/
http://www.flickr.com/photos/47108884@N07/6949078701/
http://www.flickr.com/photos/22750018@N05/4268345597/
http://www.flickr.com/photos/latt/509790815/
http://www.flickr.com/photos/iita-media-library/4808291918/
http://www.flickr.com/photos/portofsandiego/7777282856/
http://www.flickr.com/photos/shareandenjoy/7074965023/
http://www.flickr.com/photos/miggslives/5351504116/
http://www.flickr.com/photos/jabb/6956142046/
http://www.flickr.com/photos/mr_g_travels/863720665/
http://www.flickr.com/photos/polkadotcreations/2480587587/
http://www.flickr.com/photos/ppym1/387781444/
http://www.flickr.com/photos/ephotion/171928602/
http://www.flickr.com/photos/sepehrehsani/5766453552/
http://www.flickr.com/photos/jpstanley/69523927/
http://www.flickr.com/photos/lodigs/2833648828/
http://www.flickr.com/photos/freefoto/3844247553/
http://www.flickr.com/photos/ilri/7839428936/
http://www.flickr.com/photos/maugiart/5014963068/
http://www.flickr.com/photos/toptechwriter/3069396941/
http://www.flickr.com/photos/31492524@N00/3801200094/
http://www.flickr.com/photos/iita-media-library/5762064624/
http://www.flickr.com/photos/gewitterhexer/5540504147/
http://www.flickr.com/photos/djnordic/167433120/
http://www.flickr.com/photos/aidanwojtas/5879866927/
http://www.flickr.com/photos/dhwright/8012651441/
http://www.flickr.com/photos/capcase/4970062870/
http://www.flickr.com/photos/birminghammag/7979485144/
Photo Credits:
![Page 111: NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni](https://reader033.vdocuments.pub/reader033/viewer/2022051412/54c79d4b4a79595b1f8b45bb/html5/thumbnails/111.jpg)
Nome speaker
Mail speaker – company or community
Il know how utilizzato per la preparazione di questa presentazione è stato in buona parte acquisito durante lo sviluppo del sistema Hotel OnAir di concezione e proprietà di VDA Multimedia Spa, cui il case study di cui si è fatto accenno fa riferimento. Ringrazio il team leader del progetto, Stefano Brenelli, e tutto il team di sviluppo, per l'interessante, edificante e proficua collaborazione. In particolare ringrazio: Carlo Anselmi, Maurizio Battistella, Manuel Bitto, Nicola Busanello, Antonino Murador, Antonio Parrella, Nicola Pressi, Stefano Valle, Riccardo Zamuner, Michele Zanon, Tiziano Zonta. Ringrazio anche i colleghi Diego Drigani e Dario Tion, nonchè tutto il PUG Friuli per i sempre utili confronti e consigli.