Release of the document-oriented DBMS Apache CouchDB 3.0

Took place release of a distributed document-oriented database Apache CouchDB 3.0, related to the NoSQL systems class. The project's source texts is distributed under the Apache 2.0 license.

Improvements, implemented in Apache CouchDB 3.0:

  • Enhanced security has been implemented in the default configuration.
    At startup, a user named admin must now be defined; otherwise, the server will terminate with an error (this resolves issues with server startups, inadvertently allowing access without authentication). Access to calls to "\/ _all_dbs" now requires admin rights, and all databases are by default created accessible only to the admin user (access rights can be modified through the "_security" object). Editing objects in the _users database is prohibited by default;
  • Added the ability to create user-defined segmented (partitioned) databases, allowing for the definition of custom rules for document distribution across segments (shard range). Special optimizations for segmented databases have been added to Mango views and indexes;
  • Implemented automatic splitting mode during segmentation (sharding). Data redistribution across segments is now possible, taking into account an increasing q-factor value used to determine the level of splitting;
  • Added the ken subsystem for automatic background indexing and keeping secondary indexes (JavaScript, Mango, text search indexes) up to date without explicit triggering of their building operations;
  • The smoosh process, used for automatic database packing, has been completely rewritten;
  • A new subsystem has been introduced IO Queue, used to change the priority of input/output for certain operations;
  • A regression testing system has been implemented;
  • Official support for arm64v8 (aarch64) and ppc64le (ppc64el) platforms has been added;
  • Support for binding to the JavaScript engine SpiderMonkey 1.8.5 (ESR branch of Firefox 60) with improved support for ES5, ES6, and ES2016+ has been added;
  • Included is the search engine Dreyfus based on Lucene, which simplifies the deployment of a search system based on CouchDB;
  • A logging backend using systemd-journald has been added;
  • The setting "[couchdb] single_node" has been added, which automatically creates system databases if they do not exist when installing CouchDB;
  • Performance optimization of the couch_server process has been carried out;
  • The installer for the Windows platform has been significantly improved;
  • The size of views is limited to 2^28 (268435456) results. This limit can be separately configured for regular and segmented views using the query_limit and partition_query_limit options in the "[query_server_config]" section;
  • The separate HTTP management interface for the local node running on network port 5986 has been removed, and its functionality is now accessible through the common cluster management interface;
  • The maximum document size has been reduced to 8 MB, which may lead to data replication issues from older servers after upgrading to CouchDB 3.0. To increase this limit, the "[couchdb] max_document_size" setting can be used;
  • A major cleanup of outdated features has been conducted, such as calls to _replicator and _external, fields disk_size and data_size, and the delayed_commits option;
  • CouchDB now requires Erlang/OTP 20.3.8.11+, 21.2.3+, or 22.0.5 to run. Theoretically, compatibility with the Erlang/OTP 19 branch has been maintained, but it is covered by tests.

It is worth noting that CouchDB stores data in an ordered list format and allows for partial data replication between multiple databases in "master-master" mode with simultaneous conflict detection and resolution. Each server keeps its local dataset synchronized with other servers, which can switch to offline mode and periodically replicate changes. This feature makes CouchDB an attractive solution for synchronizing program settings across different computers. CouchDB-based solutions are implemented in companies such as BBC, Apple, and CERN.

Requests to CouchDB and data indexing can be executed according to the paradigm MapReduce, using JavaScript as the data selection logic language. The system core is written in Erlang, optimized for servicing numerous parallel requests in distributed systems. The view server is written in C and is based on the JavaScript engine from the Mozilla project. Access to the DB is provided via the HTTP protocol using RESTful JSON API, which allows data access also from web applications executed in the browser.

A data storage unit is a document that has a unique identifier, a version, and contains an arbitrary set of named fields in a key/value format. To organize a pseudo-structured dataset from arbitrary documents (for aggregation and query formation), the concept of views is employed, which is defined using the JavaScript language. JavaScript can also be used to define functions for validating data when new documents are added within a specific view.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster