CouchDB

Embed Size (px)

DESCRIPTION

CADEC 2007 presentation on three major trends all embodied in CouchDB.

Citation preview

  • 1.Niklas Gustavsson [email_address] www.callistaenterprise.se

2. CouchDB, Slide Copyright 2008, Callista Enterprise AB Be warned 3. CouchDB, Slide Copyright 2008, Callista Enterprise AB Won't replace your relational database You (probably) won't be using it any time soon 4. CouchDB, Slide Copyright 2008, Callista Enterprise AB Forget about relationaldatabases for a while 5. CouchDB, Slide Copyright 2008, Callista Enterprise AB Open source projectstarted by Damien Katz http://couchdb.org Soon to be an Apache project 6. CouchDB, Slide Copyright 2008, Callista Enterprise AB How does it work? 7. CouchDB, Slide Copyright 2008, Callista Enterprise AB Document oriented Documents are JSON {firstName:Niklas, lastName: Gustavsson} Schema less 8. CouchDB, Slide Copyright 2008, Callista Enterprise AB Views Pre-computed, indexed table Incrementally updated Written in JavaScript 9. CouchDB, Slide Copyright 2008, Callista Enterprise AB // sort and retrieve documents by first name function (doc) { map(doc.firstName, doc); } // retrieve squares by size function (sq) { map(sq.width * sq.height, {color: sq.color}); } 10. CouchDB, Slide Copyright 2008, Callista Enterprise AB 1 2 3 So why should I care? 11. CouchDB, Slide Copyright 2008, Callista Enterprise AB First reason Sometimes availability trumps consistency 1 2 3 12. CouchDB, Slide Copyright 2008, Callista Enterprise AB CAP theorem - pick two: Consistency Availability Partitioning 13. CouchDB, Slide Copyright 2008, Callista Enterprise AB Eventual Consistency http://www.allthingsdistributed.com/2007/12/eventually_consistent.html 14. CouchDB, Slide Copyright 2008, Callista Enterprise AB NODES the number of nodes that store a replica WRITES the number nodes that confirm a commit READS the number of nodes that are contacted at a read operationWRITES+READS > NODES : strong consistency http://www.allthingsdistributed.com/2007/12/eventually_consistent.html 15. CouchDB, Slide Copyright 2008, Callista Enterprise AB Synchronous DB replication NODES = 2 WRITES = 2 READS = 1 2 + 1 > 2->Strong consistency http://www.allthingsdistributed.com/2007/12/eventually_consistent.html 16. CouchDB, Slide Copyright 2008, Callista Enterprise AB Asynchronous DB replication NODES = 2 WRITES = 1 READS = 1 1 + 1 > 2->Eventual consistency http://www.allthingsdistributed.com/2007/12/eventually_consistent.html 17. CouchDB, Slide Copyright 2008, Callista Enterprise AB What if NODES is 10 or 100 or 1000? Every increase in WRITES means less chance for a write to succeed 18. CouchDB, Slide Copyright 2008, Callista Enterprise AB http://www.allthingsdistributed.com/2007/12/eventually_consistent.html http://aws.amazon.com/simpledb http://lucene.apache.org/hadoop/ Read more 19. CouchDB, Slide Copyright 2008, Callista Enterprise AB Second reason: Moore haschanged tactic 1 2 3 20. CouchDB, Slide Copyright 2008, Callista Enterprise AB CPUs are getting slower but more plenty The Free Lunch is over - http://www.gotw.ca/publications/concurrency-ddj.htm 21. CouchDB, Slide Copyright 2008, Callista Enterprise AB We need to start parallelizing our tasks Concurrency in Java is really, really hard Share nothing Erlang processes and messaging Map/reduce 22. CouchDB, Slide Copyright 2008, Callista Enterprise AB Used for computing views in CouchDB map/reduce 23. CouchDB, Slide Copyright 2008, Callista Enterprise AB http://www.gotw.ca/publications/concurrency-ddj.htm http://erlang.org/ http://www.scala-lang.org/ http://labs.google.com/papers/mapreduce.html Read more 24. CouchDB, Slide Copyright 2008, Callista Enterprise AB Third reason Web friendly 1 2 3 25. CouchDB, Slide Copyright 2008, Callista Enterprise AB REST - HTTP used right 26. CouchDB, Slide Copyright 2008, Callista Enterprise AB REST based API Everything is a resource Every resource has a URL Every resource has the same uniform interface Links guides through states Stateless 27. CouchDB, Slide Copyright 2008, Callista Enterprise AB REST freebies API easily usable from any platform (AJAX, Java, Ruby, COBOL, Powerpoint...) Works with existing infrastructureCaches, proxies, firewalls Optimistic locking 28. CouchDB, Slide Copyright 2008, Callista Enterprise AB http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm http://www.infoq.com/articles/rest-introduction http://www.burtongroup.com/Guest/Aps/RestWorkshop.aspx Read more 29. CouchDB, Slide Copyright 2008, Callista Enterprise AB I'm getting sleepy,show me the goodies! 30. CouchDB, Slide Copyright 2008, Callista Enterprise AB Adding a to do var todoText = $("todoinput").value; this.db.save({text: todoText }); 31. CouchDB, Slide Copyright 2008, Callista Enterprise AB Adding a tag if(!todo.tags) { todo.tags = [tag]; } else{ todo.tags[todo.tags.length] = tag; } this.db.save(todo); 32. CouchDB, Slide Copyright 2008, Callista Enterprise AB The magic of save() this.save = function(doc, options) { if (doc._id == undefined) { xhr.open("POST", this.url); } else { xhr.open("PUT", this.url+ doc._id); } xhr.send(doc.toJSONString()); } 33. CouchDB, Slide Copyright 2008, Callista Enterprise AB Questions? ? 34. CouchDB, Slide Copyright 2008, Callista Enterprise AB Attributions WHY? -http://www.flickr.com/photos/teflon/128827389/ Deep mud -http://www.flickr.com/photos/hubmedia/133598031/ Banana -http://flickr.com/photos/tim_ellis/154225908/ Forget me not -http://flickr.com/photos/doblonaut/456339900/