2.3.0

Dear community,

Apache CouchDB 2.3.0 has been released and is available for download.

Update 2018-12-17: This Update includes a fix for CVE-2018-17188.

Apache CouchDB™ lets you access your data where you need it. The Couch Replication Protocol is implemented in a variety of projects and products that span every imaginable computing environment from globally distributed server-clusters, over mobile phones to web browsers.

Store your data safely, on your own servers, or with any leading cloud provider. Your web- and native applications love CouchDB, because it speaks JSON natively and supports binary data for all your data storage needs.

The Couch Replication Protocol lets your data flow seamlessly between server clusters to mobile phones and web browsers, enabling a compelling offline-first user-experience while maintaining high performance and strong reliability. CouchDB comes with a developer-friendly query language, and optionally MapReduce for simple, efficient, and comprehensive data retrieval.

https://couchdb.apache.org/#download

Pre-built packages for Windows, macOS, Debian/Ubuntu and RHEL/CentOS are available.

CouchDB 2.3.0 is a feature release, and was originally published on 2018-12-06.

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!

See the official release notes document for an exhaustive list of all changes:

http://docs.couchdb.org/en/stable/whatsnew/2.3.html

Release Notes highlights:

  • (Multiple) Clustered purge is now available. This feature restores the CouchDB 1.x ability to completely remove any record of a document from a database. Conditions apply; to use the feature safely, and for full details, read the complete Clustered Purge documentation.

  • A new config setting is available, allowing an administrator to configure an initial list of nodes that should be contacted when a node boots up. Nodes in the seedlist that are successfully reached will be added to that node’s _nodes database automatically, triggering a distributed Erlang connection and replication of the internal system databases to the new node. This can be used instead of manual config or the cluster setup wizard to bootstrap a cluster. The progress of the initial seeding of new nodes is exposed at the GET /_up endpoint.

  • Replication supports ipv6-only peers.

  • The UUID of the server/cluster is once again exposed in the GET / response. This was a regression from CouchDB 1.x.

  • Stats counts between job runs of the replicator are no longer reset on job restart.

  • CouchDB’s _bulk_get implementation now supports the multipart/mixed and multipart/related content types if requested, extending compatibility with third-party replication clients.

  • CouchDB no longer forces the TCP receive buffer to a fixed size of 256KB, allowing the operating system to dynamically adjust the buffer size. This can lead to significantly improved network performance when transferring large attachments.

  • To improve security, there have been major changes in the configuration of query servers, SSL support, and HTTP global handlers. See the release notes for important upgrade information.

  • All python scripts shipped with CouchDB, including couchup and the dev/run development cluster script, now specify and require Python 3.x.

  • CouchDB is now compatible with Erlang 21.x.

  • The embedded version of rebar used to build CouchDB has been updated to the last version of rebar2 available. This assists in building on non-x86 platforms.

  • Plus many other performance improvements, bugfixes, and UI improvements!

On behalf of the CouchDB PMC,
Joan Touzet

2.2

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

Version 2.2 incorporates 8 months of improvements to the already successful 2.1 release series.

For CouchDB < 2.0 users, the main improvements in 2.0 still apply for 2.2:

  • 99% API compatibility- native clustering for increased performance, data redundancy, and ability to scale
  • Easy querying with Mango
  • New Admin interface- Major performance improvements around compaction and replication.

Most importantly, CouchDB 2.0 finally fulfils CouchDB’s original vision of a distributed and clustered document database.

The 2018 Annual CouchDB User Survey has revealed that as of July 2019 98% of our user-base have adopted CouchDB 2.x with about 50% running CouchDB 1.x at the same time.

Note, as previously announced on the developer mailing list, there will be no further releases of CouchDB 1.x. CouchDB 1.x is a fine piece of software and folks with existing installations should be fine continuing to use it, just beware that there won’t be any further bug fixes or security fixes coming. This reflects project reality insofar as that the 1.x line has only received minimal maintenance in the past few years with the majority of the effort going to 2.x.

2.2 Highlights

See the official release notes document for an exhaustive list of all changes.

  • New pluggable storage engine framework. This internal refactor makes it possible for CouchDB to use different backends for storing the base database file itself. The refactor included a full migration of the existing “legacy” storage engine into the new framework
  • The minimum supported version of Erlang is now R17, not 16B03. Support for Erlang 21 is still ongoing and will be provided in a future release.
  • The CouchDB replicator can now make use of the /_session endpoint rather than relying entirely on HTTP basic authentication headers. This can greatly improve replication performance.
  • CouchDB no longer fails to complete replicating databases with large attachments. The fix for this issue included several related changes (GitHub issue 745 et.al.)
  • Multiple queries can now be made at the POST /{db}/_all_docs/queries, POST /{db}/_design_docs/queries and POST /{db}/_local_docs/queries endpoints. Also, a new endpoint POST /{db}/_design/{ddoc}/_view/{view}/queries
  • The least recently used (LRU) cache of databases is now only updated on database write, not read. This has lead to significant performance enhancements on very busy clusters.
  • The revision stemming algorithm was optimized down from O(N^2) to O(N) via a depth-first search approach, and then further improved by calling the stemming operation only when necessary.
  • CouchDB now checks for request authorization only once per each database request, improving the performance of any request that requires authorization.
  • If a user specifies a value for use_index that is not valid for the selector (does not meet coverage requirements or proper sort fields), attempt to fall back to a valid index or full DB scan rather than returning a 400.
  • CouchDB now includes a new builtin reduce function_approx_count_distinct, that uses a HyperLogLog algorithm to estimate the number of distinct keys in the view index. The precision is currently fixed to 2^11 observables, and therefore uses approximately 1.5KB of memory.
  • Much improved documentation. Highlights include:

    • A complete rewrite of the sharding documentation.
    • Developer installation notes (INSTALL.*.rst)
    • Much of the content of the original CouchDB Wiki has been imported into the official docs. (The old CouchDB Wiki is in the process of being deprecated.)

     

  • Much improved Fauxton functionality. Highlights include:

    • Search support in the code editor
    • Support for relative Fauxton URLs (i.e., not always at /_utils)
    • Replication setup enhancements for various authentication mechanisms
    • Fixes for IE10, IE11, and Edge (we hope…)
    • Resolving conflicts of design documents is now allowed

     

  • Many more smaller bug fixes and performance improvements, as well as more features and refinements. See the release notes for a full list.