You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Ben Browning <be...@gmail.com> on 2009/02/20 01:35:42 UTC

CouchSpray - Thoughts?

So, I started thinking about partitioning with CouchDB and realized
that since views are just map/reduce, we can do some magic that's
harder if not impossible with other database systems. The idea in a
nutshell is to create a proxy that sits in front of multiple servers
and "sprays" the view queries to all servers, merging the results -
hence CouchSpray. This would give us storage and processing
scalability and could, with some extra logic, provide data redundancy
and failover.

I have a github repo that as of right now only contains a README file
with more details:

http://github.com/bbrowning/couchspray/tree/master

I'd like to open the discussion up to the community before starting on
the code. Does this sound useful? Is someone else already working on a
similar solution that I could contribute to instead of duplicating
effort? My initial idea would be to use mochiweb as the proxy in a
manner similar to fuzed
(http://github.com/KirinDave/fuzed/tree/master) and, license
permitting, potentially borrow some code from that project as well as
re-use some of Couch's existing API handling and map/reduce code.

Thanks,

- Ben

Re: CouchSpray - Thoughts?

Posted by Chris Anderson <jc...@apache.org>.
On Thu, Feb 19, 2009 at 5:10 PM, Ben Browning <be...@gmail.com> wrote:
> On Thu, Feb 19, 2009 at 7:48 PM, Chris Anderson <jc...@apache.org> wrote:
>> If you're interested in digging into this stuff, please join dev@. We
>> plan to include clustering in CouchDB, so if you're interested in
>> implementing it, we could use your help.
>
> I've been on dev@ since the beginning but until this point I've just
> been a lurker. I'm definitely up for helping. The only reason I didn't
> suggest helping with this in Couch directly is that will require much
> more input from the Couch devs and I didn't know how much internal
> code churn would be taking place before the 1.0 release.
>
> I'll start a separate thread over there to get things moving.
>

I'm in the middle of writing up an overview of what's been informally
discussed (tree of nodes model). I'll post that to dev tonight also.

Chris


-- 
Chris Anderson
http://jchris.mfdz.com

Re: CouchSpray - Thoughts?

Posted by Ben Browning <be...@gmail.com>.
On Thu, Feb 19, 2009 at 7:48 PM, Chris Anderson <jc...@apache.org> wrote:
> If you're interested in digging into this stuff, please join dev@. We
> plan to include clustering in CouchDB, so if you're interested in
> implementing it, we could use your help.

I've been on dev@ since the beginning but until this point I've just
been a lurker. I'm definitely up for helping. The only reason I didn't
suggest helping with this in Couch directly is that will require much
more input from the Couch devs and I didn't know how much internal
code churn would be taking place before the 1.0 release.

I'll start a separate thread over there to get things moving.

- Ben

Re: CouchSpray - Thoughts?

Posted by Chris Anderson <jc...@apache.org>.
On Thu, Feb 19, 2009 at 4:35 PM, Ben Browning <be...@gmail.com> wrote:
> So, I started thinking about partitioning with CouchDB and realized
> that since views are just map/reduce, we can do some magic that's
> harder if not impossible with other database systems. The idea in a
> nutshell is to create a proxy that sits in front of multiple servers
> and "sprays" the view queries to all servers, merging the results -
> hence CouchSpray. This would give us storage and processing
> scalability and could, with some extra logic, provide data redundancy
> and failover.

There are plans in CouchDB's future to take care of data partitioning,
as well as querying views from a cluster. Theoretically, it should be
pretty simple. There are a few small projects that have started down
the road of writing code in this area.

https://code.launchpad.net/~dreid/sectional/trunk

Sectional is an Erlang http proxy that implements consistent hashing
for docs. I'm not sure how it handles view queries.

There's also a project to provide partitioning around the basic
key/value PUT and GET store using Nginx:

http://github.com/dysinger/nginx/tree/nginx_upstream_hash

If you're interested in digging into this stuff, please join dev@. We
plan to include clustering in CouchDB, so if you're interested in
implementing it, we could use your help.

Chris

-- 
Chris Anderson
http://jchris.mfdz.com