couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Kocoloski <>
Subject Re: roadmap 0.11/1.0
Date Mon, 02 Nov 2009 17:59:20 GMT
On Nov 2, 2009, at 4:19 AM, Benoit Chesneau wrote:

> On Sun, Nov 1, 2009 at 8:15 PM, Chris Anderson <>  
> wrote:
>> On Sun, Nov 1, 2009 at 11:00 AM, Suhail Ahmed <>  
>> 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

View raw message