utgitt distribuert dokumentorientert database , som tilhører klassen NoSQL-systemer. Kildetekstene til prosjektet under Apache 2.0-lisensen.
, implementert i Apache CouchDB 3.0:
- Sikkerheten i standardkonfigurasjonen er forbedret.
Ved oppstart må brukeren admin nå alltid være definert, uten hvilken serveren avslutter med en feil (løser problemer med oppstart av servere som utilsiktet lar tilgang være uten autentisering). For tilgang til kallene «/_all_dbs» kreves det nå administratorrettigheter, og alle databaser opprettes som standard kun tilgjengelige for brukeren admin (tilgangsinnstillingene kan endres via objektet «_security»). Redigering av objekter i databasen _users er som standard forbudt; - muligheten for å opprette brukerdefinerte segmenterte (partisjonerte) databaser, som gir mulighet til å definere egne regler for distribusjon av dokumenter mellom segmenter (shard range). I visninger og indekser er det lagt til spesielle optimeringer for segmenterte databaser;
- automatisk delingsmodus ved segmentering (sharding). Det er nå mulig å redistribuere data mellom segmenter med hensyn til økningen i q-faktoren som brukes til å bestemme oppdelingsnivået;
- ken-subsystemet for automatisk bakgrunnsindeksering og oppdatering av sekundære indekser (JavaScript, Mango, tekstsøkeindekser) uten eksplisitt å starte byggeoperasjonene;
- Prosessen for smoosh, som brukes til automatisk pakking av databaser, er helt omskrevet;
- Et nytt subsystem ble foreslått , som brukes til å endre inn- og utprioritering for bestemte operasjoner;
- Et system for regresjonstesting er implementert;
- Offisiell støtte for plattformer arm64v8 (aarch64) og ppc64le (ppc64el) er lagt til;
- Støtte for binding til JavaScript-motoren SpiderMonkey 1.8.5 (ESR-grenen av Firefox 60) med forbedret støtte for ES5, ES6 og ES2016+ er lagt til;
- Søkemotoren basert på Lucene, som gjør distribusjon av en søkesystem basert på CouchDB betydelig enklere;
- Backend for loggføring ved bruk av systemd-journald er lagt til;
- Innstillingen «[couchdb] single_node» har blitt lagt til, ved installasjon av hvilken CouchDB automatisk vil opprette systemdatabaser hvis de mangler;
- Optimalisering av yteevnen for prosessen couch_server er gjennomført;
- Installereren for Windows-plattformen er betydelig forbedret;
- Størrelsen på visninger er begrenset til 2^28 (268435456) resultater. Denne grensen kan konfigureres separat for vanlige og segmenterte visninger ved hjelp av alternativene query_limit og partition_query_limit i seksjonen «[query_server_config]»;
- Den separate HTTP-grensesnittet for administrasjon av lokal node, som kjørte på nettverksport 5986, er fjernet, og funksjonaliteten er nå tilgjengelig via det felles grensesnittet for klyngeadministrasjon;
- Maksimal dokumentstørrelse er redusert til 8 MB, noe som kan føre til problemer med datagjengivelse fra eldre servere etter oppgradering til CouchDB 3.0. For å øke grensen kan innstillingen «[couchdb] max_document_size» brukes;
- En omfattende opprydning av utdaterte funksjoner som _replicator og _external, feltene disk_size og data_size, og alternativet delayed_commits er gjennomført;
- For å kjøre CouchDB kreves nå Erlang/OTP 20.3.8.11+, 21.2.3+ eller 22.0.5. Teoretisk er funksjonaliteten bevart med Erlang/OTP 19-grenen, men den er dekket av tester.
La oss minne om at CouchDB lagrer data i en sortert listeformat og tillater delvis replikering av data mellom flere databaser i «master-master» modus med både oppdagelse og løsning av konfliktsituasjoner. Hver server lagrer sitt lokale datasett, synkronisert med andre servere, som kan settes i offline-modus og periodisk replikere endringer. Denne funksjonaliteten gjør CouchDB til en attraktiv løsning for synkronisering av programinnstillinger mellom forskjellige datamaskiner. Løsninger basert på CouchDB brukes av selskaper som BBC, Apple og CERN.
Forespørselen til CouchDB og indeksering av data kan utføres i henhold til paradigmet , ved å bruke JavaScript for å utforme logikken for datavalget. Kjøresystemet er skrevet i Erlang, optimalisert for å håndtere mange samtidige forespørsmål i distribuerte systemer. View-serveren er skrevet i C og basert på JavaScript-motoren fra Mozilla-prosjektet. Tilgang til databasen skjer ved hjelp av HTTP-protokollen med RESTful JSON API, noe som gjør det mulig å få tilgang til dataene også fra web-applikasjoner som kjøres i nettleseren.
Som har datalagringsenhet fungerer et dokument med en unik identifikator, versjon og en vilkårlig mengde navngitte felt i nøkkel/verdi-format. For organisering av pseudo-strukturerte datasett fra tilfeldige dokumenter (aggregering og valg av data) brukes konseptet med visninger (view), der man bruker JavaScript-språket til å definere dem. Man kan også definere funksjoner i JavaScript for å verifisere datavaliditet når man legger til nye dokumenter innenfor en bestemt visning.
Kilde: opennet.ru
