CouchDb, or, Language of the Month-time
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.
posted by Ken Kennedy at Feb 28th 2008 9:14 p.m.
Old comments (new comments via Disqus)
-
Jan commented 8 months, 3 weeks ago
And we capitalised the "b" in the meantime :)
Nice writeup, thanks for the flowers :-)
Jan
-- -
Noah Slater commented 8 months, 3 weeks ago
Hey, I don't know if you found but as well as my Debian CouchDB package I am also providing a python-couchdb package for your pleasure. ;) Glad to know things are working out for you.
-
Ken commented 8 months, 3 weeks ago
Jan: Ooops...noted! It's still showing up as "CouchDb" in some places, (title tag of http://couchdb.org, for example),but I expect updating everything will take awhile. That being said, I'll make sure the correct name in the future...I have a strong belief that using a project's name properly is the right thing to do, and respectful as well.
I've started trying out some ideas with my install already, and it's looking VERY nice.
Noah: Oh, I definitely have python-couchdb installed. Thanks for packaging it. That's some great stuff. Thanks for all your hard work with both packages.
Thanks to both of you for commenting!
