I’ve been prototyping something called “
BaseCouch”, which acts as glue between CouchDB or TouchDB and Couchbase Server 2.0. If you’re not familiar: Couchbase 2.0 builds on the insanely fast/scalable Membase data store, and adds the b-tree and view engine from CouchDB for persistence and querying. It was initially going to be fully compatible with CouchDB, but during development some features (primarily
MVCC) were sacrificed to preserve Membase’s speed. Of course this means it isn’t compatible with CouchDB replication.
As an unofficial experiment I decided to see how hard it would be to write a little server that would pretend to be CouchDB but store its data in Couchbase. It wouldn’t need to support the entire REST API, just the parts that are called by the replicator; then a remote CouchDB (or TouchDB or PouchDB) could connect to it and push/pull data.
A month and ~2500 lines of
Go code later, I’ve got something that basically works. It supports push and pull replication, conflicts, and attachments. I wouldn’t call it “alpha” yet, but it’s far enough along that other people might be interested in trying it out or extending it.
I repeat that this is an experiment, not a Couchbase product or even an indication of future product features. I had management blessing to try this out, and it’s already sparked some interesting discussion. And it gave me a chance to learn the Couchbase API and try out Go :)
—Jens