Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Router and rereducer for sharded CouchDB

branch: master
README
Pillow is a combined router and rereducer for CouchDB.

Dependencies (All of these are included in this git repository):
- webmachine
- ibrowse from jungerl
- etap (for testing)
- mochiweb (for webmachine)

Needless to say, it also depends indirectly on couchdb. There is no direct dependencies, but what use is a router
or rereducer for CouchDB without CouchDB. 

Roadmap:
The current goal is to add resharding to Pillow. 
X  Automatic generation of resharding validate functions *Done*
X  Automatic resharding using validate functions *Done*
X  CouchDB style config files *Done*
X  Resharding controlled through the config file. The [routing] section is the
   original routing config. [resharding] is the intended routing config. Call
   pillow_routing_table:reshard() to start replicating to the new nodes. Observe
   that the replication completed before executing pillow_routing_table:flip() to
   start using the new nodes. flip also updates the config. At this point, the old    servers may be torn down. *Done*
X  Monitoring UI that will show stats and general health of Pillow *Done*
X  End-to-end resharding through a single call. Pillow will wait until replication is
   complete before flipping to the new servers. Tearing down the old ones will still
   be manual. *Done*
X  control script
X  Daemonize Pillow
X  Control script handling resharding
X  Time to move from deployment script to configure/make install

No clear prioritized list right now, but these are interesting features that would be beneficial:
- Consistent hashing (http://en.wikipedia.org/wiki/Consistent_hashing) to increase control over resharding
- CouchDB view server for JavaScript rereducers
- Support Bulk document API
- Support CouchApp API
- Manage replication to mirror servers making Pillow automatically set up n-server master-master replication for each
  shard
Something went wrong with that request. Please try again.