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.
19. Categoria CP:
BigTable
Hbase Categoria CA:
MongoDB* RDBMS
Riak*
Redis Consistency
Memcached
Scalaris
etc.
Categoria AP:
DynamoDB
CouchDB
Partition
Cassandra Availability
MongoDB* Tolerance
Tokyo Cabinet
Riak*
Voldemort
etc.
* Posizione configurabile
20. Categoria CP:
BigTable
Hbase Categoria CA:
MongoDB* RDBMS
Riak*
Redis Consistency
Memcached
Scalaris
etc.
Categoria AP:
DynamoDB
CouchDB
Partition
Cassandra Availability
MongoDB* Tolerance
Tokyo Cabinet
Riak*
Voldemort
etc.
* Posizione configurabile
21. Cosa abbiamo considerato per la scelta?
• Supporto multi-master configurabile
• Facilità di sincronizzazione dati e
applicazione
• Flessibilità del modello dati
• Semplicità
22. Categoria CP:
BigTable
Hbase Categoria CA:
MongoDB RDBMS
Riak
Redis Consistency
Memcached
Scalaris
etc.
Categoria AP:
DynamoDB
CouchDB
Cassandra Partition Availability
MongoDB Tolerance
Tokyo Cabinet
Riak
Voldemort
etc.
32. 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
34. RSS
REST Previsioni
Crawler
API meteo
Video
Eventi
...
CDN
35. RSS
REST Previsioni
Crawler
API meteo
Video
Eventi
? ...
CDN
36. Cosa ci serve?
• Flessibilità del modello dati
• Facilità di dialogo con PHP
• Contesto non distribuito
• Durevolezza non fondamentale
• Prestazioni
• Flessibilità di query
37. Perchè no CouchDB?
• Flessibilità del modello dati
• Facilità di dialogo con PHP
• Contesto non distribuito
• Durevolezza non fondamentale
• Prestazioni
• Flessibilità di query
50. Cos’è MongoDB:
• Datastore Documentale (JSON)
• Protocollo Binario
• Update in place -> locks!
• Flessibilità nelle query
51. Performance VS Data Safety
Le impostazioni predefinite sono “rischiose” (fsync ogni minuto).
Consigliata la replicazione per “stare tranquilli” e avere alta disponibilità.
54. 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
57. 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
58. Perchè no CouchDB, MongoDB?
• Couch occupa troppo spazio, troppo lento
• MongoDB non supportava TTL
• Ci basta qualcosa di molto più semplice
60. Cos’è Redis?
• Key/Value++
• Protocollo Binario
• Salva su RAM (snapshot su disco, evita
problema cold start)
• Necessario avere abbastanza RAM
61. 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
94. Dimensioni
Key Value
Colonne
Documentale
A grafo
> 90% dei casi d’uso
Complessità
Tratto da: http://www.slideshare.net/emileifrem/an-overview-of-nosql-jfokus-2011
110. http://www.flickr.com/photos/leandrociuffo/4128603357/
http://www.flickr.com/photos/uggboy/8043043095/
Photo Credits: 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/
Nome speaker
Mail speaker – company or community
111. 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.
Nome speaker
Mail speaker – company or community