Your SlideShare is downloading. ×
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Riak from Small to Large
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Riak from Small to Large

6,283

Published on

Riak (http://basho.com), a dynamo-inspired, open-source key/value datastore, was built to scale from a single machine to a 100+ cluster without driving you or your operations team crazy. …

Riak (http://basho.com), a dynamo-inspired, open-source key/value datastore, was built to scale from a single machine to a 100+ cluster without driving you or your operations team crazy.

This presentation points out the characteristics of Riak that become important in small, medium, and large clusters, and then demonstrates the Riak API via the Python client library.

Published in: Technology
2 Comments
11 Likes
Statistics
Notes
No Downloads
Views
Total Views
6,283
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
104
Comments
2
Likes
11
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Riak from Small to Large (about 2 minutes until start) Berlin Buzzwords · June 2010 Rusty Klophaus (@rklophaus) Basho Technologies
  • 2. Introduction Riak at Scale Using the Riak API 2
  • 3. There are 47 different NoSQL projects... Where does Riak fit in? 3
  • 4. Riak is a Dynamo-inspired, open-sourced, key/value datastore built to scale predictably and easily. 4
  • 5. Riak is a Dynamo-inspired open-sourced, key/value datastore built to scale predictably and easily. Your ops guy: calm, relaxed, and wearing a party hat.
  • 6. What characteristics of Riak become important at different cluster sizes? 6
  • 7. Single Box Riak • NoSQL - Key/Value, Flexible Schema • Clients in Ruby, Python, Javascript, Java, PHP, Erlang • Development Interface === Production Interface • Configurable Buckets - “A Profile is not an .mp3” • Links - Lightweight Data Relations 7
  • 8. Small Riak Cluster (~3 boxes) • Distributed Queries for Performance / Capacity • Javascript-based Map/Reduce (mini-Hadoop) • Pre- and Post- Commit Hooks • Well-Behaved HTTP • nginx proxy config - http://gist.github.com/323048 • Protocol Buffers 8
  • 9. Large Riak Cluster (10+ boxes) • Homogenous - No special nodes • Laugh in the face of machine failure • Scale by adding machines • Self-Contained Installation 9
  • 10. Enterprise ($$$ / ~10’s of boxes) • On-Call Support 24x7x365 • Management Tools • SNMP Monitoring • Multi-site Replication 10
  • 11. Enterprise ($$$ / ~10’s of boxes) • On-Call Support 24x7x365 • Management Tools • SNMP Monitoring • Multi-site Replication 11
  • 12. Tutorial Get Riak Connect with a Client Store Data Store an Object with Links Linkwalking Map/Reduce 12
  • 13. Get Riak Download http://downloads.basho.com/riak Start Riak cd riak bin/riak start 13
  • 14. Connect with Python # Code is at http://hg.basho.com import riak # Connect client = riak.RiakClient('127.0.0.1', 8098) 14
  • 15. Store Data mybucket = client.bucket('mybucket') # Create an object... obj = mybucket.new('myobject') obj.set_data({ 'foo' : 1, 'bar' : 2 }) obj.store() # Read the object... obj = mybucket.get('myobject') print obj.get_data() # Or, open a web browser... http://127.0.0.1:8098/riak/mybucket/myobject 15
  • 16. Store an Object with Links bands = client.bucket('bands') albums = client.bucket('albums') members = client.bucket('members') # Store a band, link to album and members... obj = bands.new('Winger') .add_link(albums.new('Pull', 1275922).store()) .add_link(albums.new('IV', 542731).store()) .add_link(albums.new('Karma', 200170).store()) .add_link(members.new('Kip Winger').store()) .add_link(members.new('Reb Beach').store()) .add_link(members.new('John Roth').store()) .add_link(members.new('Rod M.').store()) .store() 16
  • 17. Linkwalking # Get the albums... albums = obj.link('albums').run() # Get the songs (assumes data is present)... songs = obj.link('albums').link('songs').run() # Get the members... members = riak.MapReduce(client) .add('bands', 'Winger') .link('members') .run() 17
  • 18. Map/Reduce # Count the number of sales... result = obj .link('albums') .map("function(v) { return [v.values[0].data]; }") .reduce("Riak.reduceSum") .run() 18
  • 19. Thanks! Questions? Next Steps Read more at http://wiki.basho.com Download binaries from http://downloads.basho.com Get source code from http://hg.basho.com Join the public mailing list at riak-users@lists.basho.com Mailing list archives at http://riak.markmail.org Thanks! Rusty Klophaus (@rklophaus) 19

×