Новости и события » Hi-Tech » Выпуск документ-ориентированной СУБД Apache CouchDB 2.3.0

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

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

В новом выпуске устранена уязвимость (CVE-2018-17188), позволяющая удаленно поднять свои привилегии в системе (пользователь с правами администратора СУБД может получить доступ к окружению операционной системы с правами пользователя, под которым запускается CouchDB). Так как за последние годы это пятая уязвимость, связанная изменением конфигурации СУБД во время работы (ранее были исправлены CVE-2018-8007, CVE-2018-11769, CVE-2017-12636и 2017-12635), разработчики Apache CouchDB приняли решение полностью запретить изменение ключевых настроек СУБД через API. Настройки теперь могут быть изменены только при наличии shell-доступа к серверу.

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

  • Добавлена поддержка кластерной очистки (clustered purge), позволяющая полностью удалить из БД любой документ (удаленный или не удаленный) с любым числом ревизий и конфликтов;
  • Реализована новая настройка (seedlist), позволяющая администратору задать начальный список узлов, к которым текущий узел должен обратиться на этапе запуска. Узды из данного списка, в случае доступности, автоматически будут добавлены в БД _nodes и использованы для репликации внутренних системных БД;
  • Добавлена возможность репликации с соединениям к пирам только с использованием IPv6;
  • Возвращено старое поведение CouchDB 1.x, связанное с указанием UUID сервера/кластера в ответе на запрос "GET /";

  • В реализации операции пакетного выполнения запроса (_bulk_get) появилась поддержка типов контента multipart/mixed и multipart/related;

  • Прекращено жесткое задание размера буфера TCP для приема данных (ранее устанавливался в 256KB), что позволяет операционной системе динамически корректировать размер буфера. Данное изменение позволило существенно поднять производительность передачи по сети больших вложений;
  • Упрощено включение SSL в файле конфигурации, теперь достаточно создать секцию "[ssl]" с опцией "enable = true";
  • Все скрипты, написанные на языке Python, включая couchup и dev/run, для всего выполнения теперь требуют наличия Python 3.x;

  • Обеспечена совместимость с Erlang 21.x.
  • Встраиваемая версия инструментария rebar, используемого для сборки CouchDB, обновлена до последней версии ветки rebar2, что улучшило поддержку сборки на платформах, отличных от x86.

Напомним, что CouchDB хранит данные в формате упорядоченного списка и позволяет производить частичную репликацию данных между несколькими БД в режиме "мастер-мастер" с одновременным обнаружением и разрешением конфликтных ситуаций. Каждый сервер хранит свой локальный набор данных, синхронизированный с другими серверами, которые могут переводиться в offline-режим и периодически реплицировать изменения. В частности, данная возможность делает CouchDB привлекательным решением для организации синхронизации настроек программ между разными компьютерами. Решения на базе CouchDB внедрены в таких компаниях как BBC, Apple и CERN.

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

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

Apple


Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх