In which language is CouchDB written

The new version of Apache CouchDB 3.0 has already been released and these are the changes

The start of the new version of Apache CouchDB 3.0, which is a distributed document-oriented database, belongs to the NoSQL system class. CouchDB is characterized by storing data in an ordered list format and enables partial data replication between multiple databases in master-master mode with simultaneous detection and resolution of conflict situations.

Each server stores its own local data set that is synchronized with other servers. You can go offline and regularly replicate the changes. This function makes CouchDB an especially attractive solution for organizing the synchronization of program settings between different computers.

CouchDB-based solutions have been implemented by companies such as BBC, Apple and CERN.

CouchDB queries and data indexing can be performed according to the MapReduce paradigm using JavaScript to generate the data sampling logic.

The core of the system is written in the Erlang language, which is optimized for the creation of distributed systems that serve many parallel requirements. The view server is written in C language and is based on the JavaScript engine of the Mozilla project.

The database is accessed via the HTTP protocol Use the RESTful JSON API, which also allows you to access data from web applications running in the browser.

A document with a unique identifier, version, and any set of named fields in key / value format acts as a data storage unit. P.

In order to organize a pseudo-structured data set from any documents (aggregation and sampling), the concept of creating views that are defined with JavaScript is used. JavaScript also allows you to define functions for reviewing data when you add new documents to a particular view.

What's new in Apache CouchDB 3.0

In this new version The advanced protection is highlighted in the default settings. When starting, the administrator should now be defined without which the server terminates its operation with an error.

In order to be able to access the calls to «/ _all_dbs», you must now have administrator rights By default, all databases are only created for the administrator (they can be changed via the "_security" object). In addition, it is forbidden by default to edit objects in the _users database.

Added the Ability to create segmented databases Custom (partitioned) so that you can define your own rules for distributing documents by segment (fragment area). Was added special optimizations for segmented databases to views and indexes.

We can find that too Implementation of the automatic separation during segmentation (fragmentation). It is now possible in the database to redistribute data by segment, taking into account the increase in the q-factor, which is used to determine the degree of disaggregation.

The subsystem ken has been added for automatic background indexing and keep secondary indexes up to date without explicitly initiating operations to create those indexes.

The maximum document size is reduced to 8 MB. This can cause data replication problems on older servers after upgrading to CouchDB 3.0. To increase the limit, you can use the setting "[couchdb] max_document_size".

From the other changes these are mentioned:

  • Performance optimization of the couch_server process.
  • Significantly improved installer for the Windows platform.
  • The Smoosh process used to automatically package databases has been completely rewritten.
  • A new I / O queuing subsystem is proposed that will change the I / O priority for certain operations.
  • Regression test system implemented.
  • Official support for the arm64v8 (aarch64) and ppc64le (ppc64el) platforms has been added.
  • Added support for linking to the SpiderMonkey 1.8.5 JavaScript engine (ESR branch of Firefox 60) with improved support for ES5, ES6, and ES2016 +.
  • The framework includes a Lucene-based Dreyfus search engine that can greatly simplify the implementation of a CouchDB-based search engine.
  • Added backend for logging in with systemd-journald.