NoSQL CGN: Riak (01/2012)
Upcoming SlideShare
Loading in...5
×
 

NoSQL CGN: Riak (01/2012)

on

  • 1,348 views

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

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

Statistics

Views

Total Views
1,348
Slideshare-icon Views on SlideShare
736
Embed Views
612

Actions

Likes
0
Downloads
5
Comments
0

5 Embeds 612

http://tisba.de 492
http://localhost 85
http://coderwall.com 17
http://www.directrss.co.il 14
http://feeds.feedburner.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    NoSQL CGN: Riak (01/2012) NoSQL CGN: Riak (01/2012) Presentation Transcript

    • 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 & Riakund ebenfalls interessiert an Erlang, AMQP, ...
    • 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
    • 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
    • ...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
    • Basic Concepts
    • 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
    • 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, wenn ein Clienteine Anfrage an ihn richtetEs können jederzeit Nodes hinzugefügt oder entferntwerden
    • 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
    • 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
    • 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
    • Tuning CAP in Riak
    • 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
    • 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 Konsistenz (z.B. 2 + 3 > 4 oder 4 +3 > 5)...
    • More QUorumsDW - Durable Write Quorum Mindestanzahl persistenter SchreiboperationenPW & PR - Primary Replica Write/Read Quorum Mindestanzahl von verfügbaren primären Replikas
    • Data Storage
    • 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
    • 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
    • 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
    • Store an ObjectPOST oder PUT an /buckets/my_bucket[/my_key]Header Content-Type X-Riak-Vclock X-Riak-Meta-* X-Riak-Index-* Link
    • 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
    • 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, vordefiniert oderzur Requestzeitgut für Datenanalyse
    • 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)
    • 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
    • ResourcesInfos 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