rilascio di un database distribuito orientato ai documenti , che appartiene alla classe dei sistemi NoSQL. Il codice sorgente del progetto concesso in licenza con Apache 2.0.
, implementato in Apache CouchDB 3.0:
- La sicurezza è stata rafforzata nella configurazione predefinita.
L'utente amministratore deve ora essere specificato all'avvio; senza di esso, il server verrà terminato con un errore (questo risolve i problemi all'avvio del server che inavvertitamente lasciano l'accesso non autenticato). Sono ora richiesti privilegi di amministratore per accedere a "/_all_dbs" e tutti i database vengono creati per impostazione predefinita come accessibili solo all'utente amministratore (i parametri di accesso possono essere modificati tramite l'oggetto "_security"). La modifica degli oggetti nel database _users è ora disabilitata per impostazione predefinita; - Possibilità di creare database partizionati definiti dall'utente, consentendo di definire regole personalizzate per la distribuzione dei documenti tra i segmenti (intervallo di frammenti). Le viste e gli indici di Mango sono stati aggiornati con ottimizzazioni specifiche per i database partizionati;
- Modalità di sharding automatico. Il database può ora ridistribuire i dati tra i segmenti, tenendo conto dell'aumento del fattore q utilizzato per determinare il livello di sharding;
- sottosistema ken per l'indicizzazione automatica in background e il mantenimento degli indici secondari (JavaScript, Mango, indici di ricerca testuale) aggiornati senza avviare esplicitamente le loro operazioni di costruzione;
- Il processo smoosh utilizzato per il packaging automatico del database è stato completamente riscritto;
- Viene proposto un nuovo sottosistema , utilizzato per modificare la priorità I/O per determinate operazioni;
- È stato implementato un sistema di test di regressione;
- Aggiunto supporto ufficiale per le piattaforme arm64v8 (aarch64) e ppc64le (ppc64el);
- Aggiunto supporto per il raggruppamento con il motore JavaScript SpiderMonkey 1.8.5 (ramo ESR di Firefox 60) con supporto migliorato per ES5, ES6 ed ES2016+;
- È incluso un motore di ricerca. basato su Lucene, che semplifica notevolmente l'implementazione di un motore di ricerca su CouchDB;
- Aggiunto backend per la registrazione tramite systemd-journald;
- Aggiunta l'impostazione "[couchdb] single_node" che, una volta installata, farà sì che CouchDB crei automaticamente i database di sistema se questi risultano mancanti;
- Le prestazioni del processo couch_server sono state ottimizzate;
- Значительно улучшен установщик для платформы Windows;
- La dimensione della visualizzazione è limitata a 2^28 (268435456) risultati. Questo limite può essere configurato separatamente per le visualizzazioni normali e partizionate utilizzando le opzioni query_limit e partition_query_limit nella sezione "[query_server_config]";
- L'interfaccia HTTP separata per la gestione dei nodi locali in esecuzione sulla porta di rete 5986 è stata rimossa e la sua funzionalità è ora disponibile tramite l'interfaccia comune per la gestione dei cluster;
- La dimensione massima del documento è stata ridotta a 8 MB, il che potrebbe causare problemi con la replicazione dei dati da server più vecchi dopo l'aggiornamento a CouchDB 3.0. Per aumentare il limite, è possibile utilizzare l'impostazione "[couchdb] max_document_size".
- È stata effettuata una pulizia importante delle funzionalità deprecate, come le chiamate _replicator e _external, i campi disk_size e data_size e l'opzione delayed_commits;
- CouchDB ora richiede Erlang/OTP 20.3.8.11+, 21.2.3+ o 22.0.5 per funzionare. Erlang/OTP 19 è ancora teoricamente supportato, ma è attualmente in fase di test.
Si ricorda che CouchDB memorizza i dati in un formato di elenco ordinato e consente la replica parziale dei dati tra più database in modalità master-master con rilevamento e risoluzione simultanea dei conflitti. Ogni server memorizza il proprio set di dati locale, sincronizzato con altri server, che può essere disattivato e replicare periodicamente le modifiche. Questa capacità, in particolare, rende CouchDB una soluzione interessante per la sincronizzazione delle impostazioni dei programmi tra diversi computer. Soluzioni basate su CouchDB sono state implementate presso aziende come BBC, Apple e CERN.
Le query su CouchDB e l'indicizzazione dei dati possono essere eseguite secondo il paradigma , utilizzando JavaScript per generare la logica di recupero dei dati. Il core del sistema è scritto in Erlang, un linguaggio ottimizzato per la creazione di sistemi distribuiti che gestiscono più richieste parallele. Il server di visualizzazione è scritto in C e si basa sul motore JavaScript di Mozilla. L'accesso al database avviene tramite HTTP utilizzando un'API JSON RESTful, consentendo l'accesso ai dati da applicazioni web in esecuzione su un browser.
L'unità di archiviazione dei dati è un documento, dotato di un identificativo e di una versione univoci e contenente un insieme arbitrario di campi denominati in formato chiave/valore. Per organizzare un set di dati pseudo-strutturato a partire da documenti arbitrari (aggregazione e selezione), viene utilizzato il concetto di viste, definito tramite JavaScript. JavaScript può essere utilizzato anche per definire funzioni per la convalida dei dati quando si aggiungono nuovi documenti all'interno di una determinata vista.
Fonte: opennet.ru
