0
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❤ CouchD...
What is Riak?Pronounced “REE-ack”A DatabaseA Data StoreA key/value storeA “NoSQL” databaseSchemaless and data-type agnosti...
What (else) is      Riak?As distributed as you want and need it to beScalableWritten (primarily) in ErlangUsed by Fortune ...
...in short?verteilter KV-Store, horizontal skalierbarder Grad an C, A und P sind wählbaraustauschbare Storage Backends (p...
Basic Concepts
ClusteRRiak besteht aus einem Cluster von Nodesein Cluster bildet einen Keyspace / KeyRingjede Riak Node besteht aus einer...
http://wiki.basho.com/What-is-Riak%3F.html
NodeJede Node in Riak sind identisch, es gibt keine RollenJede Node in Riak darf ausfallenEine Node wird zum Koordinator, ...
Bucketein Bucket ist eine logische Komponente, die wie einNamespace zu sehen istein Bucket kann Eigenschaften haben, z.B.K...
ConflictsLast-Write-Wins: basiert auf Timestamps undsorgt für ein “fire-and-forget” Verhalten(last_write_wins)Vector Clocks...
what else?Ring Informationen werden mit einem GossipProtocol im Cluster verteilt (Ring Status, PendingChanges, Partition O...
Tuning CAP in Riak
Tuning RiakRiak erlaubt es Konsistenz,Verfügbarkeit undPartitionstolleranz zu einem gewissen Grad zukontrollierenDiese Ein...
QuorenKonfigurierbar pro Bucket oder pro ObjektN - Anzahl der ReplikasW - Write QuorumR - Read Quorum
Examplegeringer R-Wert, geringere Read-Latency, wenigerKonsistenzgeringer W-Wert, geringere Write-LatencyR + W > N, starke...
More QUorumsDW - Durable Write Quorum  Mindestanzahl persistenter SchreiboperationenPW & PR - Primary Replica Write/Read Q...
Data Storage
Data StorageDie Keys von Objekten werden zusammen mit ihremBucketnamen gehasht, um ihre Position im Ringausfindig zu machen...
Store an Object [1]1. Cluster mit 8 Nodes, 64 Partitionen2. POST oder PUT an NODE1/buckets/my_bucket[/   my_key] mit Param...
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 e...
Store an ObjectPOST oder PUT an /buckets/my_bucket[/my_key]Header  Content-Type  X-Riak-Vclock  X-Riak-Meta-*  X-Riak-Inde...
Fetch an ObjectGET NODE1/buckets/my_bucket/my_key mitParameter: R=2Node 1 ermittelt zuständige Nodes und leitet dieAnfrage...
Querying Data
Querying DataEs gibt prinzipiell drei Möglichkeiten   MapReduce   Riak Serach   Riak 2i
Map ReduceMap ReduceKey Filter (z.B. begins_with, between,Transformationen, ...)Abfragen in Erlang oder Javascript, vordefi...
Riak SearchApache Lucene/Solr like VolltextsucheProgrammierbare Tokenizer, ...Ergebnis sind Keys, die z.B. als Input für M...
Riak 2i2i = Secondary Indexsimpler, Nutzer-definierter lexikalischer IndexErgebniss ist ebenfalls als Input für MR verwendb...
ResourcesInfos zu Riak / Dokumentation: http://wiki.basho.com/Riak Handbook, Mathias Meyer (eBook)gute Videos,Vorträge, us...
Thanks! Q & A?         ?     Sebastian Cohnen          @tisba
Upcoming SlideShare
Loading in...5
×

NoSQL CGN: Riak (01/2012)

1,786

Published on

Ein Big-Picture zu Riak am 4.1.2012 auf der NoSQL UG Cologne (nosql-cologne.org)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,786
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "NoSQL CGN: Riak (01/2012)"

  1. 1. An 10,000’ overview of a Dynamo-style KV-Store Sebastian Cohnen @tisba / tisba.de
  2. 2. About Me• Freier Entwickler❤ Ruby/Rails & node.js❤ Performance & Scalability Engineering❤ Distributed Load Testing❤ CouchDB, Redis & Riakund ebenfalls interessiert an Erlang, AMQP, ...
  3. 3. What is Riak?Pronounced “REE-ack”A DatabaseA Data StoreA key/value storeA “NoSQL” databaseSchemaless and data-type agnostic Quelle: http://wiki.basho.com/What-is-Riak%3F.html
  4. 4. What (else) is Riak?As distributed as you want and need it to beScalableWritten (primarily) in ErlangUsed by Fortune 100 CompaniesUsed by startupsNot the best fit for every project and application Quelle: http://wiki.basho.com/What-is-Riak%3F.html
  5. 5. ...in short?verteilter KV-Store, horizontal skalierbarder Grad an C, A und P sind wählbaraustauschbare Storage Backends (pro Bucket)Zugriff via HTTP/REST oder Protocol Buffersagnostisch zum Inhalt
  6. 6. Basic Concepts
  7. 7. ClusteRRiak besteht aus einem Cluster von Nodesein Cluster bildet einen Keyspace / KeyRingjede Riak Node besteht aus einer Anzahl vonVNodes (virtual node)Consistant Hashing bestimmt die Positionen vonVNodes und Keys im Ring
  8. 8. http://wiki.basho.com/What-is-Riak%3F.html
  9. 9. NodeJede Node in Riak sind identisch, es gibt keine RollenJede Node in Riak darf ausfallenEine Node wird zum Koordinator, wenn ein Clienteine Anfrage an ihn richtetEs können jederzeit Nodes hinzugefügt oder entferntwerden
  10. 10. Bucketein Bucket ist eine logische Komponente, die wie einNamespace zu sehen istein Bucket kann Eigenschaften haben, z.B.Konfiguration für ein Backend und Default-Werte fürQuorenDer Name eines Buckets gehört mit zum Key einesObjektes in Riak
  11. 11. ConflictsLast-Write-Wins: basiert auf Timestamps undsorgt für ein “fire-and-forget” Verhalten(last_write_wins)Vector Clocks, wobei Riak alle Siblings zurVerfügung stellt (allow_mult)Mittels Read Repair kann Riak beim Lesen vonObjekten Konsitenz unter den Nodes erzeugen
  12. 12. what else?Ring Informationen werden mit einem GossipProtocol im Cluster verteilt (Ring Status, PendingChanges, Partition Ownership, ...)Hinted Handoff wird benutzt, um Daten von einer“Vertreter-Node” zu einer ehemals nicht verfügbarenNode zu übertragenPre- und Post-Commit HooksLinks & Link-walkingLuwak
  13. 13. Tuning CAP in Riak
  14. 14. Tuning RiakRiak erlaubt es Konsistenz,Verfügbarkeit undPartitionstolleranz zu einem gewissen Grad zukontrollierenDiese Einstellungen können auf Bucket oder Key/Objekt-Ebene stattfindenUnterschiedliche Daten können so mitunterschiedlichen Anforderungen im selben Clustergespeichert werden
  15. 15. QuorenKonfigurierbar pro Bucket oder pro ObjektN - Anzahl der ReplikasW - Write QuorumR - Read Quorum
  16. 16. Examplegeringer R-Wert, geringere Read-Latency, wenigerKonsistenzgeringer W-Wert, geringere Write-LatencyR + W > N, starke Konsistenz (z.B. 2 + 3 > 4 oder 4 +3 > 5)...
  17. 17. More QUorumsDW - Durable Write Quorum Mindestanzahl persistenter SchreiboperationenPW & PR - Primary Replica Write/Read Quorum Mindestanzahl von verfügbaren primären Replikas
  18. 18. Data Storage
  19. 19. Data StorageDie Keys von Objekten werden zusammen mit ihremBucketnamen gehasht, um ihre Position im Ringausfindig zu machen und zustände Nodes zu ermittelnWichtig: Buckets sind nur logische Einheiten undbilden einen Namensraum
  20. 20. Store an Object [1]1. Cluster mit 8 Nodes, 64 Partitionen2. POST oder PUT an NODE1/buckets/my_bucket[/ my_key] mit Parameter: N=3, W=2, DW=13. Node1 wird zum Koordinator und ermittelt, wer für die drei Replikas zuständig ist, leitet den Schreibrequest weiter und wartet auf Antwort
  21. 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 15. Node 1 antwortet dem Client den Erfolg der Operation6. Node 8 beendet ebenfalls erfolgreich die Operation
  22. 22. Store an ObjectPOST oder PUT an /buckets/my_bucket[/my_key]Header Content-Type X-Riak-Vclock X-Riak-Meta-* X-Riak-Index-* Link
  23. 23. Fetch an ObjectGET NODE1/buckets/my_bucket/my_key mitParameter: R=2Node 1 ermittelt zuständige Nodes und leitet dieAnfrage weiterWenn mindestens zwei Nodes eine konsistenteAntwort geben, ist die Leseoperation erfolgreich
  24. 24. Querying Data
  25. 25. Querying DataEs gibt prinzipiell drei Möglichkeiten MapReduce Riak Serach Riak 2i
  26. 26. Map ReduceMap ReduceKey Filter (z.B. begins_with, between,Transformationen, ...)Abfragen in Erlang oder Javascript, vordefiniert oderzur Requestzeitgut für Datenanalyse
  27. 27. Riak SearchApache Lucene/Solr like VolltextsucheProgrammierbare Tokenizer, ...Ergebnis sind Keys, die z.B. als Input für MR genutztwerden könnenrelativ Ressourcen intensivIndex wird im Cluster gespeichert (Token-basiert)
  28. 28. Riak 2i2i = Secondary Indexsimpler, Nutzer-definierter lexikalischer IndexErgebniss ist ebenfalls als Input für MR verwendbarweniger Ressourcen intensiv, aber keine FTSIndex-Informationen werden zusammen mit demObjekt im Cluster gespeichert
  29. 29. ResourcesInfos zu Riak / Dokumentation: http://wiki.basho.com/Riak Handbook, Mathias Meyer (eBook)gute Videos,Vorträge, usw: http://basho.com/resources
  30. 30. Thanks! Q & A? ? Sebastian Cohnen @tisba
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×