SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
An 10,000’ overview
 of a Dynamo-style
      KV-Store

      Sebastian Cohnen
       @tisba / tisba.de
About Me

• Freier Entwickler
❤ Ruby/Rails & node.js
❤ Performance & Scalability Engineering
❤ Distributed Load Testing
❤ CouchDB, Redis & Riak
und ebenfalls interessiert an Erlang, AMQP, ...
What is Riak?

Pronounced “REE-ack”

A Database

A Data Store

A key/value store

A “NoSQL” database

Schemaless and data-type agnostic


                          Quelle: http://wiki.basho.com/What-is-Riak%3F.html
What (else) is
      Riak?
As distributed as you want and need it to be

Scalable

Written (primarily) in Erlang

Used by Fortune 100 Companies

Used by startups

Not the best fit for every project and application


                                Quelle: http://wiki.basho.com/What-is-Riak%3F.html
...in short?

verteilter KV-Store, horizontal skalierbar

der Grad an C, A und P sind wählbar

austauschbare Storage Backends (pro Bucket)

Zugriff via HTTP/REST oder Protocol Buffers

agnostisch zum Inhalt
Basic Concepts
ClusteR

Riak besteht aus einem Cluster von Nodes

ein Cluster bildet einen Keyspace / KeyRing

jede Riak Node besteht aus einer Anzahl von
VNodes (virtual node)

Consistant Hashing bestimmt die Positionen von
VNodes und Keys im Ring
http://wiki.basho.com/What-is-Riak%3F.html
Node

Jede Node in Riak sind identisch, es gibt keine Rollen

Jede Node in Riak darf ausfallen

Eine Node wird zum Koordinator, wenn ein Client
eine Anfrage an ihn richtet

Es können jederzeit Nodes hinzugefügt oder entfernt
werden
Bucket

ein Bucket ist eine logische Komponente, die wie ein
Namespace zu sehen ist

ein Bucket kann Eigenschaften haben, z.B.
Konfiguration für ein Backend und Default-Werte für
Quoren

Der Name eines Buckets gehört mit zum Key eines
Objektes in Riak
Conflicts

Last-Write-Wins: basiert auf Timestamps und
sorgt für ein “fire-and-forget” Verhalten
(last_write_wins)

Vector Clocks, wobei Riak alle Siblings zur
Verfügung stellt (allow_mult)

Mittels Read Repair kann Riak beim Lesen von
Objekten Konsitenz unter den Nodes erzeugen
what else?
Ring Informationen werden mit einem Gossip
Protocol im Cluster verteilt (Ring Status, Pending
Changes, Partition Ownership, ...)

Hinted Handoff wird benutzt, um Daten von einer
“Vertreter-Node” zu einer ehemals nicht verfügbaren
Node zu übertragen

Pre- und Post-Commit Hooks

Links & Link-walking

Luwak
Tuning CAP in Riak
Tuning Riak

Riak erlaubt es Konsistenz,Verfügbarkeit und
Partitionstolleranz zu einem gewissen Grad zu
kontrollieren

Diese Einstellungen können auf Bucket oder Key/
Objekt-Ebene stattfinden

Unterschiedliche Daten können so mit
unterschiedlichen Anforderungen im selben Cluster
gespeichert werden
Quoren


Konfigurierbar pro Bucket oder pro Objekt

N - Anzahl der Replikas

W - Write Quorum

R - Read Quorum
Example

geringer R-Wert, geringere Read-Latency, weniger
Konsistenz

geringer W-Wert, geringere Write-Latency

R + W > N, starke Konsistenz (z.B. 2 + 3 > 4 oder 4 +
3 > 5)

...
More QUorums


DW - Durable Write Quorum

  Mindestanzahl persistenter Schreiboperationen

PW & PR - Primary Replica Write/Read Quorum

  Mindestanzahl von verfügbaren primären Replikas
Data Storage
Data Storage


Die Keys von Objekten werden zusammen mit ihrem
Bucketnamen gehasht, um ihre Position im Ring
ausfindig zu machen und zustände Nodes zu ermitteln

Wichtig: Buckets sind nur logische Einheiten und
bilden einen Namensraum
Store an Object [1]

1. Cluster mit 8 Nodes, 64 Partitionen

2. POST oder PUT an NODE1/buckets/my_bucket[/
   my_key] mit Parameter: N=3, W=2, DW=1

3. Node1 wird zum Koordinator und ermittelt, wer für
   die drei Replikas zuständig ist, leitet den
   Schreibrequest weiter und wartet auf Antwort
Store Object [2]

4. Node 3, 5 und 8 erhält den Request

     Node 3 meldet Annahme des Requests an Node 1

     Node 5 meldet erfolgreiche Persistierung an Node
     1

5. Node 1 antwortet dem Client den Erfolg der
   Operation

6. Node 8 beendet ebenfalls erfolgreich die Operation
Store an Object

POST oder PUT an /buckets/my_bucket[/my_key]

Header
  Content-Type

  X-Riak-Vclock

  X-Riak-Meta-*

  X-Riak-Index-*

  Link
Fetch an Object

GET NODE1/buckets/my_bucket/my_key mit
Parameter: R=2

Node 1 ermittelt zuständige Nodes und leitet die
Anfrage weiter

Wenn mindestens zwei Nodes eine konsistente
Antwort geben, ist die Leseoperation erfolgreich
Querying Data
Querying Data


Es gibt prinzipiell drei Möglichkeiten

   MapReduce

   Riak Serach

   Riak 2i
Map Reduce

Map Reduce

Key Filter (z.B. begins_with, between,
Transformationen, ...)

Abfragen in Erlang oder Javascript, vordefiniert oder
zur Requestzeit

gut für Datenanalyse
Riak Search

Apache Lucene/Solr like Volltextsuche

Programmierbare Tokenizer, ...

Ergebnis sind Keys, die z.B. als Input für MR genutzt
werden können

relativ Ressourcen intensiv

Index wird im Cluster gespeichert (Token-basiert)
Riak 2i

2i = Secondary Index

simpler, Nutzer-definierter lexikalischer Index

Ergebniss ist ebenfalls als Input für MR verwendbar

weniger Ressourcen intensiv, aber keine FTS

Index-Informationen werden zusammen mit dem
Objekt im Cluster gespeichert
Resources


Infos zu Riak / Dokumentation: http://wiki.basho.com/

Riak Handbook, Mathias Meyer (eBook)

gute Videos,Vorträge, usw: http://basho.com/resources
Thanks! Q & A?


         ?
     Sebastian Cohnen
          @tisba

Weitere ähnliche Inhalte

Andere mochten auch

Erlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web WisdomErlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web Wisdomguest3933de
 
Intro to Erlang
Intro to ErlangIntro to Erlang
Intro to ErlangKen Pratt
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practicelitaocheng
 
learn you some erlang - chap13 to chap14
learn you some erlang - chap13 to chap14learn you some erlang - chap13 to chap14
learn you some erlang - chap13 to chap14경미 김
 
Using OTP and gen_server Effectively
Using OTP and gen_server EffectivelyUsing OTP and gen_server Effectively
Using OTP and gen_server EffectivelyKen Pratt
 
Swiss Cloud Conference 2014: die Folgen des Konkurses des Cloud Anbieters
Swiss Cloud Conference 2014: die Folgen des Konkurses des Cloud AnbietersSwiss Cloud Conference 2014: die Folgen des Konkurses des Cloud Anbieters
Swiss Cloud Conference 2014: die Folgen des Konkurses des Cloud Anbieterstopsoft - inspiring digital business
 
Carrefour de l_air2_v2
Carrefour de l_air2_v2Carrefour de l_air2_v2
Carrefour de l_air2_v2Phil75
 
Présentation open coffee 2011
Présentation open coffee 2011Présentation open coffee 2011
Présentation open coffee 2011ldecourcelle
 
Plénière sur la Vidéo au service de la promotion touristique - Intervention d...
Plénière sur la Vidéo au service de la promotion touristique - Intervention d...Plénière sur la Vidéo au service de la promotion touristique - Intervention d...
Plénière sur la Vidéo au service de la promotion touristique - Intervention d...R-Evolutions Touristiques de Brive
 
Atelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjour
Atelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjourAtelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjour
Atelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjourR-Evolutions Touristiques de Brive
 
In chile 2011 version fr
In chile 2011 version frIn chile 2011 version fr
In chile 2011 version frMR_Berthiaume
 
Gartenparties katalodg 2012_a4
Gartenparties katalodg 2012_a4Gartenparties katalodg 2012_a4
Gartenparties katalodg 2012_a4Möbel Schott GmbH
 

Andere mochten auch (20)

MPI, Erlang and the web
MPI, Erlang and the webMPI, Erlang and the web
MPI, Erlang and the web
 
Why erlang
Why erlangWhy erlang
Why erlang
 
Erlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web WisdomErlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web Wisdom
 
Intro to Erlang
Intro to ErlangIntro to Erlang
Intro to Erlang
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practice
 
learn you some erlang - chap13 to chap14
learn you some erlang - chap13 to chap14learn you some erlang - chap13 to chap14
learn you some erlang - chap13 to chap14
 
Erlang OTP
Erlang OTPErlang OTP
Erlang OTP
 
Actors in erlang
Actors in erlangActors in erlang
Actors in erlang
 
Barcamp2013
Barcamp2013Barcamp2013
Barcamp2013
 
Using OTP and gen_server Effectively
Using OTP and gen_server EffectivelyUsing OTP and gen_server Effectively
Using OTP and gen_server Effectively
 
Swiss Cloud Conference 2014: die Folgen des Konkurses des Cloud Anbieters
Swiss Cloud Conference 2014: die Folgen des Konkurses des Cloud AnbietersSwiss Cloud Conference 2014: die Folgen des Konkurses des Cloud Anbieters
Swiss Cloud Conference 2014: die Folgen des Konkurses des Cloud Anbieters
 
Carrefour de l_air2_v2
Carrefour de l_air2_v2Carrefour de l_air2_v2
Carrefour de l_air2_v2
 
Présentation open coffee 2011
Présentation open coffee 2011Présentation open coffee 2011
Présentation open coffee 2011
 
Plénière sur la Vidéo au service de la promotion touristique - Intervention d...
Plénière sur la Vidéo au service de la promotion touristique - Intervention d...Plénière sur la Vidéo au service de la promotion touristique - Intervention d...
Plénière sur la Vidéo au service de la promotion touristique - Intervention d...
 
Atelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjour
Atelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjourAtelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjour
Atelier 7 - intervention de la Communauté d'Agglo d'Agen sur la taxe de séjour
 
ADELIT
ADELITADELIT
ADELIT
 
Présentation1
Présentation1Présentation1
Présentation1
 
In chile 2011 version fr
In chile 2011 version frIn chile 2011 version fr
In chile 2011 version fr
 
Gartenparties katalodg 2012_a4
Gartenparties katalodg 2012_a4Gartenparties katalodg 2012_a4
Gartenparties katalodg 2012_a4
 
Autismo france 2011
Autismo france 2011Autismo france 2011
Autismo france 2011
 

Ähnlich wie NoSQL CGN: Riak (01/2012)

Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 
SQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die Cloud
SQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die CloudSQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die Cloud
SQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die CloudAWS Germany
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...AWS Germany
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatengeKarin Patenge
 
Caching mit Spring Boot - Pain & Gain @ JCON22
Caching mit Spring Boot - Pain & Gain @ JCON22Caching mit Spring Boot - Pain & Gain @ JCON22
Caching mit Spring Boot - Pain & Gain @ JCON22QAware GmbH
 
Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails EinführungReinhold Weber
 
Webinar DynamoDB deutsch
Webinar DynamoDB deutschWebinar DynamoDB deutsch
Webinar DynamoDB deutschAWS Germany
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere RESTMartin Abraham
 
