Wednesday, July 9, 2008

CouchDB

RESTing with CouchDB

RDMS’s are very powerful software packages, yet they are notorious for not being able to scale out. You can throw a lot of expensive hardware at the problem to scale up, but fairly soon you’ll need to consider techniques like summary rollups, vertical and horizontal partitioning, data warehousing, and sharding to try and scale out (see this piece about the difference between scaling up and scaling out). I cut my teeth working on what was at the time one of the top 5 largest known RDMS’s in the world. One of my jobs was to pull information out of this behemoth system; I definitely experienced the pain of implementing some of these techniques. They sound straight forward but can be incredibly expensive to create and maintain. (I haven’t tried sharding, and it sounds like it might come the closest to being able to scale out the database bottleneck. It is a fascinating idea.)

The CouchDB documentation is dripping with drool-worthy keywords: erlang, shared nothing clustering, a RESTful and JSON interface, lock-free concurrency, and ad-hoc and schema-free querying running through a map-reduce system. This all adds up to what can awkwardly be described as a distributed document non-relational database system.

This triggers some serious geek lust (my wife really begs to differ, but I love her anyway).




I liked the last sentence.

No comments: