SlideShare a Scribd company logo
1 of 18
Riakhttp://basho.com/riak/
Caratteristiche Principali
● Key-Value store
● High-availability tramite clustering e replication
● Architettura Peer-to-Peer (No Master)
● Semplicità di gestione operazionale
● Trade-offs:
– Consistency
– Availability
Data store
● I dati sono memorizzati come coppie Chiave-Valore
● I Bucket partizionano lo spazio delle chiavi:
– corrispondono (grossomodo) alle tabelle del modello
relazionale
– evitano le collisioni (chiavi identiche per oggetti diversi)
● Gli oggetti memorizzati:
– sono semplicemente dati binari
– il tipo è determinato di volta in volta dal MIME Type
memorizzato insieme al dato
– possono avere una lista di metadati aggiuntivi
Architettura – 1
● Architettura a cluster per definizione
● Anello di indirizzamento (Riak Ring) a 160-bit
– suddiviso in partizioni di eguale dimensione
– ogni partizione è associata ad un vnode
● Ogni nodo fisico prende in carico lo stesso numero
di partizioni = (n. di partizioni) / (n. di nodi fisici)
● L'allocazione dei Vnode si alterna ciclicamente fra i
nodi fisici (ecco perché “anello”)
Architettura – 2
Ring con 32 partizioni/vnode e 4 nodi fisici (fonte: documentazione Riak)
Operazioni CRUD
● Create:
– La chiave può essere predeterminata o auto-generata da Riak
● Read:
– Accesso diretto per chiave
– Indici secondari
– Indici invertiti (ricerca testuale)
– Elenco delle chiavi del bucket
● Update:
– Gli update devono sempre contenere tutto il dato
● Delete
– Per eliminare un bucket bisogna cancellare ogni valore in esso contenuto
MapReduce – 1
● Tecnica per suddividere l'elaborazione di grandi dataset
in un sistema distribuito
● Filosofia:
“È più efficiente spostare 10 kb di codice verso i dati,
che spostare (stream) Gb di dati verso i tuoi 10 k di
codice”
● L'elaborazione avviene sugli stessi nodi fisici dove sono
memorizzati i dati
● Sfrutta in modo diretto la natura distribuita del sistema
MapReduce – 2
● La funzione Map viene eseguita su ogni oggetto selezionato,
producendo una lista di risultati intermedi. Esempi:
– A) conteggio delle parole in un testo
– B) estrazione di uno o più valori
● I risultati intermedi vengono aggregati dalla funzione Reduce.
Esempi:
– A) aggregazione di tutti i conteggi delle parole
– B) somma/media/ecc. dei valori estratti
● Le fasi Map e Reduce sono molto simili, possono infatti essere
concatenate per produrre analisi più complesse.
MapReduce – 3
Nodo coordinatore
Nodo elaboraz. 1
Map(Dato 1) {...}
Nodo elaboraz. 2
Map(Dato 2) {...}
Nodo elaboraz. N
Map(Dato N) {...}
...
Dato 1
Dato 2
Dato N
...
1
Richieste
di Map
Nodo coordinatore
Nodo elaboraz. 1
Nodo elaboraz. 2
Nodo elaboraz. N
...
2 Reduce
Dati intermedi 1
Dati intermedi 2
Dati intermedi N
3 Risultato
Ricerca
● Ricerca testuale:
– funzioni built-in di ricerca su dati di tipo XML o JSON
– necessaria configurazione
● Indici secondari
– sono costruiti sui metadati, invece che sui contenuti
– è quindi una “etichettatura” (tagging) più che
un'indicizzazione vera e propria
Use case – esempi
● Logging e monitoring
– log applicativi / web
– dati prodotti da sensori
● Session Storage
● Fornitura di contenuti
– banner pubblicitari
– siti web
– social network streams/walls
● Preferenze e dati utente
Use case: Server Monitoring - 1
● Raccolta di dati di monitoring: utilizzo memoria,
CPU, ecc.
● Quantità e intensità notevole di dati
● Struttura proposta:
– Bucket: identificativo del server
– Key: timestamp, con intervallo prefissato (ad es. 10
secondi)
– Value: JSON con i valori dei vari sensori, ad es:
{"CPU": 0.8, "MEM": 0.5}
Use case: Server Monitoring - 2
Server 1
Server 2
...
Server N
Riak Cluster:
/Bucket_Server1
/Bucket_Server2
/Bucket_ServerN
...
Dati
Dati
Dati
Use case: Server Monitoring - 3
● Si presta ad analisi massive con MapReduce
● Flessibilità: possiamo memorizzare qualsiasi
valore, anche non inizialmente previsto
● Tolleranza a comportamento non-ACID:
– Configurazione write-intensive (W=1)
– Tollera la perdita di dati
– Non sono necessarie transazioni ACID perché i
dati, una volta scritti, non cambieranno mai
Use case: Session Storage - 1
● Implementazione di un failover cluster:
– Cluster di web server (ad es. Apache Tomcat)
– Le sessioni sono memorizzate in uno storage condiviso
– Se cade un membro del cluster, l'utente viene rediretto in
maniera trasparente verso un altro server
● Struttura proposta:
– Bucket: applicazione da servire
– Key: SessionID dell'utente
– Value: valori memorizzati nella sessione
Use case: Session Storage - 2
Riak
Session
Storage
...
Load
Balancer
Tomcat Cluster
Web requests
Use case: Session Storage - 3
● Scalabilità praticamente lineare
● Tolleranza a comportamento non-ACID:
– tollera la perdita di dati (al massimo l'utente deve ri-
eseguire la login)
– Non sono necessarie transazioni ACID, perché i
dati non sono contesi fra più lettori/scrittori
Use case - Conclusioni
● Prestazioni migliori rispetto ad un RDBMS:
– velocità e throughput
– resistenza ai guasti
– scalabilità lineare
● Bisogna però rinunciare ad alcune garanzie ACID!
● Bassa “ricercabilità” (queryability) dei dati:
– indicizzazione e ricerca piuttosto primitive
– MapReduce adatto ad elaborazioni di tipo batch, non real-time