Apache Cassandra - Einführung
Apache Cassandra - EinführungApache Cassandra - Einführung
Apache Cassandra - EinführungAndreas Finke
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Dietmar Leher
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBMario Müller
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatengeKarin Patenge
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Gunther Pippèrr
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAsKarin Patenge
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...OPITZ CONSULTING Deutschland
 
Title is loading ... Cache is cold.
Title is loading ... Cache is cold.Title is loading ... Cache is cold.
Title is loading ... Cache is cold.QAware GmbH
 

Ähnlich wie NoSQL CGN: Riak (01/2012) (20)

Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
SQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die Cloud
SQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die CloudSQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die Cloud
SQL oder NoSQL - Die Auswahl der richtigen Datenbankplattform für die Cloud
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 
Caching mit Spring Boot - Pain & Gain @ JCON22
Caching mit Spring Boot - Pain & Gain @ JCON22Caching mit Spring Boot - Pain & Gain @ JCON22
Caching mit Spring Boot - Pain & Gain @ JCON22
 
Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
 
Webinar DynamoDB deutsch
Webinar DynamoDB deutschWebinar DynamoDB deutsch
Webinar DynamoDB deutsch
 
Query Result Caching
Query Result CachingQuery Result Caching
Query Result Caching
 
SciflowWriter
SciflowWriterSciflowWriter
SciflowWriter
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
Apache Cassandra - Einführung
Apache Cassandra - EinführungApache Cassandra - Einführung
Apache Cassandra - Einführung
 
Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDBDokumentenorientiere Datenbanken am Beispiel CouchDB
Dokumentenorientiere Datenbanken am Beispiel CouchDB
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
 
Title is loading ... Cache is cold.
Title is loading ... Cache is cold.Title is loading ... Cache is cold.
Title is loading ... Cache is cold.
 

