lansarea unei baze de date distribuite orientate pe documente , face parte din categoria sistemelor NoSQL. Codurile sursă ale proiectului sub licența Apache 2.0.
, implementate în Apache CouchDB 3.0:
- A fost întărită securitatea în configurația implicită.
La pornire, trebuie să fie definit utilizatorul admin, fără de care serverul se va opri cu o eroare (rezolvă problemele de pornire a serverelor care din neatenție lăsau accesul fără autentificare). Accesările apelului „/_all_dbs” necesită acum drepturi de administrator, iar toate bazele de date sunt create implicit disponibile doar pentru utilizatorul admin (setările de acces pot fi modificate prin obiectul „_security”). Editarea obiectelor în baza de date _users este, implicit, interzisă; - posibilitatea de a crea baze de date segmentate (partiționate) definite de utilizator, care permit stabilirea propriilor reguli de distribuire a documentelor pe segmente (shard range). Modelele și indecșii Mango au fost îmbunătățiți cu optimizări speciale pentru bazele de date segmentate;
- modul de împărțire automată în cazul segmentării (sharding). În baza de date, este acum posibilă realocarea datelor pe segmente, având în vedere creșterea valorii q-factor, utilizată pentru determinarea nivelului de împărțire;
- sub-sistemul ken pentru indexarea automată în fundal și menținerea actualizată a indecșilor secundari (JavaScript, Mango, indecși pentru căutare text) fără a necesita lansarea explicită a operațiunilor de construire;
- Procesul smoosh a fost complet rescris, utilizat pentru împachetarea automată a bazelor de date;
- A fost propus un nou sub-sistem , utilizat pentru schimbarea priorității de intrare/ieșire pentru anumite operațiuni;
- A fost implementat un sistem de testare regresivă;
- A fost adăugată suportul oficial pentru platformele arm64v8 (aarch64) și ppc64le (ppc64el);
- A fost adăugat suportul pentru legătura cu motorul JavaScript SpiderMonkey 1.8.5 (ramura ESR a Firefox 60) cu suport îmbunătățit pentru ES5, ES6 și ES2016+;
- A fost inclus motorul de căutare bazat pe Lucene, care permite simplificarea considerabilă a desfășurării sistemului de căutare bazat pe CouchDB;
- A fost adăugat un backend pentru înregistrarea jurnalelor folosind systemd-journald;
- A fost adăugată setarea „[couchdb] single_node”, la instalarea căreia CouchDB va crea automat bazele de date sistem, dacă acestea lipsesc;
- A fost efectuată optimizarea performanței procesului couch_server;
- Instalatorul pentru platforma Windows a fost semnificativ îmbunătățit;
- Dimensiunea vizualizărilor este limitată la 2^28 (268435456) rezultate. Această limită poate fi configurată separat pentru vizualizări normale și segmentate prin opțiunile query_limit și partition_query_limit în secțiunea „[query_server_config]”;
- A fost eliminat un interfață HTTP separată pentru gestionarea nodurilor locale, care era rulată pe portul de rețea 5986, iar funcționalitatea sa este acum disponibilă prin intermediul interfeței comune de gestionare a clusterului;
- Dimensiunea maximă a documentului a fost redusă la 8 MB, ceea ce poate duce la probleme de replicare a datelor de pe serverele mai vechi după actualizarea la CouchDB 3.0. Pentru a crește limita, se poate utiliza setarea „[couchdb] max_document_size”;
- A fost realizată o curățare majoră a funcționalităților depășite, cum ar fi apelurile _replicator și _external, câmpurile disk_size și data_size, opțiunea delayed_commits;
- Pentru a lansa CouchDB, acum este necesar Erlang/OTP 20.3.8.11+, 21.2.3+ sau 22.0.5. Din punct de vedere teoretic, compatibilitatea este păstrată cu ramura Erlang/OTP 19, dar aceasta este acoperită de teste.
Să ne amintim că CouchDB stochează datele într-un format de listă ordonată și permite replicarea parțială a datelor între mai multe baze de date în modul „master-master” cu detectarea și rezolvarea simultană a conflictelor. Fiecare server păstrează propriul set local de date, sincronizat cu celelalte servere, care pot fi aduse în modul offline și replica periodic modificările. În particular, această capacitate face ca CouchDB să fie o soluție atractivă pentru organizarea sincronizării setărilor programelor între diferite computere. Soluțiile bazate pe CouchDB sunt implementate în companii precum BBC, Apple și CERN.
Interogările către CouchDB și indexarea datelor pot fi efectuate conform paradigmei , folosind pentru formarea logicii de selecție a datelor limbajul JavaScript. Nucleul sistemului este scris în limbajul Erlang, optimizat pentru a gestiona multiple interogări paralele în sisteme distribuite. Serverul de vizualizări este scris în limbajul C și se bazează pe motorul JavaScript al proiectului Mozilla. Accesul la baza de date se realizează prin protocolul HTTP utilizând RESTful JSON API, ceea ce permite accesul la date inclusiv din aplicațiile web care rulează în browser.
Ca unitate de stocare a datelor este un document, având un identificator unic, o versiune și conținând un set arbitrar de câmpuri denumite în format cheie/valoare. Pentru organizarea unui set de date pseudo-structurat din documente arbitrare (agregare și formare de selecții) se aplică conceptul de formare a vizualizărilor (view), pentru definirea cărora se utilizează limbajul JavaScript. De asemenea, în JavaScript pot fi definite funcții pentru verificarea corectitudinii datelor la adăugarea de documente noi în cadrul unei vizualizări definite.
Sursa: opennet.ro
