CouchDB

3,875 views
3,678 views

Published on

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

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

  • Be the first to like this

No Downloads
Views
Total views
3,875
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
79
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Först ska jag göra er klara på att vi är på väldigt tunn is
  • Syftet är inte att ersätta de traditionella databaserna utan att leta alterntiv för vissa typer av lösningar CouchDB är ännu alfa, om än under snabb utveckling No security No validation
  • (or Ruby, Perl, Python...)‏
  • Förklara ordentligt! Partitioning vid hög last och/elller mycket data För vissa applikationer är tillgänglighet av yttersta vikt
  • Eventual consistency kan vara okej när tillgänglighet är viktigare än konsitens, eller när gapet av inkonsistens inte kommer märkas (e.g. på en site)‏
  • Förutom att kunna distribueras så är Couch byggt för att naturligt failera. Andra exemple Amazon Dynam Google Filesystem Hadoop
  • Förutom att kunna distribueras så är Couch byggt för att naturligt failera. Andra exemple Amazon Dynam Google Filesystem Hadoop
  • Vanlig arkitektur med läs-slavar
  • Unreliable clusters Plenty of cheap servers rather than big expensive The number of nodes a replicate is stored on can vary based on the desired performance characteristics Many writes, few reads: less replicas Many read, less writes: more replicas
  • Moore's law har bytt metod
  • Ge exempel med uppdatering av vyer
  • REST Roy Fielding HTTP använt rätt Constraints Everything is a resource Every resource has a URL Client-server, stateless, cachable
  • CouchDB

    1. 1. Niklas Gustavsson [email_address] www.callistaenterprise.se
    2. 2. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Be warned
    3. 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. 4. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Forget about relational databases for a while
    5. 5. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Open source project started by Damien Katz http://couchdb.org Soon to be an Apache project
    6. 6. CouchDB, Slide © Copyright 2008, Callista Enterprise AB How does it work?
    7. 7. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Document oriented Documents are JSON {firstName:”Niklas”, lastName: “Gustavsson”} Schema less
    8. 8. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Views Pre-computed, indexed table Incrementally updated Written in JavaScript
    9. 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. 10. CouchDB, Slide © Copyright 2008, Callista Enterprise AB 1 2 3 So why should I care?
    11. 11. CouchDB, Slide © Copyright 2008, Callista Enterprise AB First reason Sometimes availability trumps consistency 1 2 3
    12. 12. CouchDB, Slide © Copyright 2008, Callista Enterprise AB CAP theorem - pick two: Consistency Availability Partitioning
    13. 13. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Eventual Consistency http://www.allthingsdistributed.com/2007/12/eventually_consistent.html
    14. 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 operation WRITES+READS > NODES : strong consistency http://www.allthingsdistributed.com/2007/12/eventually_consistent.html
    15. 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. 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. 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. 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. 19. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Second reason: Moore has changed tactic 1 2 3
    20. 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. 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. 22. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Used for computing views in CouchDB map/reduce
    23. 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. 24. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Third reason Web friendly 1 2 3
    25. 25. CouchDB, Slide © Copyright 2008, Callista Enterprise AB REST - “HTTP used right”
    26. 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. 27. CouchDB, Slide © Copyright 2008, Callista Enterprise AB REST freebies API easily usable from any platform (AJAX, Java, Ruby, COBOL, Powerpoint...)‏ Works with existing infrastructure Caches, proxies, firewalls… Optimistic locking
    28. 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. 29. CouchDB, Slide © Copyright 2008, Callista Enterprise AB I'm getting sleepy, show me the goodies!
    30. 30. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Adding a to do var todoText = $("todoinput").value; this.db.save({text: todoText });
    31. 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. 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. 33. CouchDB, Slide © Copyright 2008, Callista Enterprise AB Questions? ?
    34. 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/

    ×