More Related Content

Viewers also liked

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
 
еремина метод проектной деятельности на уроках русяз и литературы
еремина метод проектной деятельности на уроках русяз и литературыеремина метод проектной деятельности на уроках русяз и литературы
еремина метод проектной деятельности на уроках русяз и литературыrionni777
 
Team-Based Product Ownership
Team-Based Product OwnershipTeam-Based Product Ownership
Team-Based Product OwnershipMark Weeks
 
Feliz cumple hermana ,
Feliz cumple hermana ,Feliz cumple hermana ,
Feliz cumple hermana ,Sivoney Leon
 
достижения 2013 2014 уч.года
достижения 2013 2014 уч.годадостижения 2013 2014 уч.года
достижения 2013 2014 уч.годаrionni777
 
девиантное (отклоняющееся) поведение психолог
девиантное (отклоняющееся) поведение психолог  девиантное (отклоняющееся) поведение психолог
девиантное (отклоняющееся) поведение психолог rionni777
 

Viewers also liked (13)

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
 
NoSql - Key Value
NoSql - Key ValueNoSql - Key Value
NoSql - Key Value
 
еремина метод проектной деятельности на уроках русяз и литературы
еремина метод проектной деятельности на уроках русяз и литературыеремина метод проектной деятельности на уроках русяз и литературы
еремина метод проектной деятельности на уроках русяз и литературы
 
Team-Based Product Ownership
Team-Based Product OwnershipTeam-Based Product Ownership
Team-Based Product Ownership
 
Feliz cumple hermana ,
Feliz cumple hermana ,Feliz cumple hermana ,
Feliz cumple hermana ,
 
Marketing
MarketingMarketing
Marketing
 
MySolutionsII
MySolutionsIIMySolutionsII
MySolutionsII
 
достижения 2013 2014 уч.года
достижения 2013 2014 уч.годадостижения 2013 2014 уч.года
достижения 2013 2014 уч.года
 
девиантное (отклоняющееся) поведение психолог
девиантное (отклоняющееся) поведение психолог  девиантное (отклоняющееся) поведение психолог
девиантное (отклоняющееся) поведение психолог
 
Zacademy
ZacademyZacademy
Zacademy
 
Authors Curb14
Authors Curb14Authors Curb14
Authors Curb14
 
