2.0

The Apache CouchDB development community is proud to announce the immediate availability of version 2.0.

See also the official Apache Press Release.

CouchDB 2.0 is 99% API compatible with the 1.x series and most applications should continue to just work.

Cluster

CouchDB 2.0’s prime new feature is native support for clustering. It is based on the Dynamo paper and the work done at Cloudant and IBM in the BigCouch project which is now fully merged into Apache CouchDB project.

In short, clustering means that you can take a set of computers or virtual machines in the same data center and make them behave like a single, unified CouchDB instance. This has three benefits:

  1. fault tolerance: data is stored on more than one computer. A CouchDB 2.0 cluster obviates the need for custom setup of failover CouchDB instances.

  2. performance: data is split up and only a part lives on each node in a  cluster. That means each node only has a fraction of the work to do (like computing a view index) than a single node instance would have.

  3. capacity: with setups of multiple computers storing data, and with data being split among nodes, it is now possible to store amounts of data in CouchDB that exceed the capacity of a single computer many many times, setting CouchDB up for genuine Big Data solutions.

You have full control over all parameters of the cluster to suit every project’s needs.

Note: CouchDB 2.0 can also be configured as a “single node”-cluster, if none of the above benefits are relevant to you.

See the CouchDB 2.0 Architecture blog post for more information about the clustering technology.

Easy Queries

The second major feature is the declarative query language “Mango”. Mango is easier to use and faster in operation than the existing JavaScript-based Views. Of course, JavaScript Views continue to work.

See the Mango Query blog post for more information about Mango.

New Admin Interface

CouchDB 2.0 comes with a completely rewritten administration interface (nickname “Fauxton”), built in React.js. It sports a modern look, advanced features and a code-base that is easy to contribute to.

See Fauxton, the new CouchDB Dashboard for more info.

Performance

Both the replicator and compactor have undergone significant performance improvements that will speed up replication between CouchDB instances as well as PouchDB and Couchbase Lite instances.

Compaction can now be run at any time, even continuously, with an i/o-queueing system ensuring that live requests are not slowed down while compaction is running.

In addition: the compaction process is shorter, uses less CPU and RAM, produces smaller database files and freshly compacted databases are significantly faster to read from.

See Feature: Replication and Feature: Compaction for more info.

New Logo

CouchDB 2.0 comes with a brand new Logo, designed by Constantin Angheloui. The website, docs and other materials have been updated. See the CouchDB 2.0 branding guide for details.

More Details

For more details, please refer to our 2.0 blog post series.

Download

Apache CouchDB 2.0 downloads are available from the official website: http://couchdb.apache.org/#download.

Acknowledgements

The community would like to thank all contributors for their part in making this release, from the smallest bug report or patch to major contributions in code, design, or marketing, we couldn’t have done it without you!

The Road to CouchDB 2.0

This is the first in a series of blog posts introducing the Apache CouchDB 2.0 release.

C.o.u.c.h.D.B. is famously a backronym for “Cluster of unreliable commodity hardware”. However, the 1.x series of CouchDB has been a single-node database system. While it had been designed to be used in a cluster, and while there are clustering strategies and solutions on top of CouchDB 1.x, none are built-in.

In 2008 the startup Cloudant, founded by CouchDB contributor Adam Kocoloski together with his particle physicist colleagues Mike Miller and Alan Hoffman, started building a proprietary layer on top of CouchDB, using the same core technology, Erlang, turning CouchDB into a clustered database.

The Cloudant founders had built custom data storage systems during the tenure as particle physicists working with CERN’s Large Hadron Collider really big data sets (years before “big data” was thing).

Only one year before, in 2007, Amazon had published a paper about “Dynamo” that outlined Amazon’s solution to scale their database layer to their ever growing needs.

Building on the principles on the Dynamo paper, Cloudant’s clustering layer turned CouchDB into a genuine Big Data capable database.

Cloudant’s core business model is a managed database service using the CouchDB clustering technology they have developed. But their key value proposition is the management of that database, not the code itself, so in 2010 Cloudant made their clustering technology available as the open source project BigCouch.

And in summer 2013 they donated the BigCouch project to the Apache Software Foundation to be integrated into Apache CouchDB proper, fulfilling CouchDB’s original promise of supporting clusters of unreliable commodity hardware as Apache CouchDB 2.0.

In the past pretty exactly three years, the two now widely diverging codebases have been unified into one (with a few warts we are aiming to remove for 3.0 and beyond). The three milestones, roughly one per year, were:

  1. The Initial “Windsor” Merge: Named after the final of two hacking sessions of CouchDB core contributors and Cloudant employees Robert Newson and Paul Davis to bring the BigCouch source code into the Apache CouchDB repository and `master` branch of development.
  2. At the time of the branching off of BigCouch, CouchDB was at version 1.0.1. At the time of the Windsor merge, CouchDB was at version 1.4.0 and several substantial new features hadn’t been added to the codebase yet, so we had to do some catch up.
  3. With all the pieces in place, we had to make sure CouchDB 2.0 was a coherent project: Installation, documentation, all tests working, etc. So we spent the last year polishing off the final experience.

With 2.0 in release candidate phase, we already identified the upcoming areas of work and we are not going to delay releases again for this long.

Earlier this year, Cloudant began to upgrade their production clusters to the newly merged 2.0 codebases and on top of that smooth transition, we are now ready to release CouchDB 2.0 after a thorough release candidate process.


You can download the latest release candidate from http://couchdb.apache.org/release-candidate/2.0/. Files with -RC in their name a special release candidate tags, and the files with the git hash in their name are builds off of every commit to CouchDB master.

We are inviting the community to thoroughly test their applications with CouchDB 2.0 release candidates. See the testing and setup instructions for more details.