Выпуск дакументаарыентаванай СКБД Apache CouchDB 3.0
Адбыўся рэліз размеркаванай дакументаарыентаванай базы даных Apache CouchDB 3.0, якая адносіцца да класа NoSQL-сістэм. Зыходныя тэксты праекта распаўсюджваюцца пад ліцэнзіяй Apache 2.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 таксама можна вызначаць функцыі для праверкі карэктнасці дадзеных пры даданні новых дакументаў у рамках вызначанага падання.