Home > Pillow

Pillow

Pillow is a project mainly written in Erlang, based on the Apache-2.0 license.

Router and rereducer for sharded CouchDB

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
Previous:realtime