The next major release of CouchDB will include improvements to give performance that is three times faster than the current version, according to the Couchbase blog. Couchbase was formed earlier this year from a merger between CouchOne and Membase.
The improvements to the NoSQL Apache CouchDB database will appear in the Couchbase Single Server 2.0 distribution of CouchDB, and include performance improvements to disk write and indexing.
The changes to disk writes come courtesy of compression of Erlang terms in both database and view index files. In Couchbase, Erlang terms are used to represent information such as documents, btree nodes and headers. If you’re unfamiliar with it, this article has a good description of why Couchbase is keen on Erlang, the advantages it offers and how it’s used. By compressing such terms the new version of Couchbase Single Server will have much reduced I/O. The database engine will choose the best compression method based on the .ini configuration. The default choice is Google’s Snappy because it’s the fastest, but others including zlib’s deflate are also possible choices.
The second area of improvement is a move to asynchronous file writes. Many CouchDB operations consist of a series of file writes, which used to be synchronous. The new version lets processes send write requests to the file server process and get back a reply with details of where in the file the Erlang terms will be written to, so enabling the process that made the write request to continue with its CPU bound tasks in parallel with the I/O.
The Couchbase Single Server 2.0 distribution of CouchDB is currently in developer preview. Apache CouchDB is following a different fork and was recently upgraded to version 1.1 without the Couchbase changes. Couchbase is hoping that the Apache CouchDB developer community will include the changes in the Apache 1.2.0 release.