My clients at Couchbase checked in.
- After multiple delays, Couchbase 2.0 is well into beta, with general availability being delayed by the holiday season as much as anything else.
- Couchbase (the company) now has >350 subscription customers, almost all for Couchbase (the product) — which is to say for what was known as Membase, which is basically a persistent version of Memcached.
- There also are many users of open source Couchbase, most famously LinkedIn.
- Orbitz is a much-mentioned flagship paying Couchbase customer.
- Couchbase customers mainly seem to be replacing a caching layer, Memcached or otherwise.
- Couchbase headcount is just under 100.
The big changes in Couchbase 2.0 versus the previous (1.8.x) version are:
- JSON storage, including secondary indexes.
- Multi-data-center replication.
- A back-end change from SQLite to a heavily forked version of CouchDB, called Couchstore.
Couchbase 2.0 is upwards-compatible with prior versions of Couchbase (and hence with Memcached), but not with CouchDB.
Technology notes on Couchbase 2.0 include:
- Couchbase’s query interface is via http.
- Couchbase’s indexing strategy is append-only b-trees.
- Couchbase doesn’t index data until it’s persisted to disk.
- Hence, it might take a few 100 milliseconds between the time data arrives and when it shows up in query results. (Of course, you can do a key-value retrieval as soon as the data arrives in RAM.)
- Couchbase has incremental MapReduce.
- Couchbase’s replication is active-active/master-master.
- Couchbase does not offer wide-area data partitioning. Hence, Couchbase is not yet suitable for certain compliance-driven use cases.
- One difference between Couchbase and CouchDB is that indexes are per-node, not per-database.
- Otherwise, that fork of CouchDB had a lot to do with Couchbase deciding that Erlang is too hard to optimize, and hence moving to C/C++ instead. Currently still in Erlang and “strong candidates” to also move to C/C++ are distributed view indexes (but not the single-node b-trees).
Couchbase has built up its customer base by offering just a key-value store — GET, SET, INCREMENT, DECREMENT and the like. In that world, Couchbase makes credible claims about performance, reliability, and manageability — fast, scalable, high-concurrency, always-on, etc. Specific reasons Couchbase offers to believe in its key-value/whole-document performance include:
- Active cache management (not just memory-mapping).
- Fine-grained locking.
- A benchmark it bought showing that, in this use case, it far outshines MongoDB or Cassandra.
If you want a key-value store, Couchbase is obviously a/the market-leading alternative.
I gather from Couchbase that Basho/Riak is a solid key-value competitor, perhaps more so than in the past.
What remains to be seen is how Couchbase will fare as a document store. In particular, any update to a Couchbase document replaces the whole document, which is not necessarily the case in other document stores. Similarly, Couchbase’s secondary indexes are newer than some competitors’. And so Couchbase still needs to prove its document-store mettle, in reading and writing alike.