SlideShare a Scribd company logo
Università degli Studi di Salerno 
Sistemi Informatici e Tecnologie del Software 
! 
Basi di Dati II 
Anno 2013/2014 
Prof.ssa G.Tortora Prof. G.Polese 
KEY-VALUE DATABASE 
Branca Carlo 
Grano Giovanni 
Merola Matteo 
Scalabrino Simone 
Redis
Key Value DATABASE
Usage pattern 
write-heavy 
applications 
Natura dei dati 
altamente dinamici 
molto variabili 
crescono 
velocemente
Key-Value Store
Key-Value Store 
Data Model: associative array 
Primary Key 
Coppia chiave-valore 
Valore: qualsiasi!
Amazon Dynamo 
“An extra tenth of second in response times will cost us 1% in sales” - Amazon
Assunzioni e Requisiti
Assunzioni e Requisiti 
Query Model 
il grosso dei dati dei servizi Amazon lavora su una 
semplice query e non ha bisogno di schemi 
relazionali 
ACID Properties 
garantire ACID porta minore availabilty; Dynamo si 
rivolge ad applicazioni che lavorano con più 
scarsa consistency (la “C” in ACID) e ciò si 
traduce in maggior availability 
Efficiency 
i servizi Amazon hanno requisiti di latenza molto 
severi
Obiettivi di Design
Obiettivi di Design 
Service Level Agreements 
ogni singola dipendenza nella piattaforma deve 
offrire la sua funzionalità con limiti ancor più stretti 
Incremental scalability 
capacità di scalare su ogni singolo nodo di 
storage con minimo impatto sul resto del sistema 
Simmetry 
ogni nodo ha le stesse responsabilità dei suoi pari 
Decentralization 
favorire le tecniche di decentralizzazione peer-to-peer 
su tecniche di controllo centralizzato 
Heterogeneity 
capacità di sfruttare l’infrastruttura eterogenea del 
sistema per girare
System Interface
System Interface 
get(key) 
localizza la replica dell’oggetto associato alle 
key nel sistema di storage e restituisce un 
singolo oggetto (o un lista) insieme al suo 
contesto 
put(key, context, object) 
determina dove le repliche dell’oggetto devono 
essere posizionate in base alla chiave 
associata e le scrive sul disco 
Contesto? insieme di metadati su un oggetto, trasparenti 
al chiamante, utilizzati per l’implementazione 
del versioning
Data Partitioning 
Dynamo deve scalare incrementalmente! 
Ha bisogno di un meccanismo di partizionamento dei dati su un set di nodi (hosts)
Data Partitioning 
Dynamo deve scalare incrementalmente! 
Ha bisogno di un meccanismo di partizionamento dei dati su un set di nodi (hosts) 
Consistent Hashing 
L’output di una funzione di hash è 
trattata come spazio circolare 
Ogni nodo è associato a un valore 
random che rappresenta la sua 
posizione sull’anello 
Ogni nodo è responsabile della 
regione tra sé e il suo 
predecessore
Distribuzione nodi non uniforme 
Distribuzione dati non uniforme 
Eterogeneità dei 
nodi
Virtual Servers
Virtual Servers 
Ogni nodo associato a punti multipli sul ring 
Ogni nodo virtuale si comporta come un singolo nodo, ma è responsabile 
di uno o più nodi virtuali 
Virtual Server (regioni): gestite dallo stesso nodo
Replicazione 
la “standard mode of operation” di Dynamo prevede i crash delle macchine 
per assicurare availability dei dati, gli stessi vengono replicati!
Replicazione 
la “standard mode of operation” di Dynamo prevede i crash delle macchine 
per assicurare availability dei dati, gli stessi vengono replicati! 
Ogni dato è replicato su N host successori. 
Ogni chiave k è associata un nodo 
coordinatore, che si fa carico di replicare le 
chiavi che cadono nel suo range. 
Preference List 
Una lista di nodi che contengono le 
repliche; contiene più di N nodi. 
Skip dei nodi virtuali! 
Aumento prestazioni: richieste read-only in 
qualsiasi replica
Data Structures 
Server 
non un KV tradizionale; in Redis il valore non è 
semplicemente una stringa! 
Complex data 
structures 
Redis include diversi tipi build-in, gli stessi data 
types fondamentali che troviamo nel software 
In-Memory 
Free 
Supporto linguaggi
Vantaggi
Vantaggi 
Performance! 
>100k+ operazioni SET per secondo 
>80k + operazioni GET per secondo 
Atomicità! 
Ogni comando primitivo in Redis è atomico! 
È possibile combinare primitive multiple in 
unità atomiche più grandi 
Polyglot Persistence 
Usare Redis non richiede il suo utilizzo 
esclusivo! 
Data Types! 
I tipi di dati offerti sono funzionali! Liste, sets, 
hashes sono più familiari per un 
programmatore rispetto a tabella, colonne e 
righe
Svantaggi
Svantaggi 
RAM 
L’ammontare di RAM richiesta è 
proporzionale alla grandezza del dataset. 
Grossi dataset in Redis sono veloci ma 
costosi! 
Memoria 
Redis richiede l’intero dataset in memoria. 
Ciò aumenta le prestazioni ma è il fattore 
che ne crea i principali limiti 
Persistenza 
La persistenza in Redis è altamente 
configurabile, ma la sua implementazione 
richiede un grosso uso di risorse di I/O
Chi usa Redis?
Chi usa Redis? 
http://redis.io
Redis Data Types
Strings
Get & Set di una chiave 
! 
Il tipo String è il valore più semplice 
associabile ad una chiave in Redis. 
Usando il tipo stringa come valore, stiamo 
mappando una stringa con un’altra stringa 
! 
I valori possono essere stringhe (inclusi 
binary data) di ogni tipo! Ad esempio, è 
possibile associare a una chiave un 
immagine jpeg!
Comportamento di Set 
! 
Un argomento addizionale può gestire il 
comportamento di SET 
! 
Operatori Atomici di Incremento 
! 
GET o SET di chiavi multiple con un unico 
valore!
Modifica e Interrogazione dello spazio 
delle chiavi 
! 
EXISTS restituisce 1 o 0 per una data chiave 
a seconda esista o meno nel database 
! 
DEL cancella una chiave e il suo valore 
associato 
! 
TYPE restituisce il tipo di valore associato 
alla specifica chiave
Lists
Operazioni Base 
! 
Le liste in Redis vengono implementate 
come liste concatenate. 
Pro: l’operazione di aggiunta di un nuovo 
elemento in testa o in coda alla lista avviene 
in tempo costante. 
Contro: accedere a un elemento in un indice 
specifico è un’operazione lenta. 
! 
LPUSH aggiunge un elemento in testa 
RPUSH aggiunge un elemento in coda 
LRANGE estrae un range di elementi 
LPOP/RPOP fa un pop dalla lista e ne ritorna 
il valore corrispondente
Hashes
Operazioni base 
! 
Le hashes di Redis sono 
esattamente quello che ci si 
aspetterebbe da una hash 
tradizionale. Sono perfette per 
mappare oggetti complessi. 
! 
HMSET imposta i campi indicati ai 
loro rispettivi valori 
Time complexity O(N) 
! 
HGET restituisce il valore associato 
al field un una hash 
Time complexity O(1) 
! 
HGETALL restituisce tutti i campi e i 
valori della hash 
Time complexity O(N)
Sets 
Sorted Sets
Un Set in Redis è una collezione non ordinata 
di stringhe 
Gli elementi di un set non possono avere 
duplicati 
Disponiamo di una serie di operazioni tipiche, 
quali intersezione, unione o differenza 
! 
SADD aggiunge uno specifico membro/i a un 
set di chiavi 
Time complexity O(1) 
! 
SISMEMBER controlla se quell’elemento fa 
parte di un set
Rimozione da un Set 
! 
SPOP restituisce e rimuove un elemento 
random dal set di valori di una chiave 
(simile a SRANDMEMBER, che ritorna un 
valore random senza rimuoverlo) 
Time complexity O(1) 
! 
SREM rimuove uno specifico valore da un 
set di una chiave 
Time complexity O(N)
SORTED SET - Operazione Base 
! 
I Sorted Sets in Redis sono un tipo di dati 
simile ad un mix tra un Set e un hash, con la 
differenza che mentre gli elementi in un set 
non sono ordinati, ogni elemento in un sorted 
set è associato con un floating point value 
chiamato score. 
! 
ZADD aggiunge uno specifico membro con il 
suo score a un sorted set per la chiave 
indicata. 
Time complexity O(log(N)) 
! 
ZRANGE restituisce uno specifico range di 
elementi in un sorted set 
Time complexity O(log(N)+M)
Replication
Replication 
Scalabilità 
Slaves multipli solamente per richieste read-only 
SLAVEOF 
Snapshot del master sullo slave 
Non bloccante 
Né lato master, né lato slave 
Flessibile 
Qualsiasi topologia possibile
Scarica questa presentazione 
http://goo.gl/NHIC8k 
Giovanni Grano 
granogiovanni90@gmail.com 
Università degli Studi di Salerno

