couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Anderson <>
Subject Re: couch_gen_btree: pluggable storage / tree engines
Date Sun, 01 Feb 2009 06:03:05 GMT
On Sat, Jan 31, 2009 at 9:02 PM, Antony Blakey <> wrote:
> On 01/02/2009, at 2:26 PM, Paul Davis wrote:
>> Very cool ideas. We've been discussing erlang plugins. The
>> conversation has generally gotten as far as, "erlang plugins... yeah
>> we should have those."
> The mechanical side of building and deploying standalone erlang plugins that
> extend couch, including extending the configuration locations, is very
> simple, roughly equivalent to the classpath/load_path issues in e.g.
> java/ruby, modulo the issue of config-file writeback from within CouchDB.
> I've done and deployed this, although the appropriate 'hooks' aren't always
> available, which I guess is the essence of the OP plugin system.
> I've built external indexers using both this mechanism, and _external, as
> have others (GeoCouch, FTI). At one stage I was able to execute SQL queries
> against Couch data that was replicated into SQLite databases, but I decided
> not to maintain it. As long as your indexer architecture acknowledges the
> fundamental Couch model, and is prepared to do a full regeneration at any
> time, you can replicate the operational semantics of inbuilt views quite
> easily and with high performance (e.g. no per-request hit to Couch). There
> are a few edge cases, namely purging and db re-creation that need a small
> mod to the core to allow 100% correct plugins.

You keep talking about these modifications. We're anxious to see your
db-name patch, and we've already added seq id to external. DB uuids
are an interesting topic as well, but more interesting is code.

> My $0.02 ... I think the existing build system would benefit from a more
> modular approach.

It's pretty flexible already, maybe just some path globs for `make
plugins` is all it would take to get a plugins/helpers convention into
the build. We could add starting of apps (crypto, ibrowse, etc) to
default.ini. Then you'd probably have everything you need to add new
modules to the couch system.

Patches welcome. :)

Chris Anderson

View raw message