If you've been following the NOSQL trend, I got to attend a great presentation on CouchDB Friday. It was quite an eye opener - and hit me as both positively and negatively.

NOSQL persistence stores have no column structure (schema-less) - a table is essentially a collection of documents, where each document is a hashtable, and every document's hashtable(s) can have completely different sets of keys. 

And this is a good thing?

I would use this, where I might use a database. Uh huh.

I've got a better idea. How about if I get a new brain first -because the one I've got isn't going to transition very smoothly to this approach.

Scott Davis

Scott Davis presented on CouchDB at our local Tech Fest.

Scott Davis is one of the best speakers in our industry - by a mile. You'll never be disappointed at one of his talks, guaranteed.

Scott promised he would challenge our understanding of a database, he even said this wasn't really a database, just used for the same thing as a database.

CouchDB Peculiarities and Similarities

Your interaction with CouchDB is in JSON - everything is an HTTP call - GET, PUT, POST, DELETE. Strange, huh?

Apparently, most if not all NOSQL variants make use of a Map and Reduce set of functions, (perhaps analagous to sql's From and Where). In that sense, this is no different than the rest.

Replication Out of the Box

This whole NOSQL thing is driven by different use cases than an SQL persistence store, one of the primary drivers behind this particular implementation of the concept is that replication comes out of the box.

CouchDB apparently came from Lotus Notes roots, not really sure how, perhaps just one of the original developers. 

Read Optimized, but Not Transactional

Like any technology, not every situation is perfect for NOSQL and CouchDB in particular. But when it's appropriate, it can be very appropriate.

Everything is stored in B-Trees, which makes it super-optimized for reads. Not everything is perfect for this type of configuration, there are plenty of use cases where faster inserts, for example, would require a different persistence store. 

Don't even think about using this for a banking application. The http (REST) protocol offers no concept of transactions.


There are plenty of other great choices in NOSQL land, this happens to be the Apache sponsored variant. Others include, but are not limited to:

Many big shops are using these tools already, including those such as Facebook, Twitter, and Digg. If it works on these sites, it removes a lot of doubt as to it's readiness for prime time.

Your Turn? My Turn?

This is a huge topic, way too big for a quick blog. Is it time to dig in and try it? CouchDB installs pretty easily, and calling it from HTTP means anyone can use it from any language. So maybe we just need to dig in and try it?

Wish me luck. Or, post your own results here.