release van de gedistribueerde documentgeoriënteerde database , behorend tot de NoSQL-systemen. De bronbestanden van het project onder de Apache 2.0-licentie.
, geïmplementeerd in Apache CouchDB 3.0:
- De beveiliging in de standaardconfiguratie is versterkt.
Bij het opstarten moet nu noodzakelijkerwijs een gebruiker admin gedefinieerd zijn, anders eindigt de server met een fout (dit lost problemen op met het opstarten van servers die per ongeluk zonder authenticatie toegankelijk worden gelaten). Voor toegang tot de aanroep " /_all_dbs " zijn nu beheerdersrechten vereist en alle databases worden standaard alleen toegankelijk voor de gebruiker admin (de toegangsrechten 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 segmentvriendelijke (gepartitioneerde) databases te creëren, waarmee eigen regels voor de verdeling van documenten over segmenten (shard range) kunnen worden vastgesteld. In weergaven en indexes zijn speciale optimalisaties voor gepartitioneerde databases toegevoegd;
- automatische splitsmodus bij segmentatie (sharding). In de database is nu herschikking van gegevens over segmenten mogelijk rekening houdend met de verhoging van de q-factor, die wordt toegepast om het niveau van splitsing te bepalen;
- de ken-subsystemen voor automatische achtergrondindexering en het actueel houden van secundaire indices (JavaScript, Mango, tekstzoekindexen) zonder expliciet de bouwoperaties te starten;
- Het smoosh-proces, dat wordt gebruikt voor het automatisch verpakken van databases, is volledig herschreven;
- Er is een nieuw subsysteem voorgesteld , dat wordt gebruikt om de prioriteit van invoer/uitvoer voor specifieke operaties te wijzigen;
- Een regressietestsysteem is geïmplementeerd;
- Officiële ondersteuning voor de platforms arm64v8 (aarch64) en ppc64le (ppc64el) is toegevoegd;
- Ondersteuning voor de JavaScript-engine SpiderMonkey 1.8.5 (ESR-tak van Firefox 60) met verbeterde ondersteuning voor ES5, ES6 en ES2016+ is toegevoegd;
- De zoekmachine op basis van Lucene, die het veel eenvoudiger maakt om een zoekmachine op basis van CouchDB te implementeren;
- Een backend voor logregistratie met behulp van systemd-journald is toegevoegd;
- De instelling "[couchdb] single_node" is toegevoegd, bij installatie waarvan CouchDB automatisch systeembases maakt als deze ontbreken;
- De prestatie van het couch_server-proces is geoptimaliseerd;
- De installer voor het Windows-platform is aanzienlijk verbeterd;
- De grootte van weergaven is beperkt tot 2^28 (268435456) resultaten. Deze limiet kan afzonderlijk worden ingesteld voor reguliere en gesegmenteerde weergaven met behulp van de opties query_limit en partition_query_limit in de sectie «[query_server_config]»;
- De aparte HTTP-interface voor het beheer van de lokale knooppunt, die op poort 5986 draaide, is verwijderd; deze functionaliteit is nu beschikbaar via de gezamenlijke clusterbeheersinterface;
- De maximale documentgrootte is verminderd tot 8 MB, wat kan leiden tot problemen bij de replicatie van gegevens van oudere servers na de upgrade naar CouchDB 3.0. Om de limiet te verhogen, kan de instelling «[couchdb] max_document_size» worden gebruikt;
- Er is een grote schoonmaak uitgevoerd van verouderde functies, zoals de aanroepen _replicator en _external, de velden disk_size en data_size, en de optie delayed_commits;
- Voor het starten van CouchDB is nu Erlang/OTP 20.3.8.11+, 21.2.3+ of 22.0.5 vereist. Theoretisch blijft de compatibiliteit met de Erlang/OTP 19-tak behouden, maar deze is onderworpen aan tests.
Ter herinnering: CouchDB slaat gegevens op in een gestructureerde lijst en maakt gedeeltelijke replicatie van gegevens tussen meerdere databases in een ‘master-master’ modus met gelijktijdige detectie en oplossing van conflicten mogelijk. Elke server bewaart zijn eigen lokale gegevensset, gesynchroniseerd met andere servers, die in offline-modus kunnen worden gezet en periodiek wijzigingen repliceren. Deze functie maakt CouchDB bijzonder aantrekkelijk voor het synchroniseren van programmaconfiguraties tussen verschillende computers. Oplossingen op basis van CouchDB zijn geïmplementeerd in bedrijven zoals BBC, Apple en CERN.
Verzoeken naar CouchDB en de indexering van gegevens kunnen worden uitgevoerd in overeenstemming met het paradigma , waarbij de logica voor gegevensselectie wordt gevormd met behulp van de programmeertaal JavaScript. De kern van het systeem is geschreven in Erlang, geoptimaliseerd voor het afhandelen van vele gelijktijdige verzoeken in gedistribueerde systemen. De View-server is geschreven in C en is gebaseerd op de JavaScript-engine van het Mozilla-project. Toegang tot de database vindt plaats via het HTTP-protocol met behulp van de RESTful JSON API, waardoor ook gegevens vanuit webapplicaties die in de browser worden uitgevoerd, kunnen worden benaderd.
Een gegevensopslag is een document met een unieke identificator, versie en een willekeurige set genaamde velden in het formaat sleutel/waarde. Voor het organiseren van een pseudo-gestructureerde dataset uit willekeurige documenten (aggregatie en selecties) wordt het concept van weergaven (view) toegepast, waarvoor de programmeertaal JavaScript wordt gebruikt. In JavaScript kunnen ook functies worden gedefinieerd om de juistheid van gegevens te controleren bij het toevoegen van nieuwe documenten binnen een bepaalde weergave.
Bron: opennet.ru