NoSQL CGN: Riak (01/2012)

  • 1. An 10,000’ overview of a Dynamo-style KV-Store Sebastian Cohnen @tisba / tisba.de
  • 2. About Me • Freier Entwickler ❤ Ruby/Rails & node.js ❤ Performance & Scalability Engineering ❤ Distributed Load Testing ❤ CouchDB, Redis & Riak und ebenfalls interessiert an Erlang, AMQP, ...
  • 3. What is Riak? Pronounced “REE-ack” A Database A Data Store A key/value store A “NoSQL” database Schemaless and data-type agnostic Quelle: http://wiki.basho.com/What-is-Riak%3F.html
  • 4. What (else) is Riak? As distributed as you want and need it to be Scalable Written (primarily) in Erlang Used by Fortune 100 Companies Used by startups Not the best fit for every project and application Quelle: http://wiki.basho.com/What-is-Riak%3F.html
  • 5. ...in short? verteilter KV-Store, horizontal skalierbar der Grad an C, A und P sind wählbar austauschbare Storage Backends (pro Bucket) Zugriff via HTTP/REST oder Protocol Buffers agnostisch zum Inhalt
  • 7. ClusteR Riak besteht aus einem Cluster von Nodes ein Cluster bildet einen Keyspace / KeyRing jede Riak Node besteht aus einer Anzahl von VNodes (virtual node) Consistant Hashing bestimmt die Positionen von VNodes und Keys im Ring
  • 9. Node Jede Node in Riak sind identisch, es gibt keine Rollen Jede Node in Riak darf ausfallen Eine Node wird zum Koordinator, wenn ein Client eine Anfrage an ihn richtet Es können jederzeit Nodes hinzugefügt oder entfernt werden
  • 10. Bucket ein Bucket ist eine logische Komponente, die wie ein Namespace zu sehen ist ein Bucket kann Eigenschaften haben, z.B. Konfiguration für ein Backend und Default-Werte für Quoren Der Name eines Buckets gehört mit zum Key eines Objektes in Riak
  • 11. Conflicts Last-Write-Wins: basiert auf Timestamps und sorgt für ein “fire-and-forget” Verhalten (last_write_wins) Vector Clocks, wobei Riak alle Siblings zur Verfügung stellt (allow_mult) Mittels Read Repair kann Riak beim Lesen von Objekten Konsitenz unter den Nodes erzeugen
  • 12. what else? Ring Informationen werden mit einem Gossip Protocol im Cluster verteilt (Ring Status, Pending Changes, Partition Ownership, ...) Hinted Handoff wird benutzt, um Daten von einer “Vertreter-Node” zu einer ehemals nicht verfügbaren Node zu übertragen Pre- und Post-Commit Hooks Links & Link-walking Luwak
  • 14. Tuning Riak Riak erlaubt es Konsistenz,Verfügbarkeit und Partitionstolleranz zu einem gewissen Grad zu kontrollieren Diese Einstellungen können auf Bucket oder Key/ Objekt-Ebene stattfinden Unterschiedliche Daten können so mit unterschiedlichen Anforderungen im selben Cluster gespeichert werden
  • 15. Quoren Konfigurierbar pro Bucket oder pro Objekt N - Anzahl der Replikas W - Write Quorum R - Read Quorum
  • 16. Example geringer R-Wert, geringere Read-Latency, weniger Konsistenz geringer W-Wert, geringere Write-Latency R + W > N, starke Konsistenz (z.B. 2 + 3 > 4 oder 4 + 3 > 5) ...
  • 17. More QUorums DW - Durable Write Quorum Mindestanzahl persistenter Schreiboperationen PW & PR - Primary Replica Write/Read Quorum Mindestanzahl von verfügbaren primären Replikas
  • 19. Data Storage Die Keys von Objekten werden zusammen mit ihrem Bucketnamen gehasht, um ihre Position im Ring ausfindig zu machen und zustände Nodes zu ermitteln Wichtig: Buckets sind nur logische Einheiten und bilden einen Namensraum
  • 20. Store an Object [1] 1. Cluster mit 8 Nodes, 64 Partitionen 2. POST oder PUT an NODE1/buckets/my_bucket[/ my_key] mit Parameter: N=3, W=2, DW=1 3. Node1 wird zum Koordinator und ermittelt, wer für die drei Replikas zuständig ist, leitet den Schreibrequest weiter und wartet auf Antwort
  • 21. Store Object [2] 4. Node 3, 5 und 8 erhält den Request Node 3 meldet Annahme des Requests an Node 1 Node 5 meldet erfolgreiche Persistierung an Node 1 5. Node 1 antwortet dem Client den Erfolg der Operation 6. Node 8 beendet ebenfalls erfolgreich die Operation
  • 22. Store an Object POST oder PUT an /buckets/my_bucket[/my_key] Header Content-Type X-Riak-Vclock X-Riak-Meta-* X-Riak-Index-* Link
  • 23. Fetch an Object GET NODE1/buckets/my_bucket/my_key mit Parameter: R=2 Node 1 ermittelt zuständige Nodes und leitet die Anfrage weiter Wenn mindestens zwei Nodes eine konsistente Antwort geben, ist die Leseoperation erfolgreich
  • 25. Querying Data Es gibt prinzipiell drei Möglichkeiten MapReduce Riak Serach Riak 2i
  • 26. Map Reduce Map Reduce Key Filter (z.B. begins_with, between, Transformationen, ...) Abfragen in Erlang oder Javascript, vordefiniert oder zur Requestzeit gut für Datenanalyse
  • 27. Riak Search Apache Lucene/Solr like Volltextsuche Programmierbare Tokenizer, ... Ergebnis sind Keys, die z.B. als Input für MR genutzt werden können relativ Ressourcen intensiv Index wird im Cluster gespeichert (Token-basiert)
  • 28. Riak 2i 2i = Secondary Index simpler, Nutzer-definierter lexikalischer Index Ergebniss ist ebenfalls als Input für MR verwendbar weniger Ressourcen intensiv, aber keine FTS Index-Informationen werden zusammen mit dem Objekt im Cluster gespeichert
  • 29. Resources Infos zu Riak / Dokumentation: http://wiki.basho.com/ Riak Handbook, Mathias Meyer (eBook) gute Videos,Vorträge, usw: http://basho.com/resources
  • 30. Thanks! Q & A? ? Sebastian Cohnen @tisba