More Related Content

Viewers also liked

NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliNoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliSteve Maraspin
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandrarantav
 
Cassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache CassandraCassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache CassandraJeremy Hanna
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideDavide Trevisan
 
Eletti big data_trento_25ott14
Eletti big data_trento_25ott14Eletti big data_trento_25ott14
Eletti big data_trento_25ott14Valerio Eletti
 
Cassandra, web scale no sql data platform
Cassandra, web scale no sql data platformCassandra, web scale no sql data platform
Cassandra, web scale no sql data platformMarko Švaljek
 
Nosql databases for the .net developer
Nosql databases for the .net developerNosql databases for the .net developer
Nosql databases for the .net developerJesus Rodriguez
 
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...DataStax
 
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...DataStax Academy
 
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniNoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniSteve Maraspin
 
Cassandra Data Model
Cassandra Data ModelCassandra Data Model
Cassandra Data Modelebenhewitt
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonGrisha Weintraub
 
Dynamodb Presentation
Dynamodb PresentationDynamodb Presentation
Dynamodb Presentationadvaitdeo
 

Viewers also liked (17)

NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non RelazionaliNoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
NoSQL Data Stores: Introduzione alle Basi di Dati Non Relazionali
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandra
 
No SQL Cassandra
No SQL CassandraNo SQL Cassandra
No SQL Cassandra
 
Cassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache CassandraCassandra + Hadoop: Analisi Batch con Apache Cassandra
Cassandra + Hadoop: Analisi Batch con Apache Cassandra
 
AWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan DavideAWS (Amazon Web Services) - Trevisan Davide
AWS (Amazon Web Services) - Trevisan Davide
 
Eletti big data_trento_25ott14
Eletti big data_trento_25ott14Eletti big data_trento_25ott14
Eletti big data_trento_25ott14
 
Cassandra, web scale no sql data platform
Cassandra, web scale no sql data platformCassandra, web scale no sql data platform
Cassandra, web scale no sql data platform
 
Nosql databases for the .net developer
Nosql databases for the .net developerNosql databases for the .net developer
Nosql databases for the .net developer
 
Cassandra ppt 1
Cassandra ppt 1Cassandra ppt 1
Cassandra ppt 1
 
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
C* Keys: Partitioning, Clustering, & CrossFit (Adam Hutson, DataScale) | Cass...
 
NOSQL
NOSQLNOSQL
NOSQL
 
Introduzione a Riak
Introduzione a RiakIntroduzione a Riak
Introduzione a Riak
 
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
Cassandra Community Webinar: Apache Spark Analytics at The Weather Channel - ...
 
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove SoluzioniNoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
NoSQL, No Worries: Vecchi Problemi, Nuove Soluzioni
 
Cassandra Data Model
Cassandra Data ModelCassandra Data Model
Cassandra Data Model
 
Dynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and ComparisonDynamo and BigTable - Review and Comparison
Dynamo and BigTable - Review and Comparison
 
Dynamodb Presentation
Dynamodb PresentationDynamodb Presentation
Dynamodb Presentation
 

Similar to NoSql - Key Value

MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009Massimiliano Dessì
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meetingguest67beeb9
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeomarcocasario
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 
MongoDB
MongoDBMongoDB
MongoDBNaLUG
 
LDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalitàLDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalitàTruelite
 
Indici - Come, Quando, Perchè
Indici - Come, Quando, PerchèIndici - Come, Quando, Perchè
Indici - Come, Quando, PerchèDavide Mauri
 
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDBAdvanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDBLuca Marignati
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateManuel Scapolan
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastorefirenze-gtug
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseMarco Pozzan
 
Java al servizio della data science - Java developers' meeting
Java al servizio della data science - Java developers' meetingJava al servizio della data science - Java developers' meeting
Java al servizio della data science - Java developers' meetingNicola Pedot
 
Presentazione Nuvola Vertica Light
Presentazione Nuvola Vertica LightPresentazione Nuvola Vertica Light
Presentazione Nuvola Vertica LightAlberto.F
 

Similar to NoSql - Key Value (20)

MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meeting
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 
MongoDB
MongoDBMongoDB
MongoDB
 
MongoDB
MongoDBMongoDB
MongoDB
 
LDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalitàLDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalità
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 
Ado net (versione 1 e 2)
Ado net (versione 1 e 2)Ado net (versione 1 e 2)
Ado net (versione 1 e 2)
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Indici - Come, Quando, Perchè
Indici - Come, Quando, PerchèIndici - Come, Quando, Perchè
Indici - Come, Quando, Perchè
 
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDBAdvanced Database Models and Architectures: Big Data: MySQL VS MongoDB
Advanced Database Models and Architectures: Big Data: MySQL VS MongoDB
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastore
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
 
