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.
My $0.02 ... I think the existing build system would benefit from a
more modular approach because it would reify the coupling between, and
layering of, existing features e.g. the upcoming stats module would
consist of a capture core and an analysis/access plugin.
Antony Blakey
--------------------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787
Human beings, who are almost unique in having the ability to learn
from the experience of others, are also remarkable for their apparent
disinclination to do so.
-- Douglas Adams