The Road to CouchDB 3.0: Prepare for 4.0

This is a post in a series about the Apache CouchDB 3.0 release. Check out the other posts in this series.

In early 2019, the IBM/Cloudant team proposed a major change to CouchDB: replace the storage and clustering subsystems with FoundationDB.

The reasoning is straightforward: how much effort would it be to bring the existing underpinnings into the 2020s and beyond? Are there alternative options? Can we use something that exists already?

After about seven months of diligent research, design and planning, we concluded that it would not only be feasible, but also beneficial to CouchDB to make the move to FoundationDB.

We have a lot more to say about this in the future, but if you want to follow along at home, check out the RFCs where we discuss the various technical details.

One of the consequences for moving foundations (pun!), is that the new one is built on different tradeoffs than the old one, which has served us very well so far. This in turn leads to certain limits that we’ll have to impose on certain operations in CouchDB 4.0 and beyond.

Since it is beneficial to keep to those limits already in 3.0, and to make the transition to 4.0 easier in the future, we have introduced, or reduced limits to certain things in CouchDB in line with the limits we believe that CouchDB 4.0 will have.

If you need to go beyond those limits, they are configurable for all of CouchDB 3.x, but won’t be configurable at all in 4.x.

For now, the only limit we’ve added is max_document_size, it drops from 4GB, which was a theoretical limit to begin with, to 8MB, which is much more reasonable in terms of CouchDB performance.

The Road to CouchDB 3.0: Easy Fulltext Search

This is a post in a series about the Apache CouchDB 3.0 release. Check out the other posts in this series.

As long as CouchDB has existed, Robert Newson has created external Lucene indexing for it:

  • CouchDB 1.x had couchdb-lucene.
  • CouchDB 2.x has Clouseau & Dreyfus, highly efficient and clustered Lucene search, albeit awkward to install.
  • CouchDB 3.x bundles Dreyfus and makes Clouseau very easy to install.

It has never been easier to add fulltext indexing to CouchDB than with CouchDB 3.0. The very short installation instructions are proof of that.
Once set up, the whole power of Lucene queries are available across all your CouchDB databases.