riak
play

Riak a distributed, web-inspired database NoSQLBerlin'09 Martin - PowerPoint PPT Presentation

Riak a distributed, web-inspired database NoSQLBerlin'09 Martin Scholl <ms@diskware.net> @zeit_geist Historical Notes Riak is Basho Incs brainchild Apache 2.0 licensed first public release 09/08/07


  1. Riak a distributed, web-inspired database NoSQLBerlin'09 Martin Scholl <ms@diskware.net> @zeit_geist

  2. Historical Notes • Riak is Basho Inc’s brainchild • Apache 2.0 licensed • first public release 09/08/07 • http://riak.basho.com/ • http://bitbucket.org/justin/riak • http://github.com/zeitgeist/riak

  3. 1. Overture

  4. What is Riak? • a lot of Twitter fame recently • uses a bunch of buzzword technology • its so NoSQL, MapReduce and that stuff • written in Erlang • even your mother-in-law loves Riak • obvious question: how awesome is it really?

  5. Scientific Model of Awesomeness Cassandra CouchDB Riak ✓ ✓ ✓ cool? ✓ ✓ distributed ✓ ✓ HTTP/REST ✓ ✓ JSON Erlang ✓ ✓ M/R ✓ ✓

  6. We have a winner awesomeness % • result of a fair and objective competition: 100 Riak is 75 50 100% 25 awesome 0 Cassandra CouchDB Riak

  7. 2. The Serious Part (caffeine will be served in 42 minutes)

  8. What Riak really is • Distributed Data Storage System (DDSS) • BASE • Dynamo inspired • Erlang implemented • MapReduce’ing • Textbook style DDSS implementation

  9. Data Model • Data-Sphere: Bucket x Key x Document • Bucket : a named scope of keys and values • created implicitly, on demand • has constraints • Key : choose freely

  10. Document Model • Documents hold the actual data • actual data can be virtually anything • internal data format: Erlang-Tuple • current gold-standard: JSON objects • model the Web’s nature • embedded doc-links!

  11. 2.1 A tour through Riak We jump off cliff HTTP/REST and land in Riak’s guts

  12. HTTP/REST JSON-API • GET /jiak/<bucket>/<key> • fetch a document • POST /jiak/<bucket> • create a new entry, key gets generated • PUT /jiak/<bucket>/<key> • create / update a doc

  13. JSON Documents { User A bucket :“users”, key :“A” knows knows object : { name:... User B User C } links :[ knows [”users”,”B”,”B”], [“users”,”C”,”C”] User D ] }

  14. MapReduce Links • query Documents via M/R A • model Graph Structure B C • chain M/R stages • Map and Reduce: parallel executed D • M/R via HTTP/REST: • GET /jiak/<Bucket>/<Key>[/<MR>]+

  15. M/R Example • Link: [<B>,<K>,<T>] A • M/R: <B>,<K>,<T> B C • get A’s friends GET /jiak/users/A/ users,_,_ D • get A’s friends’ friends GET /jiak/users/A/ users,_,_ / users,_,_

  16. Request processing HTTP / REST • REST API is transparent spawn • Each Request is PUT / GET modelled as an Erlang FSM process query • different FSMs for Put, Node Get, Map and Reduce Node operations. Node

  17. The Ring • Ring: a fixed-size distribution map • data-base for determining nodes responsible for a key • hash: (B x K) -> 160b • filtered_preflist: (Ring x 160b)->Node

  18. Request Distribution • eventual consistency • N or n_val : # replicas • R : min get() s • W : min put() s • implemented as Erlang gen_fsm processes

  19. The Big Picture HTTP / REST native Client Ring Gossip Put FSM Get FSM Data Storage Ring VClocks Eventer Engines Erlang VM

  20. Riak is a DDSS Minix • Riak’s kernel: ~3.5k LOC! • Riak is more than a Document DB • clean and self-documenting codebase • extensible in many ways • Riak is a perfect fit for building reliable and scalable custom data storage systems!

  21. Thank you Riak is more: http://riak.basho.com/ don’t hesitate to contact me [to talk about e.g. Riak, Distributed systems, Erlang, etc.] Martin Scholl <ms (at) globalinfinity.de> global infinity GmbH

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend