Introduzione a Riak

download Introduzione a Riak

If you can't read please download the document

description

Introduzione a Riak, database NoSQL. Slide adatte per una introduzione molto generale, seguita da discussione in aula ed esempi pratici. Materiale prodotto nell'ambito di un progetto per la facoltà di Informatica della Università Bicocca di Milano, in collaborazione con Andrea Maurino e Blerina Spahiu

Transcript of Introduzione a Riak

  • 1. Riakhttp://basho.com/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