Випуск документоорієнтованої СУБД 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+;
  • До складу включено пошуковий двигун Дрейфус на основі 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, що дозволяє звертатися до даних у тому числі з веб-додатків, що виконуються в браузері.

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

Джерело: opennet.ru

Додати коментар або відгук