Slideshare.net (beta)

 
Post to TwitterPost to Twitter
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 9 (more)

Using Amazon SimpleDB with Ruby on Rails

From martin.rehfeld, 8 months ago

The vision of eventually forming a truly scalable deployment archi more

3898 views  |  1 comment  |  9 favorites  |  113 downloads  |  4 embeds (Stats)
 

Categories

Add Category
 
 

Tags

activeresource rubyonrails rails ruby sdb simple-db amazon rug-b simpledb infrastructure

more

 
 

Groups / Events

 

 
Embed
options

More Info

CC Attribution License
This slideshow is Public
Total Views: 3898
on Slideshare: 3473
from embeds: 425

Slideshow transcript

Slide 1: Using Amazon SimpleDB with Rails Martin Rehfeld @ RUG-B 07-Feb-2008

Slide 2: Remember? AWS Rails Scenario } EC2 S3 Web Static Server Content Application Server memcached, backgrounDRb, Code  ... SQL  HOW TO GET A PERSIS Database DB? TENT

Slide 3: limited beta Amazon SimpleDB • Database web service advertised as • Simple, Flexible, Scalable, Fast, Reliable, Inexpensive • No RDBMS: no SQL, no joins, no schema, no referential integrity, no transactions • HTTP-Interface • Pay per use: • $0.14 per Machine Hour consumed • $0.10-0.18 per GB - data transfer • $1.50 per GB-month storage

Slide 4: Amazon SimpleDB Common Terms • Domain: SimpleDB storage container ~ table • Item: my domain A attributes ~ table rows accessed by ID ~ primary key } items • Attribute: (multiple) values ~ table columns; every item may have a different set of up to 256 attributes my domain B • Value: ... each Attribute may have multiple Values, always varchar(1024)[]

Slide 5: SimpleDB @ no code no code no code no code no code no code no code (amazon_sdb) rich API* simply working! *) defect release 0.6.5 when evaluated, but newer release available (not re-tested yet)

Slide 6: Amazon SimpleDB API • Domain level • CREATE, LIST, DELETE • Item level • GET, PUT, DELETE attributes with values • QUERY* for unordered item IDs by attribute values within one domain *) lexicographical =, !=, <, > <=, >=, STARTS-WITH, AND, OR, NOT, INTERSECTION / UNION • Beware: Eventual Consistency Approach!

Slide 7: Almost RESTful

Slide 8: Mapping RESTful URLs HTTP/REST SimpleDB GET /domain?query QUERY GET /domain/itemID GET ATTRIBUTES POST /domain/itemID PUT ATTRIBUTES PUT /domain/itemID PUT ATTRIBUTES (replace) DELETE /domain/itemID DELETE ATTRIBUTES

Slide 9: Mapping RESTful URLs Emulating multiple resources in one domain via _resource attribute HTTP/REST SimpleDB GET /domain/resource?query QUERY GET /domain/resource/itemID GET ATTRIBUTES POST /domain/resource/itemID PUT ATTRIBUTES PUT /domain/resource/itemID PUT ATTRIBUTES (replace) DELETE /domain/resource/itemID DELETE ATTRIBUTES

Slide 10: A Bridge to Rails ActiveResource „Rails XML“ HTTP/REST ? AWS SDB Proxy Server* „AWS XML“ HTTP/SDB API SimpleDB *) http://inside.glnetworks.de/2008/01/20/bridging-rails-to-amazon-simpledb-using-activeresource/

Slide 11: AWS SDB Proxy Plugin I • Install aws-sdb gem gem install aws-sdb • Install aws_sdb_proxy plugin: script/plugin install http://rug-b.rubyforge.org/svn/aws_sdb_proxy • Configure config/aws_sdb_proxy.yml development: aws_access_key_id: <your amazon aws key> aws_secret_access_key: <your amazon aws secret key> port: 8888 • Create new domain on Amazon SimpleDB rake aws_sdb:create_domain DOMAIN=ActiveResourceStore • Start AWS SDB Proxy rake aws_sdb:start_proxy_in_foreground

Slide 12: AWS SDB Proxy Plugin II • Create demo ActiveResource model class Post < ActiveResource::Base self.site = \"http://localhost:8888\" self.prefix = \"/ActiveResourceStore/\" end • Testdrive in script/console >> p = Post.create(:title => 'My first SimpleDB post') => #<Post:0x198ceec @prefix_options={}, @attributes={...}> >> p.body = 'Content is king' => \"Content is king\" >> p.save => true >> Post.find(:first, :params => { :title => 'My first SimpleDB post' }) => #<Post:0x18efef8 @prefix_options={}, @attributes={...}>

Slide 13: Vision: Fully Virtualized Scalable Stack... • Building blocks for AWS-only web app deployment: • Static assets/content in S3 • As many app servers as needed on EC2 • Structured data persisted in SimpleDB • All client/server interactions via SQS Note: XmlHttpRequest cross-site restrictions must be examined

Slide 14: Q &A ! Martin Rehfeld http://inside.glnetworks.de martin.rehfeld@glnetworks.de