Christopher Lenz: CouchDB "Joins"

CouchDB - relax

I’ve been playing more and more with CouchDB lately. After putting together a Python library, I worked on a brand new included HTML/AJAX interface. Now I’m starting to dive into the Erlang code, which is my first serious encounter with Erlang. In particular, I started a branch that aims to replace the HTTP server underpinnings with Bob Ippolito´s MochiWeb library.

Despite all that activity (and past experience with the conceptually similar Lotus Notes), the correct approach to designing applications “the CouchDB way” isn’t always obvious to me at this point. Just today, there was a discussion on IRC how you’d go about modeling a simple blogging system with “post” and “comment” entities, where any blog post might have N comments. If you’d be using an SQL database, you’d obviously have two tables with foreign keys and you’d be using joins. (At least until you needed to add some denormalization.)

But what would the “obvious” approach in CouchDB look like?

Note: I’ve updated this post to clarify the role of view collation, and to stress that all three approaches are equally valid for different kinds of applications.

read on …

Comments are closed.