релиз на разпределена документоориентирана база данни , която принадлежи към класа 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
