Выпуск документоориентированной СУБД 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 также можно определять функции для проверки корректности данных при добавлении новых документов в рамках определенного представления.
Источник: http://www.opennet.ru/opennews/art.shtml? num=52463
© OpenNet