I've been playing around with CouchDB for a few nights, inspired by the work of Stuart Langridge and others at Ubuntu, and also J Chris Anderson.

To break myself into the CouchDB world I started poking around at the capabilities, and mostly trying to not think of SQL-isms. Understanding map/reduce and getting your brain out of the SQL world is worth it, if for no other reason than to get a different perspective on data storage.

Unfortunately I decided, rather than write what I really thought would be interesting (a Thunderbird provider for couchdb, so that I can replicate my lightning calendar and contacts to my server, laptop and desktop, without using SyncKolab[1]), that it would be best if I started simple.

I chose to develop a pure CouchDB application, using the rather nice couchapp. I write web apps and this should be a gentle introduction, and fairly quick (which is what I wanted primarily). Really, How hard could it be? So I pulled down couchapp, did a bit of reading and built a VM to run couchdb 0.9, as several newer features are required than the current version in Debian stable. What I'd failed to realise at this point was that the “API” for pure couch applications are a bit in flux. After a few hours, over the course of a few evenings I've become somewhat frustrated, until I noticed a page entitled Formatting with Show and List on the CouchDB wiki tonight. A lot of the available code out there uses the new API, which explained why a hell of a lot made bugger all sense and why I'd almost started pulling down the couchdb 0.9 to have a butchers.

Now this isn't a slur on anyone except me. I was so blinkered after the joy of understanding why non-SQL databases do have a place in the universe that I failed to search the wiki correctly.

To give the whole post a sysadmin-style slant, during this I'd started noticing the CouchDB growing quickly. Now granted I was doing a lot of pushing of attachments, shows and lists, but the growth seemed rather unproportioned. After doing some tests of my own I hit the web and found that Joan Touzet has some interesting thoughts on the subject as well, which you should go and read now. Naturally without putting my tests into the real world don't take it as gospel, but if you're using couchdb you might want to ensure that you're doing things the right way, lest your sysadmin smite you with the +2 damage hammer of server resources.

I'm trying very hard not to paint a bad picture of CouchDB here. Genuinely I think it's a good project, and although it certainly has a lot of competition, it does seem to have a lot of mindshare. There are also good points to, for one, backups are easy.

[1] Not that I have a problem with SyncKolab, it's serving me well, and probably will continue to do so.