Release van een gedistribueerde documentgerichte database , dat tot de klasse van NoSQL-systemen behoort. Bronteksten van het project gelicentieerd onder Apache 2.0.
, geïmplementeerd in Apache CouchDB 3.0:
- De beveiliging in de standaardconfiguratie is versterkt.
Bij het starten moet nu de admin-gebruiker worden gedefinieerd, zonder welke de server zijn werk met een foutmelding zal beëindigen (dit maakt het mogelijk om problemen met het starten van servers op te lossen die, door onoplettendheid, toegang zonder authenticatie toestaan). Administratorrechten zijn nu vereist voor toegang tot "/_all_dbs"-aanroepen, en alle databases worden standaard aangemaakt als alleen toegankelijk voor de admin-gebruiker (toegangsparameters kunnen worden gewijzigd via het object "_security". Het bewerken van objecten in de database _users is standaard verboden; - De mogelijkheid om door de gebruiker gedefinieerde gepartitioneerde databases te creëren, zodat u uw eigen regels kunt definiëren voor het distribueren van documenten over segmenten (shardbereik). Speciale optimalisaties voor gepartitioneerde databases zijn toegevoegd aan Mango-weergaven en -indexen;
- automatische delingsmodus tijdens segmentatie (sharding). De database maakt het nu mogelijk om gegevens over segmenten te herverdelen, waarbij rekening wordt gehouden met de toename van de q-factorwaarde die wordt gebruikt om het niveau van de uitval te bepalen;
- ken-subsysteem voor automatische achtergrondindexering en het up-to-date houden van secundaire indexen (JavaScript, Mango, tekstzoekindexen) zonder expliciet de constructie ervan te starten;
- Het smosh-proces dat wordt gebruikt voor het automatisch verpakken van databases is volledig herschreven;
- Er wordt een nieuw subsysteem voorgesteld , gebruikt om de I/O-prioriteit voor bepaalde bewerkingen te wijzigen;
- Er is een regressietestsysteem geïmplementeerd;
- Officiële ondersteuning toegevoegd voor de platforms arm64v8 (aarch64) en ppc64le (ppc64el);
- Ondersteuning toegevoegd voor bundeling met de SpiderMonkey 1.8.5 JavaScript-engine (Firefox 60 ESR-branch) met verbeterde ondersteuning voor ES5, ES6 en ES2016+;
- De zoekmachine is inbegrepen gebaseerd op Lucene, wat het veel eenvoudiger maakt om een zoekmachine te implementeren op CouchDB;
- Backend toegevoegd voor logging met behulp van systemd-journald;
- De instelling "[couchdb] single_node" is toegevoegd. Wanneer deze is geïnstalleerd, zorgt CouchDB ervoor dat er automatisch systeemdatabases worden aangemaakt als deze ontbreken.
- De prestaties van het couch_server-proces zijn geoptimaliseerd;
- De platforminstallatie is aanzienlijk verbeterd. Windows;
- Het aantal inzendingen is beperkt tot 2^28 (268435456) resultaten. Deze limiet kan afzonderlijk worden geconfigureerd voor normale en gepartitioneerde weergaven met behulp van de opties query_limit en partition_query_limit in de sectie "[query_server_config]".
- De aparte HTTP-interface voor lokaal knooppuntbeheer die op netwerkpoort 5986 draait, is verwijderd en de functionaliteit ervan is nu beschikbaar via de gemeenschappelijke interface voor clusterbeheer;
- De maximale documentgrootte is teruggebracht tot 8 MB. Dit kan problemen veroorzaken bij het repliceren van gegevens van oudere servers na een upgrade naar CouchDB 3.0. Om de limiet te verhogen, kunt u de instelling "[couchdb] max_document_size" gebruiken;
- Er is een grote opruiming uitgevoerd van verouderde functies, zoals de aanroepen _replicator en _external, de velden disk_size en data_size en de optie delayed_commits;
- CouchDB vereist nu Erlang/OTP 20.3.8.11+, 21.2.3+ of 22.0.5 om te kunnen draaien. Erlang/OTP 19 wordt theoretisch nog steeds ondersteund, maar wordt getest.
Houd er rekening mee dat CouchDB gegevens opslaat in een geordende lijstindeling en dat gedeeltelijke replicatie van gegevens tussen meerdere databases in master-mastermodus mogelijk is, waarbij conflictsituaties gelijktijdig kunnen worden gedetecteerd en opgelost. Elke server slaat zijn eigen lokale gegevensset op, die met andere servers wordt gesynchroniseerd. De gegevensset kan offline worden gezet en wijzigingen kunnen periodiek worden gerepliceerd. Deze functionaliteit maakt CouchDB met name een aantrekkelijke oplossing voor het organiseren van de synchronisatie van programma-instellingen tussen verschillende computers. Oplossingen op basis van CouchDB zijn geïmplementeerd bij bedrijven zoals de BBC, Apple en CERN.
CouchDB-query's en gegevensindexering kunnen worden uitgevoerd volgens het paradigma , waarbij de JavaScript-taal wordt gebruikt om de logica voor het ophalen van gegevens te genereren. De kern van het systeem is geschreven in Erlang, een taal die geoptimaliseerd is voor het creëren van gedistribueerde systemen die meerdere parallelle verzoeken kunnen verwerken. De view-server is geschreven in C en is gebaseerd op de JavaScript-engine van het Mozilla-project. De toegang tot de database wordt verleend via het HTTP-protocol met behulp van de RESTful JSON API, waarmee toegang tot de gegevens mogelijk is, ook vanuit webapplicaties die in de browser draaien.
De gegevensopslageenheid is een document met een unieke identificatie en versie, en bevat een willekeurige set benoemde velden in sleutel/waarde-indeling. Om een pseudogestructureerde dataset uit willekeurige documenten te organiseren (aggregatie en selectie) wordt het concept van weergavevorming gebruikt. Voor de definitie hiervan wordt de programmeertaal JavaScript gebruikt. JavaScript kan ook functies definiëren om de geldigheid van gegevens te controleren bij het toevoegen van nieuwe documenten binnen een bepaalde weergave.
Bron: opennet.ru