Ensaios no caroá
Ensaios no caroáEnsaios no caroá
Ensaios no caroá
 

Similar to Introduzione a Riak

Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...
Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...
Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...Andrea Cannella
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologicoConsulthinkspa
 
SQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkSQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkAlessio Biasiutti
 
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"MarziaPaschini
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileIvan Rossi
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileBioDec
 
ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015
ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015
ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015CRS4 Research Center in Sardinia
 
Talend Open Studio for Data Integration
Talend Open Studio for Data IntegrationTalend Open Studio for Data Integration
Talend Open Studio for Data IntegrationAlessandro Gonella
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB
 
Big data stack tecnologico
Big data stack tecnologicoBig data stack tecnologico
Big data stack tecnologicoMassimo Romano
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su LinuxMajong DevJfu
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUG IT
 
Regione Toscana - Introdution to R Software
Regione Toscana - Introdution to R SoftwareRegione Toscana - Introdution to R Software
Regione Toscana - Introdution to R SoftwareOmar Giorgetti
 
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
 

Similar to Introduzione a Riak (20)

Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...
Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...
Seminario Basi di Dati - Architetture Distribuite - Università degli Studi di...
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologico
 
SQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with SparkSQL Saturday 2019 - Event Processing with Spark
SQL Saturday 2019 - Event Processing with Spark
 
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
Presentazione di "Summary of NebulOS: A Big Data framework for astrophysics"
 
Presentazione joinmapreduce
Presentazione joinmapreducePresentazione joinmapreduce
Presentazione joinmapreduce
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatileGlusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
 
E1 Memorie
E1 MemorieE1 Memorie
E1 Memorie
 
ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015
ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015
ORDBMS e NoSQL nel trattamento dei dati geografici parte seconda. 30 Sett. 2015
 
Talend Open Studio for Data Integration
Talend Open Studio for Data IntegrationTalend Open Studio for Data Integration
Talend Open Studio for Data Integration
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
 
Big data stack tecnologico
Big data stack tecnologicoBig data stack tecnologico
Big data stack tecnologico
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 
Calcolo Parallelo
Calcolo ParalleloCalcolo Parallelo
Calcolo Parallelo
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
 
Regione Toscana - Introdution to R Software
Regione Toscana - Introdution to R SoftwareRegione Toscana - Introdution to R Software
Regione Toscana - Introdution to R Software
 
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
 