Java al servizio della data science - Java developers' meeting
Java al servizio della data science - Java developers' meetingJava al servizio della data science - Java developers' meeting
Java al servizio della data science - Java developers' meeting
 
Presentazione Nuvola Vertica Light
Presentazione Nuvola Vertica LightPresentazione Nuvola Vertica Light
Presentazione Nuvola Vertica Light
 
Programming iOS lezione 3
Programming iOS lezione 3Programming iOS lezione 3
Programming iOS lezione 3
 
Data base elvira asile
Data base elvira asileData base elvira asile
Data base elvira asile
 

NoSql - Key Value

  • 1. Università degli Studi di Salerno Sistemi Informatici e Tecnologie del Software ! Basi di Dati II Anno 2013/2014 Prof.ssa G.Tortora Prof. G.Polese KEY-VALUE DATABASE Branca Carlo Grano Giovanni Merola Matteo Scalabrino Simone Redis
  • 2.
  • 3.
  • 5.
  • 6. Usage pattern write-heavy applications Natura dei dati altamente dinamici molto variabili crescono velocemente
  • 8. Key-Value Store Data Model: associative array Primary Key Coppia chiave-valore Valore: qualsiasi!
  • 9. Amazon Dynamo “An extra tenth of second in response times will cost us 1% in sales” - Amazon
  • 11. Assunzioni e Requisiti Query Model il grosso dei dati dei servizi Amazon lavora su una semplice query e non ha bisogno di schemi relazionali ACID Properties garantire ACID porta minore availabilty; Dynamo si rivolge ad applicazioni che lavorano con più scarsa consistency (la “C” in ACID) e ciò si traduce in maggior availability Efficiency i servizi Amazon hanno requisiti di latenza molto severi
  • 13. Obiettivi di Design Service Level Agreements ogni singola dipendenza nella piattaforma deve offrire la sua funzionalità con limiti ancor più stretti Incremental scalability capacità di scalare su ogni singolo nodo di storage con minimo impatto sul resto del sistema Simmetry ogni nodo ha le stesse responsabilità dei suoi pari Decentralization favorire le tecniche di decentralizzazione peer-to-peer su tecniche di controllo centralizzato Heterogeneity capacità di sfruttare l’infrastruttura eterogenea del sistema per girare
  • 15. System Interface get(key) localizza la replica dell’oggetto associato alle key nel sistema di storage e restituisce un singolo oggetto (o un lista) insieme al suo contesto put(key, context, object) determina dove le repliche dell’oggetto devono essere posizionate in base alla chiave associata e le scrive sul disco Contesto? insieme di metadati su un oggetto, trasparenti al chiamante, utilizzati per l’implementazione del versioning
  • 16. Data Partitioning Dynamo deve scalare incrementalmente! Ha bisogno di un meccanismo di partizionamento dei dati su un set di nodi (hosts)
  • 17. Data Partitioning Dynamo deve scalare incrementalmente! Ha bisogno di un meccanismo di partizionamento dei dati su un set di nodi (hosts) Consistent Hashing L’output di una funzione di hash è trattata come spazio circolare Ogni nodo è associato a un valore random che rappresenta la sua posizione sull’anello Ogni nodo è responsabile della regione tra sé e il suo predecessore
  • 18.
  • 19. Distribuzione nodi non uniforme Distribuzione dati non uniforme Eterogeneità dei nodi
  • 21. Virtual Servers Ogni nodo associato a punti multipli sul ring Ogni nodo virtuale si comporta come un singolo nodo, ma è responsabile di uno o più nodi virtuali Virtual Server (regioni): gestite dallo stesso nodo
  • 22. Replicazione la “standard mode of operation” di Dynamo prevede i crash delle macchine per assicurare availability dei dati, gli stessi vengono replicati!
  • 23. Replicazione la “standard mode of operation” di Dynamo prevede i crash delle macchine per assicurare availability dei dati, gli stessi vengono replicati! Ogni dato è replicato su N host successori. Ogni chiave k è associata un nodo coordinatore, che si fa carico di replicare le chiavi che cadono nel suo range. Preference List Una lista di nodi che contengono le repliche; contiene più di N nodi. Skip dei nodi virtuali! Aumento prestazioni: richieste read-only in qualsiasi replica
  • 24.
  • 25.
  • 26. Data Structures Server non un KV tradizionale; in Redis il valore non è semplicemente una stringa! Complex data structures Redis include diversi tipi build-in, gli stessi data types fondamentali che troviamo nel software In-Memory Free Supporto linguaggi
  • 28. Vantaggi Performance! >100k+ operazioni SET per secondo >80k + operazioni GET per secondo Atomicità! Ogni comando primitivo in Redis è atomico! È possibile combinare primitive multiple in unità atomiche più grandi Polyglot Persistence Usare Redis non richiede il suo utilizzo esclusivo! Data Types! I tipi di dati offerti sono funzionali! Liste, sets, hashes sono più familiari per un programmatore rispetto a tabella, colonne e righe
  • 30. Svantaggi RAM L’ammontare di RAM richiesta è proporzionale alla grandezza del dataset. Grossi dataset in Redis sono veloci ma costosi! Memoria Redis richiede l’intero dataset in memoria. Ciò aumenta le prestazioni ma è il fattore che ne crea i principali limiti Persistenza La persistenza in Redis è altamente configurabile, ma la sua implementazione richiede un grosso uso di risorse di I/O
  • 32. Chi usa Redis? http://redis.io
  • 35.
  • 36. Get & Set di una chiave ! Il tipo String è il valore più semplice associabile ad una chiave in Redis. Usando il tipo stringa come valore, stiamo mappando una stringa con un’altra stringa ! I valori possono essere stringhe (inclusi binary data) di ogni tipo! Ad esempio, è possibile associare a una chiave un immagine jpeg!
  • 37.
  • 38. Comportamento di Set ! Un argomento addizionale può gestire il comportamento di SET ! Operatori Atomici di Incremento ! GET o SET di chiavi multiple con un unico valore!
  • 39.
  • 40. Modifica e Interrogazione dello spazio delle chiavi ! EXISTS restituisce 1 o 0 per una data chiave a seconda esista o meno nel database ! DEL cancella una chiave e il suo valore associato ! TYPE restituisce il tipo di valore associato alla specifica chiave
  • 41. Lists
  • 42.
  • 43. Operazioni Base ! Le liste in Redis vengono implementate come liste concatenate. Pro: l’operazione di aggiunta di un nuovo elemento in testa o in coda alla lista avviene in tempo costante. Contro: accedere a un elemento in un indice specifico è un’operazione lenta. ! LPUSH aggiunge un elemento in testa RPUSH aggiunge un elemento in coda LRANGE estrae un range di elementi LPOP/RPOP fa un pop dalla lista e ne ritorna il valore corrispondente
  • 45.
  • 46. Operazioni base ! Le hashes di Redis sono esattamente quello che ci si aspetterebbe da una hash tradizionale. Sono perfette per mappare oggetti complessi. ! HMSET imposta i campi indicati ai loro rispettivi valori Time complexity O(N) ! HGET restituisce il valore associato al field un una hash Time complexity O(1) ! HGETALL restituisce tutti i campi e i valori della hash Time complexity O(N)
  • 48.
  • 49. Un Set in Redis è una collezione non ordinata di stringhe Gli elementi di un set non possono avere duplicati Disponiamo di una serie di operazioni tipiche, quali intersezione, unione o differenza ! SADD aggiunge uno specifico membro/i a un set di chiavi Time complexity O(1) ! SISMEMBER controlla se quell’elemento fa parte di un set
  • 50.
  • 51. Rimozione da un Set ! SPOP restituisce e rimuove un elemento random dal set di valori di una chiave (simile a SRANDMEMBER, che ritorna un valore random senza rimuoverlo) Time complexity O(1) ! SREM rimuove uno specifico valore da un set di una chiave Time complexity O(N)
  • 52.
  • 53. SORTED SET - Operazione Base ! I Sorted Sets in Redis sono un tipo di dati simile ad un mix tra un Set e un hash, con la differenza che mentre gli elementi in un set non sono ordinati, ogni elemento in un sorted set è associato con un floating point value chiamato score. ! ZADD aggiunge uno specifico membro con il suo score a un sorted set per la chiave indicata. Time complexity O(log(N)) ! ZRANGE restituisce uno specifico range di elementi in un sorted set Time complexity O(log(N)+M)
  • 54.
  • 56. Replication Scalabilità Slaves multipli solamente per richieste read-only SLAVEOF Snapshot del master sullo slave Non bloccante Né lato master, né lato slave Flessibile Qualsiasi topologia possibile
  • 57.
  • 58. Scarica questa presentazione http://goo.gl/NHIC8k Giovanni Grano granogiovanni90@gmail.com Università degli Studi di Salerno