Seconda parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Presentata un'introduzione sulle basi di dati non relazionali e sulle implicazioni che le loro caratteristiche hanno nello sviluppo di applicazioni enterprise.
27. Cenni su Riak
• Database key-value
• Interfaccia HTTP
• Usando i link si possono collegare chiavi
fra di loro
• CAP «configurabile» (si può decidere fra
coerenza e disponibilità per ciascuna
richiesta)
• Supporta ricerca full-text
35. Recap su Riak:
• Interfaccia HTTP
• Adatto alle situazioni in cui c’è bisogno di
HA
• Senza rinunciare ad alcune comode
operazioni sui dati (usando links, pre/post
commit hooks)
• Non adatto se c’è necessità di eseguire
query complesse
35
39. Cenni su HBase
• Controllo di versione incorporato
• Compressione
• Garbage collection
• Tabelle in memoria
• Coerenza (no availability)
• Write Ahead Logging
• Basato su Hadoop
• Pensato per cluster grandi (5-20 nodi)
50. Impedence Mismatch
Film Genere Drammatico:
Titolo Anno Visioni
Schindler’s List 1993 3454
Pulp Fiction 1994 2114
Il Padrino 1972 3873
Film Genere Western:
Titolo Anno Visioni
Il buono, il brutto, il cattivo 1966 7834
Film Genere Commedia:
Titolo Anno Visioni
Mamma ho perso l’aereo 1990 3555
71. Modello dati
Dimensione
Key Value
Colonne
Documentale
A grafo
> 90% dei casi d’uso
Complessità
Fonte: http://www.slideshare.net/emileifrem/an-overview-of-nosql-jfokus-2011
74. Confronto
replication sharding multi-master
support support
Memcached No (use Yes (through No (use
repcached client library) repcached
instead) instaed)
Project Async Yes Yes
Voldemort
Redis Async No No
Riak Async Yes Yes
Peer-based
74
75. Confronto (2)
data concurrency data types durability
storage control
Memcached RAM Lock-free Blob n.a.
Project RAM, BDB, MVCC Typed Data
Voldemort MySql, storage
others dependant
Redis RAM + disk Locks Semi-typed Append-
only log
Riak RAM, disk MVCC Semi-typed Durable
(Vector- write
clocks) quorum
75
76. Confronto (3)
requires transactions secondary
compaction indexex
Memcached No No No
Project Data storage No No
Voldemort dependant
Redis Snapshot Yes (multi No
operations
queues)
Riak No No Yes
76
77. Confronto (4)
security interface query language
protocol support
Memcached Via SASL TCP, UDP Commands C
Project None Protocol Commands Java
Voldemort Buffers,
Thrift, Avro
and Java
Serialization
Redis Passwords Simple text Commands C/C++
over TCP
Riak None HTTP, Map reduce Erlang
protobuf (weak
support)
77
80. Confronto
replication sharding multi-master
support support
CouchDB Master-master Yes (with filters Yes
in BigCouch)
MongoDB Master-slave Yes No
(replica sets)
OrientDB Master-master Dec. 2012 / Yes
Jan. 2013
RavenDB Master-master Yes Yes
80
81. Confronto (2)
data concurrency data types durability
storage control
CouchDB Disk Lock-free JSON Crash-only
MVCC
MongoDB Disk Write lock BSON Write-ahead
log, safe
mode
OrientDB Disk MVCC JSON Write-ahead
log
RavenDB RAM, Disk Configurable JSON Write-ahead
optimistic log, snapshot
concurrency (via ESE)
81
82. Confronto (3)
requires transactions secondary
compaction indexex
CouchDB Yes, file rewrite No Yes
MongoDB No No Yes
OrientDB No Yes No
RavenDB No Yes Yes
82
83. Confronto (4)
security interface query language
protocol support
CouchDB Users HTTP Map reduce Erlang
(REST) (weak
support)
MongoDB Users Binary over Commands, C++
TCP map reduce
OrientDB Users, HTTP SQL(+), Java
ACL (REST), Tinkerpop
Binary over
TCP
RavenDB Users .NET API, LINQ C#
HTTP
(REST)
83