Introduzione a Riak

  • 2. Caratteristiche Principali ● Key-Value store ● High-availability tramite clustering e replication ● Architettura Peer-to-Peer (No Master) ● Semplicità di gestione operazionale ● Trade-offs: – Consistency – Availability
  • 3. Data store ● I dati sono memorizzati come coppie Chiave-Valore ● I Bucket partizionano lo spazio delle chiavi: – corrispondono (grossomodo) alle tabelle del modello relazionale – evitano le collisioni (chiavi identiche per oggetti diversi) ● Gli oggetti memorizzati: – sono semplicemente dati binari – il tipo è determinato di volta in volta dal MIME Type memorizzato insieme al dato – possono avere una lista di metadati aggiuntivi
  • 4. Architettura – 1 ● Architettura a cluster per definizione ● Anello di indirizzamento (Riak Ring) a 160-bit – suddiviso in partizioni di eguale dimensione – ogni partizione è associata ad un vnode ● Ogni nodo fisico prende in carico lo stesso numero di partizioni = (n. di partizioni) / (n. di nodi fisici) ● L'allocazione dei Vnode si alterna ciclicamente fra i nodi fisici (ecco perché “anello”)
  • 5. Architettura – 2 Ring con 32 partizioni/vnode e 4 nodi fisici (fonte: documentazione Riak)
  • 6. Operazioni CRUD ● Create: – La chiave può essere predeterminata o auto-generata da Riak ● Read: – Accesso diretto per chiave – Indici secondari – Indici invertiti (ricerca testuale) – Elenco delle chiavi del bucket ● Update: – Gli update devono sempre contenere tutto il dato ● Delete – Per eliminare un bucket bisogna cancellare ogni valore in esso contenuto
  • 7. MapReduce – 1 ● Tecnica per suddividere l'elaborazione di grandi dataset in un sistema distribuito ● Filosofia: “È più efficiente spostare 10 kb di codice verso i dati, che spostare (stream) Gb di dati verso i tuoi 10 k di codice” ● L'elaborazione avviene sugli stessi nodi fisici dove sono memorizzati i dati ● Sfrutta in modo diretto la natura distribuita del sistema
  • 8. MapReduce – 2 ● La funzione Map viene eseguita su ogni oggetto selezionato, producendo una lista di risultati intermedi. Esempi: – A) conteggio delle parole in un testo – B) estrazione di uno o più valori ● I risultati intermedi vengono aggregati dalla funzione Reduce. Esempi: – A) aggregazione di tutti i conteggi delle parole – B) somma/media/ecc. dei valori estratti ● Le fasi Map e Reduce sono molto simili, possono infatti essere concatenate per produrre analisi più complesse.
  • 9. MapReduce – 3 Nodo coordinatore Nodo elaboraz. 1 Map(Dato 1) {...} Nodo elaboraz. 2 Map(Dato 2) {...} Nodo elaboraz. N Map(Dato N) {...} ... Dato 1 Dato 2 Dato N ... 1 Richieste di Map Nodo coordinatore Nodo elaboraz. 1 Nodo elaboraz. 2 Nodo elaboraz. N ... 2 Reduce Dati intermedi 1 Dati intermedi 2 Dati intermedi N 3 Risultato
  • 10. Ricerca ● Ricerca testuale: – funzioni built-in di ricerca su dati di tipo XML o JSON – necessaria configurazione ● Indici secondari – sono costruiti sui metadati, invece che sui contenuti – è quindi una “etichettatura” (tagging) più che un'indicizzazione vera e propria
  • 11. Use case – esempi ● Logging e monitoring – log applicativi / web – dati prodotti da sensori ● Session Storage ● Fornitura di contenuti – banner pubblicitari – siti web – social network streams/walls ● Preferenze e dati utente
  • 12. Use case: Server Monitoring - 1 ● Raccolta di dati di monitoring: utilizzo memoria, CPU, ecc. ● Quantità e intensità notevole di dati ● Struttura proposta: – Bucket: identificativo del server – Key: timestamp, con intervallo prefissato (ad es. 10 secondi) – Value: JSON con i valori dei vari sensori, ad es: {"CPU": 0.8, "MEM": 0.5}
  • 13. Use case: Server Monitoring - 2 Server 1 Server 2 ... Server N Riak Cluster: /Bucket_Server1 /Bucket_Server2 /Bucket_ServerN ... Dati Dati Dati
  • 14. Use case: Server Monitoring - 3 ● Si presta ad analisi massive con MapReduce ● Flessibilità: possiamo memorizzare qualsiasi valore, anche non inizialmente previsto ● Tolleranza a comportamento non-ACID: – Configurazione write-intensive (W=1) – Tollera la perdita di dati – Non sono necessarie transazioni ACID perché i dati, una volta scritti, non cambieranno mai
  • 15. Use case: Session Storage - 1 ● Implementazione di un failover cluster: – Cluster di web server (ad es. Apache Tomcat) – Le sessioni sono memorizzate in uno storage condiviso – Se cade un membro del cluster, l'utente viene rediretto in maniera trasparente verso un altro server ● Struttura proposta: – Bucket: applicazione da servire – Key: SessionID dell'utente – Value: valori memorizzati nella sessione
  • 16. Use case: Session Storage - 2 Riak Session Storage ... Load Balancer Tomcat Cluster Web requests
  • 17. Use case: Session Storage - 3 ● Scalabilità praticamente lineare ● Tolleranza a comportamento non-ACID: – tollera la perdita di dati (al massimo l'utente deve ri- eseguire la login) – Non sono necessarie transazioni ACID, perché i dati non sono contesi fra più lettori/scrittori
  • 18. Use case - Conclusioni ● Prestazioni migliori rispetto ad un RDBMS: – velocità e throughput – resistenza ai guasti – scalabilità lineare ● Bisogna però rinunciare ad alcune garanzie ACID! ● Bassa “ricercabilità” (queryability) dei dati: – indicizzazione e ricerca piuttosto primitive – MapReduce adatto ad elaborazioni di tipo batch, non real-time