Adventures into CouchDB and Rails

May 1, 2009

Computational Evangelism

Filed under: CouchDB — zdzolton @ 4:17 pm

Using CouchDB, or any relatively new open source software, requires much work and dedication.
Here I present my list of my favorite reasons to use CouchDB:

It’s Made of the Web

  • All database operations are through REST verbs—a browser or CURL are all you need to get started!
  • Etags mean documents and views are ready for caching
  • JSON representation of all data means no-brainer mapping to programming language constructs
  • JavaScript for all scripting duties means no context swaps

Map-Reduce Indexing

  • Map-reduce functions are side-effect free, and easy to reason about using imperative OR functional techniques
  • View indexes execute explicitly, whereas SQL gurus use voodoo to change queries, hoping that the query planner decides to use the correct index
  • Functional JavaScript programming techniques can succinctly express map-reduce logic
  • It’s the algorithm that powers Google!

The Meek Shall Inherit the Earth(‘s Data)

  • Schema-less database removes impediments to change
  • Flat key-value storage is easy to reason about
  • UUIDs, instead of sequence IDs, means any two databases can replicate documents
  • Seriously easy replication: Push/Pull == POST/GET
  • AJAX-only CouchApps + Easy replication == open source apps + viral databases

Of course, swapping your SQL brain out, for a Map-Reduce one, takes a bit of time. In my opinion, however, CouchDB’s feature set, maps better to the requirements for many up-and-coming websites.


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Blog at

%d bloggers like this: