udgivelse af distribueret dokumentorienteret databaser , som tilhører klassen af NoSQL-systemer. Kildeteksterne til projektet er under Apache 2.0-licensen.
, der er implementeret i Apache CouchDB 3.0:
- Der er opnået en forbedret beskyttelse i konfigurationen som standard.
Ved opstart skal brugeren admin nu nødvendigvis være defineret; uden denne afslutter serveren driften med en fejl (det løser problemer med at starte servere, der uagtsomt lader adgang uden autentificering). For at tilgå kald til «/_all_dbs» kræves nu administratorrettigheder, og alle databaser oprettes som standard kun tilgængelige for brugeren admin (adgangsparametre kan ændres via objektet «_security»). Redigering af objekter i databasen _users er som standard forbudt; - muligheden for at oprette brugerdefinerede segmenterede (partitionerede) databaser, der giver mulighed for at definere egne regler for fordeling af dokumenter på segmenter (shard range). Til Mango visninger og indekser er der tilføjet særlige optimeringer til segmenterede databaser;
- automatiske opdelingsmuligheder under segmentering (sharding). I databasen er det nu muligt at omfordele data på segmenter under hensyntagen til stigningen i q-faktoren, der anvendes til at bestemme niveauet for opdelingen;
- ken-underdelen til automatisk baggrundsindeksering og vedligeholdelse af sekundære indekser (JavaScript, Mango, indekser til tekstsøgning) uden behov for eksplicit at starte opbygningen af disse;
- Hele processen smoosh er blevet omskrevet, som anvendes til automatisk pakning af databaser;
- En ny subsystem er foreslået , der anvendes til at ændre input/output-prioritet for bestemte operationer;
- Regressiv testsystem er implementeret;
- Officiel støtte til arm64v8 (aarch64) og ppc64le (ppc64el) platforme er tilføjet;
- Støtte til binding til JavaScript-motoren SpiderMonkey 1.8.5 (ESR-grenen af Firefox 60) med forbedret støtte til ES5, ES6 og ES2016+ er tilføjet;
- Søgemaskinen er inkluderet baseret på Lucene, hvilket gør det betydeligt lettere at implementere en søgemaskine baseret på CouchDB;
- Der er tilføjet en backend til logføring ved brug af systemd-journald;
- Indstillingen «[couchdb] single_node» er tilføjet, som automatisk vil oprette systemdatabaser, hvis de ikke er til stede.
- Ydelse til couch_server er blevet optimeret;
- Installatøren til Windows-platformen er betydeligt forbedret;
- Visningsstørrelsen er begrænset til 2^28 (268435456) resultater. Denne grænse kan individuelt tilpasses for både normale og segmenterede visninger ved hjælp af parametrene query_limit og partition_query_limit i sektionen «[query_server_config]»;
- Den separate HTTP-grænseflade til styring af den lokale node, der blev drevet på netværksport 5986, er blevet fjernet, og dens funktionalitet er nu tilgængelig gennem den fælles grænseflade til cluster management;
- Den maksimale dokumentstørrelse er reduceret til 8 MB, hvilket kan medføre problemer med data-replikering fra ældre servere efter opgradering til CouchDB 3.0. For at øge grænsen kan indstillingen «[couchdb] max_document_size» anvendes;
- Der er blevet foretaget en betydelig oprydning af forældede funktioner som_ replications og_ external, felterne disk_size og data_size, samt indstillingen delayed_commits;
- CouchDB kræver nu Erlang/OTP 20.3.8.11+, 21.2.3+ eller 22.0.5 for at køre. Teoretisk set er kompatibiliteten med Erlang/OTP 19 bevaret, men den er underkastet test;
Det er værd at bemærke, at CouchDB gemmer data i et sorteret listeformat og gør det muligt at udføre delvis data-replikation mellem flere databaser i «master-master»-mode med samtidig opdagelse og løsning af konflikt-situationer. Hver server gemmer sit lokale datasæt, som er synkroniseret med andre servere, der kan skiftes til offline-tilstand og periodisk replikere ændringer. Specifikt gør denne funktion CouchDB til en attraktiv løsning til at organisere synkronisering af applikationsindstillinger mellem forskellige computere. CouchDB-løsninger er implementeret hos virksomheder som BBC, Apple og CERN.
Forespørgsler til CouchDB og dataindeksering kan udføres i henhold til paradigmet , ved at bruge JavaScript-sprog til at danne logikken for dataudvælgelse. Systemets kerne er skrevet i Erlang, som er optimeret til at håndtere mange samtidige forespørgsler i distribuerede systemer. Visningsserveren er skrevet i C og er baseret på JavaScript-motoren fra Mozilla-projektet. Adgang til databasen sker via HTTP-protokollen ved hjælp af RESTful JSON API, hvilket muliggør adgang til data, inklusive fra webapplikationer, der kører i browseren.
Enheden for datalagring er et dokument med en unik identifikator, version og et vilkårligt sæt navngivne felter i nøgle/værdi-format. For at organisere et pseudo-struktureret dataset af vilkårlige dokumenter (aggregering og dannelse af udvalg) anvendes konceptet med visninger (view), som defineres ved hjælp af JavaScript. Med JavaScript kan man også definere funktioner til at kontrollere datavaliditet, når nye dokumenter tilføjes inden for en bestemt visning.
Kilde: opennet.ru
