Пускането на документно-ориентирана СУБД 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 MB, което може да доведе до проблеми с репликацията на данни от старите сървъри след обновлението до 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 съхранява данни в подреден списък и позволява частична репликация на данни между различни БД в режим «мастер-мастер» с едновременно откриване и разрешаване на конфликтни ситуации. Всеки сървър съхранява свой локален набор от данни, синхронизиран с други сървъри, които могат да бъдат преведени в офлайн режим и периодично да репликират промените. По-специално, тази функция прави CouchDB привлекателно решение за синхронизиране на настройки на софтуер между различни компютри. Решения, основани на CouchDB, се внедряват в компании като BBC, Apple и CERN.

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

Единицата за съхранение на данни е документ, който има уникален идентификатор, версия и съдържа произволен набор от именувани полета във формат ключ/стойност. За организиране на псевдо-структуриран набор от данни от произволни документи (агрегиране и формиране на изборки) се прилага концепцията за формиране на представления (view), за което се използва JavaScript. Също така в JavaScript могат да се определят функции за проверка на коректността на данните при добавяне на нови документи в рамките на определено представление.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster