vydání distribuované dokumentově orientované databáze , která patří do třídy NoSQL systémů. Zdrojové kódy projektu pod licencí Apache 2.0.
, implementované v Apache CouchDB 3.0:
- Byla posílena ochrana v základní konfiguraci.
Při spuštění nyní musí být určit uživatel admin, bez kterého server skončí s chybou (řeší problémy se spuštěním serverů, které bezdůvodně zůstávají dostupné bez autentizace). Pro volání " /_all_dbs" nyní vyžaduje administrátorská práva a všechny DB jsou ve výchozím nastavení vytvářeny jako dostupné pouze pro uživatele admin (parametry přístupu lze změnit pomocí objektu " _security"). Úpravy objektů v DB _users jsou ve výchozím nastavení zakázány; - možnost vytváření uživatelem definovaných segmentovaných (particionovaných) DB, které umožňují určit vlastní pravidla pro rozdělování dokumentů podle segmentů (shard range). Byly přidány speciální optimalizace pro segmentované DB do pohledů a indexů Mango;
- režim automatického dělení při segmentaci (sharding). V DB je nyní možné přesunout data mezi segmenty s ohledem na zvyšující se hodnotu q-faktoru, který se používá k určení úrovně rozdělení;
- pod systém ken pro automatické pozadí indexování a udržování sekundárních indexů (JavaScript, Mango, fulltextové indexy) bez nutnosti explicitního spouštění jejich konstrukce;
- Proces smoosh byl kompletně přepsán a slouží k automatickému balení DB;
- Byl navržen nový pod systém , který mění prioritu vstupu/výstupu pro určité operace;
- Byl implementován systém regresního testování;
- Byla přidána oficiální podpora platforem arm64v8 (aarch64) a ppc64le (ppc64el);
- Byla přidána podpora propojení s JavaScriptovým enginem SpiderMonkey 1.8.5 (ESR-branch Firefox 60) s vylepšenou podporou ES5, ES6 a ES2016+;
- Do součástí byl zahrnut vyhledávací engine na bázi Lucene, což značně zjednodušuje nasazení vyhledávacího systému založeného na CouchDB;
- Byl přidán backend pro sběr logů pomocí systemd-journald;
- Přidána konfigurace "[couchdb] single_node", při jejímž nastavení CouchDB automaticky vytvoří systémové DB, pokud chybí;
- Byla provedena optimalizace výkonu procesu couch_server;
- Instalátor pro platformu Windows byl výrazně vylepšen;
- Velikost pohledů je omezena na 2^28 (268435456) výsledků. Tento limit lze jednotlivě nastavit pro běžné a segmentované pohledy pomocí voleb query_limit a partition_query_limit v sekci „[query_server_config]“;
- Byl odstraněn samostatný HTTP rozhraní pro správu lokálního uzlu, spuštěný na síťovém portu 5986, jehož funkčnost je nyní dostupná prostřednictvím společného rozhraní pro správu clusteru;
- Maximální velikost dokumentu byla zkrácena na 8 MB, což může způsobit problémy s replikací dat ze starších serverů po upgradu na CouchDB 3.0. Pro zvýšení limitu lze použít nastavení „[couchdb] max_document_size“;
- Byla provedena rozsáhlá čistka zastaralých funkcí, jako jsou volání _replicator a _external, pole disk_size a data_size, volba delayed_commits;
- Pro spuštění CouchDB je nyní vyžadován Erlang/OTP 20.3.8.11+, 21.2.3+ nebo 22.0.5. Teoreticky byla zachována funkčnost s větví Erlang/OTP 19, ale tato je kryta testy.
Připomínáme, že CouchDB ukládá data ve formátu seřazeného seznamu a umožňuje částečnou replikaci dat mezi několika databázemi v režimu "master-master" s současným detekováním a řešením konfliktních situací. Každý server uchovává svůj místní soubor dat, synchronizovaný s ostatními servery, které mohou být převedeny do offline režimu a periodicky replikovat změny. Tato schopnost činí CouchDB atraktivním řešením pro organizaci synchronizace nastavení programů mezi různými počítači. Řešení založená na CouchDB byla implementována ve společnostech jako BBC, Apple a CERN.
Dotazy na CouchDB a indexace dat mohou být prováděny podle paradigmatu , s použitím jazyka JavaScript pro formování logiky výběru dat. Jádro systému je napsáno v jazyce Erlang, optimalizovaném pro vytváření obsluhujících množství paralelních dotazů distribuovaných systémů. View-server je napsán v jazyce C a je založen na JavaScriptovém enginu projektu Mozilla. Přístup k databázi probíhá pomocí protokolu HTTP s využitím RESTful JSON API, což umožňuje přístup k datům také z webových aplikací běžících v prohlížeči.
Dokument s unikátním identifikátorem, verzí a libovolnou sadou pojmenovaných polí ve formátu klíč/hodnota slouží jako jednotka úložného prostoru. Pro organizaci pseudo-strukturované sady dat z libovolných dokumentů (agregace a vytváření výběrů) se používá koncept pohledů (view), jejichž definice využívá jazyk JavaScript. V JavaScriptu lze také definovat funkce pro kontrolu správnosti dat při přidávání nových dokumentů v rámci daného pohledu.
Zdroj: opennet.ru
