objavljivanje distribuirane dokumentno orijentirane baze podataka , koja pripada klasi NoSQL sustava. Izvorni kod projekta pod licencom Apache 2.0.
, implementiran u Apache CouchDB 3.0:
- Povećana je zaštita u zadanom konfiguraciji.
Pri pokretanju sada je obavezno definirati korisnika admin, bez kojeg poslužitelj završava s greškom (rješava probleme s pokretanjem poslužitelja koji zaboravljaju ostaviti pristup bez autentifikacije). Za pristup pozivima „/_all_dbs” sada su potrebna administratorska prava, a sve baze podataka se po defaultu stvaraju dostupnima samo korisniku admin (pristupni parametri mogu se promijeniti putem objekta „_security”). Preuređivanje objekata u bazi podataka _users je po defaultu zabranjeno; - mogućnost stvaranja korisnički definiranih segmentiranih (particioniranih) baza podataka, koje omogućuju definiranje vlastitih pravila raspodjele dokumenata po segmentima (shard range). U prikaze i indekse Mango dodane su posebne optimizacije za segmentirane baze podataka;
- režim automatskog dijeljenja pri segmentiranju (sharding). U bazi podataka sada je moguće redistribuiranje podataka po segmentima uzimajući u obzir povećanu vrijednost q-faktora, koji se koristi za određivanje razine dijeljenja;
- podizvođač ken za automatsko pozadinsko indeksiranje i održavanje sekundarnih indeksa (JavaScript, Mango, indeksi za pretraživanje teksta) bez eksplicitnog pokretanja operacija izgradnje;
- Potpuno je prepisan proces smoosh, koji se koristi za automatsko pakiranje baza podataka;
- Predložena je nova podjela , koja se koristi za promjenu prioriteta ulaza/izlaza za određene operacije;
- Implementiran je sustav regresivnog testiranja;
- Dodana je službena podrška za platforme arm64v8 (aarch64) i ppc64le (ppc64el);
- Dodana je podrška za povezivanje s JavaScript motorom SpiderMonkey 1.8.5 (ESR-grana Firefox 60) s poboljšanom podrškom za ES5, ES6 i ES2016+;
- Uključen je pretraživački motor na temelju Lucene, koji značajno pojednostavljuje implementaciju pretraživačkog sustava na temelju CouchDB;
- Dodana je pozadina za vođenje evidencije koristeći systemd-journald;
- Dodana je konfiguracija „[couchdb] single_node”, pri čemu CouchDB automatski stvara sistemske baze podataka ako su odsutne;
- Optimizacija performansi procesa couch_server je završena;
- Instalator za platformu Windows značajno je poboljšan;
- Veličina prikaza je ograničena na 2^28 (268435456) rezultata. Ova granica može se zasebno prilagoditi za obične i segmentirane prikaze pomoću opcija query_limit i partition_query_limit u sekciji „[query_server_config]“;
- Uklonjen je zasebni HTTP-učitelj za upravljanje lokalnim čvorom, koji se pokreće na mrežnom portu 5986, a funkcionalnost je sada dostupna kroz zajedničko sučelje za upravljanje klasterom;
- Maksimalna veličina dokumenta smanjena je na 8 MB, što može uzrokovati probleme s replikacijom podataka sa starih poslužitelja nakon ažuriranja na CouchDB 3.0. Za povećanje limite može se koristiti postavka „[couchdb] max_document_size“;
- Obavljena je velika čišćenje zastarjelih mogućnosti, kao što su pozivi _replicator i _external, polja disk_size i data_size, opcija delayed_commits;
- Za pokretanje CouchDB sada je potreban Erlang/OTP 20.3.8.11+, 21.2.3+ ili 22.0.5. Teoretski je očuvana funkcionalnost s granom Erlang/OTP 19, ali je ona podložna testiranju.
Podsjetimo, CouchDB pohranjuje podatke u obliku uređenog popisa i omogućuje djelomičnu replikaciju podataka između više baza podataka u 'master-master' režimu uz simultano otkrivanje i rješavanje sukoba. Svaki poslužitelj pohranjuje svoj lokalni skup podataka, sinkroniziran s drugim poslužiteljima, koji se mogu prebaciti u offline mode i povremeno replicirati promjene. Ova mogućnost čini CouchDB privlačnim rješenjem za organizaciju sinkronizacije postavki programa između različitih računala. Rješenja temeljena na CouchDB implementirana su u kompanijama kao što su BBC, Apple i CERN.
Upiti prema CouchDB i indeksiranje podataka mogu se izvršavati prema paradigmi , koristeći jezik JavaScript za oblikovanje logike izbora podataka. Jezgra sustava napisana je na jeziku Erlang, optimiziranom za izradu servisa koji obrađuju mnoštvo paralelnih upita distribuiranih sustava. View-server je napisan na jeziku C i temelji se na JavaScript motoru iz projekta Mozilla. Pristup bazi podataka ostvaruje se putem HTTP protokola koristeći RESTful JSON API, što omogućava pristup podacima, uključujući putem web-aplikacija izvedenih u preglednicima.
Kao jedinica za pohranu podataka koristi se dokument koji ima jedinstveni identifikator, verziju i sadrži proizvoljan skup imenovanih polja u formatu ključ/vrijednost. Za organizaciju pseudo-strukturiranog skupa podataka iz proizvoljnih dokumenata (agregaciju i formiranje uzoraka) koristi se koncept formiranja prikaza (view), za čije se određivanje koristi jezik JavaScript. U JavaScriptu također se mogu definirati funkcije za provjeru ispravnosti podataka prilikom dodavanja novih dokumenata unutar određenog prikaza.
Izvor: opennet.ru
