A dokumentum-orientált DBMS Apache CouchDB 3.0 kiadása

került sor elosztott dokumentum-orientált adatbázis kiadása Apache CouchDB 3.0, amely a NoSQL rendszerek osztályába tartozik. A projekt forrásai terjedés Apache 2.0 licenc alatt.

FejlesztésekAz Apache CouchDB 3.0-ban implementálva:

  • Az alapértelmezett konfiguráció tovább lett javítva.
    Indításkor most meg kell határozni az admin felhasználót, amely nélkül a szerver hibával leáll (lehetővé teszi a hozzáférést véletlenül hitelesítés nélkül hagyó szerverek indításával kapcsolatos problémák megoldását). A "/_all_dbs" hívásokhoz mostantól rendszergazdai jogosultságokra van szükség, és alapértelmezés szerint minden adatbázis jön létre, amely csak az adminisztrátor felhasználó számára érhető el (a hozzáférési paraméterek a "_security" objektumon keresztül módosíthatók). Alapértelmezés szerint az objektumok szerkesztése a _users adatbázisban tilos;

  • Hozzáadva a felhasználó által definiált szegmentált (particionált) adatbázisok létrehozásának képessége, lehetővé téve saját szabályok meghatározását a dokumentumok szegmensek közötti elosztására (shard range). Speciális optimalizálások hozzáadva a szilánkos adatbázisokhoz a Mango nézetekhez és indexekhez;
  • Megvalósítva automatikus osztási mód szegmentálás (sharding) során. Az adatbázisban ezentúl lehetőség van az adatok szegmensek közötti újraelosztására, figyelembe véve a bontási szint meghatározásához használt q-tényező értékének növekedését;
  • Hozzáadva ken alrendszer az automatikus háttérindexeléshez és a másodlagos indexek (JavaScript, Mango, szöveges keresési indexek) naprakészen tartásához anélkül, hogy kifejezetten elindítaná az építési műveleteket;
  • Az automatikus adatbázis-csomagoláshoz használt smoosh folyamatot teljesen átírták;
  • Új alrendszer javasolt IO sor, bizonyos műveletek I/O prioritásának megváltoztatására szolgál;
  • Bevezetett egy regressziós tesztelési rendszert;
  • Hivatalos támogatás hozzáadva az arm64v8 (aarch64) és ppc64le (ppc64el) platformokhoz;
  • Támogatás hozzáadva a JavaScript-motorhoz SpiderMonkey 1.8.5-höz (a Firefox 60 ESR-ágazatához) az ES5, ES6 és ES2016+ továbbfejlesztett támogatásával;
  • Keresőmotor tartalmazza Dreyfus Lucene alapú, ami nagyban leegyszerűsíti a CouchDB-n alapuló keresőmotor telepítését;
  • Hozzáadott háttérrendszer a systemd-journald használatával történő naplózáshoz;
  • A „[couchdb] single_node” beállítás hozzáadásával a CouchDB automatikusan létrehozza a rendszeradatbázisokat, ha azok hiányoznak;
  • A couch_server folyamat teljesítménye optimalizálva lett;
  • A Windows platform telepítője jelentősen javult;
  • A megtekintések száma legfeljebb 2^28 (268435456) lehet. Ez a korlát külön konfigurálható normál és szegmentált nézetekhez a „[query_server_config]” szakasz query_limit és partition_query_limit beállításaival;
  • Eltávolításra került az 5986-os hálózati porton elindított külön HTTP helyi csomópont-felügyeleti interfész, amelynek funkcionalitása immár a közös fürtfelügyeleti felületen keresztül érhető el;
  • A dokumentum maximális mérete 8 MB-ra csökkent, ami problémákat okozhat a régebbi kiszolgálókról származó adatok replikációjában a CouchDB 3.0-ra való frissítés után. A korlát növeléséhez használhatja a „[couchdb] max_document_size” beállítást;
  • Az elavult szolgáltatások jelentős tisztítása megtörtént, mint például a _replicator és _external hívások, a disk_size és data_size mezők, valamint a delayed_commits opció;
  • A CouchDB futtatásához most Erlang/OTP 20.3.8.11+, 21.2.3+ vagy 22.0.5 szükséges. Elméletileg az Erlang/OTP 19 ággal való funkcionalitás megmarad, de ezt tesztelik.

Emlékezzünk vissza, hogy a CouchDB rendezett lista formátumban tárolja az adatokat, és lehetővé teszi az adatok részleges replikációját több adatbázis között master-master módban, a konfliktushelyzetek egyidejű észlelésével és megoldásával. Minden szerver saját helyi adatkészletét tárolja, szinkronizálva más szerverekkel, amelyek offline állapotba hozhatók, és időszakonként megismételhetők a változtatások. Ez a funkció különösen vonzó megoldássá teszi a CouchDB-t a programbeállítások különböző számítógépek közötti szinkronizálására. A CouchDB-alapú megoldásokat olyan cégeknél vezették be, mint a BBC, az Apple és a CERN.

A CouchDB lekérdezések és az adatok indexelése a paradigma szerint végezhető el MapReduce, JavaScriptet használva adatmintavételezési logikát generál. A rendszermag Erlang nyelven íródott, amely több párhuzamos kérést kiszolgáló elosztott rendszerek létrehozására van optimalizálva. A nézetszerver C nyelven íródott, és a Mozilla projekt JavaScript motorján alapul. Az adatbázishoz való hozzáférés a HTTP-protokoll használatával történik egy RESTful JSON API használatával, amely lehetővé teszi az adatokhoz való hozzáférést, beleértve a böngészőben futó webalkalmazásokat is.

Az adattároló egység olyan dokumentum, amely egyedi azonosítóval, verzióval rendelkezik, és kulcs/érték formátumban tetszőleges elnevezett mezőket tartalmaz. Egy pszeudostrukturált adathalmaz tetszőleges dokumentumokból történő rendszerezéséhez (összesítés és kijelölés) a nézetek (nézetek) kialakításának fogalmát használjuk, amely meghatározza, hogy melyik JavaScript nyelvet használjuk. A JavaScript függvényeket is definiálhat az adatok érvényesítésére, amikor új dokumentumokat ad hozzá egy adott nézethez.

Forrás: opennet.ru

Hozzászólás