Changelog

0.4.0

BigCouch 0.4 was released on January 26, 2012. Its emphasis is on stability, performance & compatibility. Its API is roughly equivalent to that of Apache CouchDB 1.1.1.

Important Features, Changes & Fixes

BigCouch-specific Updates

Backported from CouchDB 1.1.1

Backported from CouchDB 1.1

Backported from CouchDB 1.0.3



0.3.1 (5 April 2011)



0.3.0

BigCouch is a highly available, fault-tolerant, clustered, mostly api-compliant version of Apache CouchDB. While it appears to the end-user as one CouchDB instance, it is in fact one or more nodes in an elastic cluster, acting in concert to store and retrieve documents, index and serve views, and serve CouchApps. BigCouch has been developed and is continually maintained by Cloudant.

Clusters behave according to concepts outlined in Amazon’s Dynamo paper, namely that each node can accept requests, data is placed on partitions based on a consistent hashing algorithm, and quorum protocols are for read/write operations.

These notes outline the major changes in this release. For details on install and build dependencies consult the main README file.

Building

Major subcomponents of BigCouch, Chttpd, Fabric, Mem3, and Rexi, are now separate projects, and are pulled into the $CLOUDANT_SRC/deps directory during configure. This allows us to maintain separate branches of these components and allows developers to control which branches of each subcomponent are in use by modifying the rebar.config file. Note that the links above point to the specific tags enumerated in the config file, which can be changed if a different version is desired. As each subcomponent under the deps directory is really a git project it can also be branched as needed for local development work. This enables these components to be developed independently. A troubleshooting wiki page contains notes on some of the more common problems.

Overview of Changes

Many of the changes are bug fixes, refactorings to simplify code, better error handling and reporting and documentation. These notes enumerate some of the highlights for each component, clicking on any section leads you to the detailed release notes for each component.

Fabric 1.2.1

Rexi 1.4.3

Rexi now keeps a circular buffer of errors it’s seen in memory. This is very useful for debugging when testing. Running a node with an interactive erlang shell, one can access these errors with a simple call:

rexi:get_errors().

How many are kept in memory can also be changed:

rexi:set_error_limit(N).

Mem3 1.1.1

Mem3 contains the major new enhancement in BigCouch 0.3, a new lightweight internal replicator, used for both the shards as well as the shard_db and nodes databases. We call it lightweight because it weighs in at a little less than 200 lines of code, counting blank lines. Some other changes:

Chttpd 1.2.1

Chttpd is closely aligned with CouchDB’s HTTP layer. Many of the fixes in the 1.0.2 release were incorporated in this release:

BigCouch and embedded CouchDB

The BigCouch project embeds CouchDB itself, as well as all the subcomponents and the external dependencies, ibrowse, mochiweb, and oauth. These dependencies have been upgraded to incorporate recent changes and fixes.