izdavanje distribuirane baze podataka orijentisane na dokumente , koji pripada klasi NoSQL sistema. Izvori projekta licenciran pod Apache 2.0.
implementirano u Apache CouchDB 3.0:
- Zadana konfiguracija je poboljšana.
Prilikom pokretanja sada mora biti definiran korisnik admin, bez kojeg će server prekinuti sa greškom (omogućava rješavanje problema s pokretanjem servera koji nehotice ostavljaju pristup bez autentifikacije). Pozivi na "/_all_dbs" sada zahtijevaju administratorska prava, a sve baze podataka se kreiraju prema zadanim postavkama dostupne samo administratoru (parametri pristupa se mogu mijenjati preko objekta "_security"). Po defaultu, uređivanje objekata u bazi podataka _users je zabranjeno; - mogućnost kreiranja korisnički definiranih segmentiranih (particioniranih) baza podataka, omogućavajući definiranje vlastitih pravila za distribuciju dokumenata po segmentima (raspon dijelova). Dodane posebne optimizacije za podijeljene baze podataka u Mango poglede i indekse;
- automatski način podjele tokom segmentacije (sharding). U bazi podataka sada je moguće preraspodijeliti podatke između segmenata, uzimajući u obzir povećanje vrijednosti q-faktora koji se koristi za određivanje nivoa raščlanjenja;
- ken podsistem za automatsko pozadinsko indeksiranje i održavanje sekundarnih indeksa (JavaScript, Mango, indeksi pretraživanja teksta) ažurnim bez eksplicitnog pokretanja njihovih konstrukcijskih operacija;
- Smoosh proces koji se koristi za automatsko pakovanje baze podataka je potpuno prepisan;
- Predložen novi podsistem , koristi se za promjenu I/O prioriteta za određene operacije;
- Implementiran sistem regresijskog testiranja;
- Dodata zvanična podrška za platforme arm64v8 (aarch64) i ppc64le (ppc64el);
- Dodata podrška za povezivanje sa JavaScript motorom SpiderMonkey 1.8.5 (ESR grana Firefoxa 60) sa poboljšanom podrškom za ES5, ES6 i ES2016+;
- Tražilica uključena baziran na Luceneu, što uvelike pojednostavljuje primenu pretraživača zasnovanog na CouchDB;
- Dodan backend za logovanje pomoću systemd-journald;
- Dodata je postavka “[couchdb] single_node”, kada je postavljena, CouchDB će automatski kreirati sistemske baze podataka ako nedostaju;
- Izvedba procesa couch_server je optimizirana;
- Instalacijski program platforme je značajno poboljšan. Windows;
- Pregledi su ograničeni na 2^28 (268435456) rezultata. Ovo ograničenje se može zasebno konfigurirati za regularne i segmentirane poglede koristeći opcije query_limit i partition_query_limit u odjeljku “[query_server_config]”;
- Uklonjeno je zasebno HTTP interfejs za upravljanje lokalnim čvorovima, pokrenut na mrežnom portu 5986, čija je funkcionalnost sada dostupna preko zajedničkog interfejsa za upravljanje klasterom;
- Maksimalna veličina dokumenta je smanjena na 8 MB, što može uzrokovati probleme s replikacijom podataka sa starijih servera nakon nadogradnje na CouchDB 3.0. Da povećate ograničenje, možete koristiti postavku “[couchdb] max_document_size”;
- Izvršeno je veliko čišćenje zastarjelih karakteristika, kao što su _replicator i _external pozivi, polja disk_size i data_size i opcija delayed_commits;
- Za pokretanje CouchDB-a sada je potreban Erlang/OTP 20.3.8.11+, 21.2.3+ ili 22.0.5. Teoretski, funkcionalnost sa Erlang/OTP 19 granom je očuvana, ali je pokrivena testovima.
Podsjetimo da CouchDB pohranjuje podatke u formatu uređene liste i omogućava djelomičnu replikaciju podataka između više baza podataka u master-master modu uz istovremeno otkrivanje i rješavanje konfliktnih situacija. Svaki server pohranjuje svoj vlastiti lokalni skup podataka, sinkroniziran s drugim serverima, koji se mogu staviti van mreže i periodično replicirati promjene. Konkretno, ova karakteristika čini CouchDB atraktivnim rješenjem za sinhronizaciju programskih postavki između različitih računala. Rešenja zasnovana na CouchDB implementirana su u kompanijama kao što su BBC, Apple i CERN.
CouchDB upiti i indeksiranje podataka mogu se izvesti prema paradigmi , koristeći JavaScript za generiranje logike uzorkovanja podataka. Jezgro sistema je napisano na Erlangu, koji je optimizovan za kreiranje distribuiranih sistema koji opslužuju više paralelnih zahteva. View server je napisan u C i baziran je na JavaScript motoru iz Mozilla projekta. Pristup bazi podataka se obavlja pomoću HTTP protokola pomoću RESTful JSON API-ja, koji vam omogućava pristup podacima, uključujući i iz web aplikacija koje se pokreću u pretraživaču.
Jedinica za pohranu podataka je dokument koji ima jedinstveni identifikator, verziju i sadrži proizvoljan skup imenovanih polja u formatu ključ/vrijednost. Za organizovanje pseudostrukturiranog skupa podataka iz proizvoljnih dokumenata (agregacija i selekcija), koristi se koncept formiranja pogleda (pregledi) za definisanje koji se koristi JavaScript jezik. JavaScript također može definirati funkcije za provjeru valjanosti podataka prilikom dodavanja novih dokumenata unutar određenog pogleda.
izvor: opennet.ru
