Vydání dokumentově orientované databáze Apache CouchDB 3.0

Proběhlo vydání distribuované dokumentově orientované databáze Apache CouchDB 3.0, která patří do třídy NoSQL systémů. Zdrojové kódy projektu se distribují pod licencí Apache 2.0.

Vylepšení, 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;
  • Byla přidána 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;
  • Realizováno 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í;
  • Byla přidána 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 IO Queue, 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 Dreyfus 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 MapReduce, 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster