CouchDB

Found this after posting about versioned documents in databases.  While the earlier post shows it’s doable, it doesn’t seem optimal.  CouchDB seems like it’s looking for the same solution.

First off, it’s written in erlang.  That’s not a showstopper, but it’s odd.  Maybe it’s something erlang can do that nothing else can.  Still, an odd requirement that might have support issues, particularly in hosted environments.

Second, it queries using javascript.  That’s odd too.  I imagine it’s to be able to eval(), and wonder, does it use Rhino?  Does it require a JVM?  I could find this out, but haven’t looked yet.

It uses some sort of distrubuted version control, but I don’t know what.  That’s smart, but could cause headaches for “control” such as publishing or other kinds of workflow (like bug resolution or requirements change process).

The basic idea is what I’ve felt was best all along, a versioned, semi-semantic document.  But CouchDB treats a file as a hash of name/value pairs, and includes lists [what about enumerations?].  I don’t know how it handles attribute-based searching (well, I do, it uses map-reduce) or versioned searches.  Maybe that’s something erlang does well.

Anyway, I’m excited to learn more about it, but just a little bit skeptical that it might be a “pure” solution, meaning a self-contained app, not really a database at all.  I’m thinking like Naked Objects, an interesting concept, but unusable unless you their UI and everything.

The first link is about a PHP OOP API (bingo!) for using couchdb, so maybe I’ll get started by taking a look at that.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s