09.08.2020

Выпуск документоориентированной СУБД Apache CouchDB 3.0


Состоялся релиз распределённой документоориентированной базы данных Apache CouchDB 3.0, относящейся к классу NoSQL-систем. Исходные тексты проекта распространяются под лицензией Apache 2.0.

Улучшения, реализованные в Apache CouchDB 3.0:

  • Произведено усиление защиты в конфигурации по умолчанию. При запуске теперь обязательно должен быть определён пользователь admin, без которого сервер завершит свою работу с ошибкой (позволяет решить проблемы с запуском серверов, по недосмотру оставляющих доступ без аутентификации). Для обращения к вызовам «/_all_dbs» теперь требуется наличие прав администратора, а все БД по умолчанию создаются доступными только для пользователя admin (параметры доступа могут быть изменены через объект «_security»). Запрещено по умолчанию редактирование объектов в БД _users;
  • Добавлена возможность создания определяемых пользователем сегментированных (партицированных) БД, дающих возможность определить собственные правила распределения документов по сегментам (shard range). В представления и индексы Mango добавлены специальные оптимизации для сегментированных БД;
  • Реализован режим автоматического разделения при сегментировании (sharding). В БД теперь возможно перераспределение данных по сегментам с учётом увеличения значения q-фактора, применяемого для определения уровня разбивки;
  • Добавлена подсистема ken для автоматического фонового индексирования и поддержания в актуальном виде вторичных индексов (JavaScript, Mango, индексы для поиска текста) без явного запуска операций их построения;
  • Полностью переписан процесс smoosh, применяемый для автоматической упаковки БД;
  • Предложена новая подсистема IO Queue, применяемая для изменения приоритета ввода/вывода для определённых операций;
  • Реализована система регрессивного тестирования;
  • Добавлена официальная поддержка платформ arm64v8 (aarch64) и ppc64le (ppc64el);
  • Добавлена поддержка связывания с JavaScript-движком SpiderMonkey 1.8.5 (ESR-ветка Firefox 60) с улучшенной поддержкой ES5, ES6 и ES2016+;
  • В состав включён поисковый движок Dreyfus на основе 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 МБ, что может привести к проблемам с репликацией данных со старых серверов после обновления до 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 хранит данные в формате упорядоченного списка и позволяет производить частичную репликацию данных между несколькими БД в режиме «мастер-мастер» с одновременным обнаружением и разрешением конфликтных ситуаций. Каждый сервер хранит свой локальный набор данных, синхронизированный с другими серверами, которые могут переводиться в offline-режим и периодически реплицировать изменения. В частности, данная возможность делает CouchDB привлекательным решением для организации синхронизации настроек программ между разными компьютерами. Решения на базе CouchDB внедрены в таких компаниях как BBC, Apple и CERN.

Запросы к CouchDB и индексация данных могут выполняться в соответствии с парадигмой MapReduce, используя для формирования логики выборки данных язык JavaScript. Ядро системы написано на языке Erlang, оптимизированного для создания обслуживающих множество параллельных запросов распределенных систем. View-сервер написан на языке Си и базируется на JavaScript-движке от проекта Mozilla. Доступ к БД производится при помощи протокола HTTP с использованием RESTful JSON API, что позволяет обращаться к данным в том числе из выполняемых в браузере web-приложений.

В качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Для организации псевдо-структурированного набора данных из произвольных документов (агрегирования и формирования выборок) применяется концепция формирования представлений (view), для определения которых используется язык JavaScript. На JavaScript также можно определять функции для проверки корректности данных при добавлении новых документов в рамках определенного представления.

Источник: https://www.opennet.ru/opennews/art.shtml?num=52463

Добавить комментарий