издание на разпределена документоцентричена база данни , която принадлежи към класа NoSQL системи. Изходните текстове на проекта се разпространява под лицензия Apache 2.0.
, реализирани в Apache CouchDB 3.0:
- Усилена е защитата в конфигурацията по подразбиране.
При стартиране сега е задължително да се определи потребителят admin, без който сървърът ще приключи работа с грешка (това решава проблемите с пускането на сървъри, при които по незабележка е оставен достъп без удостоверяване). За достъп до заявките " /_all_dbs" сега е необходима администраторска правосъобразност, а всички БД по подразбиране се създават достъпни само за потребителя admin (правата за достъп могат да бъдат променяни чрез обекта "_security"). По подразбиране е забранено редактирането на обектите в БД _users; - възможността за създаване на сегментирани (партиционирани) БД, определяни от потребителя, позволяващи да се определят собствени правила за разпределение на документите по сегменти (shard range). В представленията и индексите на Mango са добавени специални оптимизации за сегментираните БД;
- режим на автоматично разделяне при сегментиране (sharding). В БД сега е възможно преразпределение на данните по сегменти, вземайки предвид увеличаването на q-фактора, използван за определяне на нивото на разпределение;
- подсистема ken за автоматично фоново индексиране и поддържане в актуално състояние на вторичните индекси (JavaScript, Mango, индекси за текстово търсене) без явен старт на операциите за тяхното построяване;
- Процесът smoosh, използван за автоматично опаковане на БД, е изцяло пренаписан;
- Предложена е нова подсистема , използвана за изменение на приоритета на вход/изход за определени операции;
- Реализирана е система за регресивно тестване;
- Добавена е официална поддръжка за платформите arm64v8 (aarch64) и ppc64le (ppc64el);
- Добавена е поддръжка за свързване с JavaScript движка SpiderMonkey 1.8.5 (ESR клон на Firefox 60) с подобрена поддръжка за ES5, ES6 и ES2016+;
- Включен е търсещият двигател въз основа на Lucene, който значително опростява разгръщането на търсеща система на базата на CouchDB;
- Добавен е бекенд за управление на логовете с използване на systemd-journald;
- Добавена е настройка "[couchdb] single_node", при инсталация на която CouchDB автоматично създава системни БД, ако те липсват;
- Проведена оптимизация производителността на процеса couch_server;
- Значително подобрен инсталатор за платформата Windows;
- Размерът на показванията е ограничен до 2^28 (268435456) резултати. Това ограничение може да бъде настроено отделно за обикновени и сегментирани показвания с опции query_limit и partition_query_limit в секцията «[query_server_config]»;
- Премахнат е отделният HTTP интерфейс за управление на локалния възел, стартиращ на мрежовия порт 5986, функционалността на който сега е достъпна чрез общия интерфейс за управление на клъстера;
- Максималният размер на документа е намален до 8 MB, което може да доведе до проблеми с репликацията на данни от стари сървъри след обновяване до CouchDB 3.0. За увеличаване на лимита може да се използва настройката «[couchdb] max_document_size»;
- Извършена е голяма почистване на остарели функции, като повикванията _replicator и _external, полета disk_size и data_size, опцията delayed_commits;
- За стартиране на CouchDB сега е необходим Erlang/OTP 20.3.8.11+, 21.2.3+ или 22.0.5. Теоретично е запазена работоспособността с клон Erlang/OTP 19, но тя е покрыта от тестове.
Напомняме, че CouchDB съхранява данни във формат на подреден списък и позволява частична репликация на данни между няколко БД в режим «мастер-мастер» с едновременна идентификация и разрешаване на конфликтни ситуации. Всеки сървър съхранява своя локален набор от данни, синхронизиран с други сървъри, които могат да бъдат преведени в офлайн режим и периодично да репликират промени. В частност, тази възможност прави CouchDB привлекателно решение за организиране на синхронизация на настройки между различни компютри. Решенията на база CouchDB са внедрени в компании като BBC, Apple и CERN.
Запитванията към CouchDB и индексирането на данни могат да се извършват в съответствие с парадигмата , използвайки езика JavaScript за формиране на логиката за селекция на данни. Ядрото на системата е написано на езика Erlang, оптимизиран за обработка на множество паралелни запитвания в разпределени системи. View-сървърът е написан на език C и е базиран на JavaScript двигател от проекта Mozilla. Достъпът до БД се осъществява чрез протокол HTTP, използвайки RESTful JSON API, което позволява да се обръщате към данните и от изпълнявани уеб приложения в браузъра.
В качеството на единица за съхранение на данни служи документ с уникален идентификационен номер, версия и съдържащ случаен набор от именувани полета във формат ключ/стойност. За организиране на псевдо-структурирани набори от данни от произволни документи (агрегиране и генериране на заявки) се използва концепцията за форматиране на изгледи (view), за определянето на които се използва езикът JavaScript. На JavaScript също така може да се определят функции за проверка на коректността на данните при добавяне на нови документи в рамките на определен изглед.
Източник: opennet.ru
