On Nov 2, 2009, at 4:19 AM, Benoit Chesneau wrote:
On Sun, Nov 1, 2009 at 8:15 PM, Chris Anderson <[email protected]>
wrote:
On Sun, Nov 1, 2009 at 11:00 AM, Suhail Ahmed <[email protected]>
wrote:
Hi,
Any chance of seeing native erlang RPC protocol in 11 or soon
there after?
This may be part of the Cloudant clustering codebase. I can't speak
for them, but from what I've heard it does inter-node communication
in
a native Erlang way. You could probably use this interface as a
primary client interface as well, but what do I know? :)
Chris
cloudant is a clustered couchdb or a cluster system over couchdb ?
- benoƮt
Hi Benoit, we (Cloudant) are developing a clustered CouchDB; that is,
the ability to shard a database across a variable number of CouchDB
instances and have any of those instances handle any HTTP API
request. The instances communicate with each other using distributed
Erlang. The distribution system is Dynamo-flavored consistent hashing
(actually borrowing significantly from dynomite), and view results are
merged and re-reduced at query time. We're still working hard on a
few technical issues (in particular, generalizing single-instance
update sequences to a distributed notion of "this-happened-first" for
a proper _changes feed), but I think most of the CouchDB 0.10.0 API is
in pretty good shape. We'll be releasing the source code "soon"; I'm
afraid I can't be any more specific at the moment.
As far as whether the code has the makings of an Erlang remote client
library .... well, yes and no. It turns out the CouchDB CRUD
operations mostly "just work" when you open the DB using an RPC call
to the remote node. Something like
gen_server:call({couch_server, Node}, {open, DbName, Options})
or even
rpc:call(Node, couch_db, open, [DbName, Options])
Once you get a #db{} record filled with remote Pids, you can use it
just like you would a local one. Pretty nice, that. It means that
hovercraft and CouchDB need relatively few adjustments in order to run
in different VMs.
Cheers, Adam