izdanje distribuirane dokumentno orijentisane baze podataka , koja pripada klasi NoSQL sistema. Izvorični kod projekta pod licenco Apache 2.0.
, realizovani u Apache CouchDB 3.0:
- Ojačana je zaštita u podrazumevanoj konfiguraciji.
Pri pokretanju obavezno mora biti definisan korisnik admin, bez kojeg server neće raditi i završiće sa greškom (rešava probleme sa pokretanjem servera koji slučajno ostavljaju pristup bez autentifikacije). Za pristup pozivima „/_all_dbs“ sada su potrebna administratorska prava, a sve baze podataka po defaultu se kreiraju kao dostupne samo za korisnika admin (parametri pristupa mogu biti izmenjeni putem objekta „_security“). Podrazumevano je zabranjena izmena objekata u bazi podataka _users; - mogućnost kreiranja korisnikom definisanih segmentiranih baza podataka, što omogućava određivanje vlastitih pravila raspodele dokumenata po segmentima (shard range). U prikaze i indekse Mango dodate su posebne optimizacije za segmentirane baze podataka;
- režim automatskog deljenja prilikom segmentiranja. U bazi podataka sada je moguće redistribuiranje podataka po segmentima u skladu sa povećanjem vrednosti q-faktora, koji se koristi za određivanje nivoa deljenja;
- podstranica ken za automatsko pozadinsko indeksiranje i održavanje ažurnih sekundarnih indeksa (JavaScript, Mango, indeksi za pretragu teksta) bez eksplicitnog pokretanja operacija njihovog izgradnje;
- Potpuno je prepisan proces smoosh, koji se koristi za automatsko pakovanje baza podataka;
- Predložena je nova podstranica , koja se koristi za promenu prioriteta ulaza/izlaza za određene operacije;
- Implementiran je sistem regresivnog testiranja;
- Dodata je zvanična podrška za platforme arm64v8 (aarch64) i ppc64le (ppc64el);
- Dodata je podrška za povezivanje sa JavaScript motorom SpiderMonkey 1.8.5 (ESR-grana Firefox 60) sa poboljšanom podrškom za ES5, ES6 i ES2016+;
- Uključen je pretraživač na bazi Lucene, koji značajno pojednostavljuje implementaciju pretraživačkog sistema zasnovanog na CouchDB;
- Dodata je backend opcija za vođenje logova koristeći systemd-journald;
- Dodata je konfiguracija „[couchdb] single_node”, pri čemu CouchDB automatski stvara sistemske baze podataka ako one nedostaju;
- Optimizacija delovanja procesa couch_server je bila izvedena;
- Namestitveni program za platformo Windows je bil znatno izboljšan;
- Velikost prikazov je omejena na 2^28 (268435456) rezultatov. To omejitev je mogoče posebej nastaviti za običajne in deljene prikaze z uporabo možnosti query_limit in partition_query_limit v razdelku «[query_server_config]»;
- Ločen HTTP-vmesnik za upravljanje lokalnega vozlišča, ki je bil zagonjen na omrežnem portu 5986, je bil odstranjen, njegova funkcionalnost pa je zdaj dostopna preko skupnega vmesnika za upravljanje gruče;
- Največja velikost dokumenta je bila zmanjšana na 8 MB, kar lahko povzroči težave pri replikaciji podatkov s starejših strežnikov po nadgradnji na CouchDB 3.0. Za povečanje omejitve lahko uporabite nastavitev «[couchdb] max_document_size»;
- Izvedena je bila obsežna odstranitev zastarelih funkcionalnosti, kot so klici _replicator in _external, polja disk_size in data_size, možnost delayed_commits;
- Za zagon CouchDB je zdaj potreben Erlang/OTP 20.3.8.11+, 21.2.3+ ali 22.0.5. Teoretično je ohranjena združljivost z različico Erlang/OTP 19, vendar je ta preizkušena.
Spomnimo, da CouchDB shranjuje podatke v obliki urejenega seznama in omogoča delno replikacijo podatkov med več DB v načinu 'master-master' z istočasnim zaznavanjem in reševanjem konfliktov. Vsak strežnik hrani svoj lokalni niz podatkov, sinhroniziran z drugimi strežniki, ki jih je mogoče prevesti v offline način in občasno replikirati spremembe. Ta možnost CouchDB še posebej privlači za organizacijo sinhronizacije nastavitev programov med različnimi računalniki. Rešitve, ki temeljijo na CouchDB, so implementirane v podjetjih, kot so BBC, Apple in CERN.
Poizvedbe na CouchDB in indeksacija podatkov se lahko izvajajo v skladu s paradigmo , pri čemer se za oblikovanje logike izbire podatkov uporablja jezik JavaScript. Jedro sistema je napisano v jeziku Erlang, optimiziranem za ustvarjanje strežniških sistemov za več paralelnih poizvedb. View-strežnik je napisan v jeziku C in temelji na JavaScript-motornem projektu Mozilla. Dostop do DB poteka preko protokola HTTP z uporabo RESTful JSON API, kar omogoča dostop do podatkov tudi iz aplikacij, ki se izvajajo v brskalniku.
Kot podatkovna enota deluje dokument z edinstvenim identifikatorjem, različico in vsebuje poljubno število poimenovanih polj v formatu ključ/vrednost. Za organizacijo pseudo-strukturiranega sklada podatkov iz poljubnih dokumentov (agregacijo in oblikovanje vzorcev) se uporablja koncept oblikovanja predstavitev (view), pri čemer se uporablja jezik JavaScript. V JavaScriptu je prav tako mogoče definirati funkcije za preverjanje pravilnosti podatkov ob dodajanju novih dokumentov v okviru določene predstavitve.
Izvor: opennet.ru
