So I’m grumbling a little bit, but not really. I’ve been watching this really interesting distributed document storage technology called CouchDb for several months now. I’ve wanted to start playing around with it, but I was taking the lazy route, and waiting for it to show up in my Debian repository; I remembered to check today, and boom! There it is. Joy.
Time for the grumble…CouchDb is built in friggin’ Erlang: a soft realtime, declarative, functional language designed for distributed systems and originally written by the telecom company Ericsson for telco-switches. Erlang was open sourced back in the late ’90s…but even geeks think this language is geeky. So *grumble*…but at the same time, a little woohoo! I haven’t really been on a language kick in quite awhile, so it could be quite fun. I don’t really need to learn Erlang to program against the db, of course; but why the heck not, eh?
And CouchDb itself looks amazing. It’s designed for distributed operation (with deterministic, versioned resolution in the case of merge conflicts), has clean atomic updates, can version indefinitely (ie, keep all changes to a document until you decide to compact the db and remove old versions), and has a adhoc schema model (add fields to a document on the fly). The thought of a completely custom contacts, notes, and todo db on a next-generation phone that automatically cleanly syncs to the cloud with proper merging, etc. makes me very happy.
Document databases like CouchDb make a lot of sense for semi-structured data. Don’t misunderstand…I like relational databases; in fact, I’m a professional DBA in my day job, and I have done database-backed web development since the mid-90s. But as tools like CouchDb, Amazon’s SimpleDB, and Thrudb (a similar service built on Facebook’s Thrift framework) continue to evolve, they allow us to explore other options more suitable to the document-db style, while maintaining the transactional reliability and robustness associated with RDBMSs. Lotus Notes was actually a great ahead of it’s time
example of this technology, but suffered (IMO) primarily from lack of F/OSSness; this prevented it from gaining hard-core geek mindshare during the 90s and early 00s. As GNU/Linux and company gained traction, partial free software re-implementations were developed instead (hackers scratched their own itches). And now we’ve got CouchDb, and Notes runs in Eclipse. Geeks really do rule the world! *grin*
So I look forward to playing with CouchDb and exploring some new options for data storage. If I hit anything uber-exciting, I’ll make sure you all know first. *grin*
UPDATE: This thing is the freakin’ bomb. The Python CouchDb bindings are excellent, but they’ve got Hello World
examples for about ten languages off of the main wiki page. I already have a use for this thing, too. Criminy! Too cool.