Couchdb Nosql

3,227 views

Published on

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

No Downloads
Views
Total views
3,227
On SlideShare
0
From Embeds
0
Number of Embeds
42
Actions
Shares
0
Downloads
97
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Couchdb Nosql

  1. 1. Apache CouchDB
  2. 2. Relax
  3. 3. Hello • J Chris Anderson • Apache CouchDB committer • Web programmer (Rails, Ajax, etc) • Director, couch.io
  4. 4. About You? • Web developers are easy • Scalable key/value store • Peer-based Replication • Append-only IO pattern
  5. 5. Scaling Up • Hot. Literally. • You don’t have to think.
  6. 6. X Scaling Up • Hot. Literally. • You don’t have to think.
  7. 7. Scale Enforces Constraints • Distributed key / value stores • Context is expensive • No joins or autoincrement • Eventual consistency
  8. 8. e Web Scales
  9. 9. Why CouchDB? Native to the Web Local data == low latency Replicated applications Scale from a cluster to a smartphone
  10. 10. Of the Web Let me tell you something: Django may be built for the Web, but CouchDB is built of the Web. I've never seen software that so completely embraces the philosophies behind HTTP. ... this is what the software of the future looks like. Jacob Kaplan-Moss October 19, 2007 http://jacobian.org/writing/of-the-web/
  11. 11. Robust JSON HTTP Local
  12. 12. Robust Storage Append Only File Structure Designed to Crash Instant-On
  13. 13. Happy IO Patterns
  14. 14. JSON Documents { "_id": "BCCD12CBB", Schema Free "_rev": "1-AB764C", "type": "person", "name": "Darth Vader", Self-Contained "age": 63, "headware": ["Helmet", "Sombrero"], JavaScript Map } "dark_side": true Reduce Views
  15. 15. Map Reduce Views Docs { “user” : “Chris”, Map { “key” : “Alice”, “value” : 5 } “points” : 3 } { “key” : “Bob”, “value” : 7 } { “user” : “Joe”, function(doc) { { “key” : “Chris”, “value” : 3 } “points” : 10 } if (doc.user && doc.points) { { “key” : “Joe”, “value” : 10 } { “user” : “Alice”, emit(doc.user, doc.points); { “key” : “Mary”, “value” : 9 } “points” : 5 } } { “user” : “Mary”, } “points” : 9 } { “user” : “Bob”, Reduce “points” : 7 } Alice ... Chris: 15 function(keys, values, rereduce) { Everyone: 34 return sum(values); }
  16. 16. JavaScript Map Reduce
  17. 17. ful  You already know the API Use existing HTTP tools Talk directly to the browser
  18. 18. ful  CRUD • Create HTTP PUT /db/mydocid • Read HTTP GET /db/mydocid • Update HTTP PUT /db/mydocid • Delete HTTP DELETE /db/mydocid
  19. 19. Clustering w/ CouchDB-Lounge Partitioning / clustering proxy Nginx module Twisted Python query merge Makes many machines into one Couch
  20. 20. Local Data Low latency (fast) Peer-based incremental replication View source --> Open source
  21. 21. Gives Control to Users CC-BY-SA http://www.flickr.com/photos/kelleys/492253912/
  22. 22. Bandwidth Explosion
  23. 23. “no bars”
  24. 24. http://www.flickr.com/photos/hercwad/2290378571/
  25. 25. http://www.flickr.com/photos/mcpig/872293700/
  26. 26. Latency Sucks
  27. 27. Scaling Down 4 MB RAM
  28. 28. Erlang Parallel Fault tolerant Addictive Ninja Syntax
  29. 29. Browser Couch JavaScript port Uses HTML5 storage Replicates with CouchDB http://hg.toolness.com/browser-couch/
  30. 30. No SQL in HTML5
  31. 31. Incremental Replication
  32. 32. Document Oriented Not Relational • Documents in the Real World™ • Bills, letters, tax forms… • Same type != same structure • Self contained • Can be out of date (so what?) • No references
  33. 33. Document Oriented Not Relational • Documents in the Real World™ Bills, letters, tax forms… Natural Data • • Same type != same structure • Behaviour Can be out of date (so what?) • No references
  34. 34. Render JSON Docs as HTML shows/post.js /drl/_design/sofa/_show/post/Hello-World-For-Real-This-Time
  35. 35. Render Views as HTML lists/index.js /drl/_list/sofa/index/recent-posts?descending=true&limit=8
  36. 36. anks!
  37. 37. Resources @CouchDB http://couchdb.apache.org/ Dress like a Couch: http://shop.couchdb.com http://planet.couchdb.org/ https://peepcode.com/products/couchdb-with-rails
  38. 38. @couchdbinaction http://books.couchdb.org/relax
  39. 39. couch.io Berlin – London – Portland
  40. 40. CC-by-nd http://www.flic.kr/photos/eifelyeti110/273939759/

×