Выпуск дакументаарыентаванай СКБД 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, што дазваляе звяртацца да дадзеных у тым ліку з выкананых у браўзэры web-прыкладанняў.

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

Крыніца: opennet.ru

Дадаць каментар