Выпуск документоориентированной СУБД Apache CouchDB 3.0
2 марта 2020 года
Состоялся релиз распределённой документоориентированной базы данных 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 также можно определять функции для проверки корректности данных при добавлении новых документов в рамках определенного представления.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.