elágazó dokumentum-orientált adatbázis kiadása , amely a NoSQL rendszerek osztályába tartozik. A projekt forráskódja Apache 2.0 licenc alatt.
, amely az Apache CouchDB 3.0-ban került megvalósításra:
- Megnövelték a védelem szintjét az alapértelmezett konfigurációban.
Indításkor most már kötelező megadni az admin felhasználót, különben a szerver hibaüzenettel leáll (ez megoldja az adminisztráció nélküli hozzáférést hagyó szerverek indítási problémáit). Az „./_all_dbs” hívásokhoz most már szükséges az adminisztrátori jogosultság, és az összes adatbázis alapértelmezés szerint csak az admin felhasználó számára elérhető (a hozzáférési beállítások az „_security” objektumon keresztül módosíthatók). Az _users adatbázisban alapértelmezés szerint tilos az objektumok módosítása; - a felhasználó által meghatározott szegmentált (particionált) adatbázisok létrehozásának lehetősége, amelyek lehetővé teszik a dokumentumok saját szegmensek közötti elosztásának szabályainak meghatározását (shard range). A Mango nézetekhez és indexekhez speciális optimalizálások kerültek hozzáadásra a szegmentált adatbázisokhoz;
- automatikus szegmentálási mód szegmentáláskor (sharding). Az adatbázisban most már lehetséges az adatok szegmensek közötti újraelosztása a q-faktor értékének figyelembevételével, amely a felosztás szintjének meghatározására szolgál;
- a ken alrendszer, amely automatikus háttérindexelést és a másodlagos indexek (JavaScript, Mango, szövegkereső indexek) naprakészen tartását biztosítja, anélkül, hogy expliciten el kellene indítani az építési műveleteket;
- Teljesen átírták a smoosh folyamatot, amely az adatbázis automatikus csomagolására szolgál.
- Új alrendszer javasolt , amely lehetővé teszi az egyes műveletek bevitel/kimeneti prioritásának megváltoztatását;
- Megvalósították a regressziós tesztelési rendszert;
- Hivatalosan támogatották az arm64v8 (aarch64) és ppc64le (ppc64el) platformokat;
- Hozzáadták a JavaScript SpiderMonkey 1.8.5 (a Firefox 60 ESR ág) motorral való összekapcsolás támogatását, javított ES5, ES6 és ES2016+ támogatással;
- Beépítettek egy keresőmotort a Lucene alapjain, amely jelentősen leegyszerűsíti a CouchDB alapú keresőrendszer telepítését;
- Hozzáadódott egy backend a naplózás kezelésére a systemd-journald használatával;
- Hozzáadták a [couchdb] single_node paraméter beállítását, amelynek telepítésekor a CouchDB automatikusan létrehozza a rendszer adatbázisokat, ha azok hiányoznak;
- A couch_server folyamat teljesítményének optimalizálása megtörtént;
- Jelentősen javítva lett a Windows platform telepítője;
- A megjelenítések mérete 2^28 (268435456) eredményre korlátozva. Ez a limit külön beállítható az alapértelmezett és a szegmentált megjelenítésekhez a query_limit és partition_query_limit opciók segítségével a „[query_server_config]” szakaszban;
- Eltávolításra került a helyi csomópont kezelésére szolgáló külön HTTP-interfész, amely a 5986-os hálózati porton futott, a funkcionalitása mostantól a klaszter kezelő általános interfésze révén elérhető;
- A maximális dokumentum mérete 8 MB-ra csökkent, ami problémákat okozhat az adatok replikálása során a régi szerverekből, miután frissítésre kerültek CouchDB 3.0-ra. A лимит növeléséhez a „[couchdb] max_document_size” beállítást használható;
- Jelentős takarítást végeztünk el a régóta elavult funkciókon, például a _replicator és _external hívásokon, a disk_size és data_size mezőkön, valamint a delayed_commits opción;
- A CouchDB futtatásához mostantól Erlang/OTP 20.3.8.11+, 21.2.3+ vagy 22.0.5 szükséges. Elméletileg megmaradt a működőképesség az Erlang/OTP 19 ágon, de ez tesztelve van.
Emlékeztetjük, hogy a CouchDB az adatokat rendezett lista formátumban tárolja, és lehetővé teszi az adatok részleges replikációját több adatbázis között „master-master” módban, egyidejű konfliktusok észlelésével és megoldásával. Minden szerver saját helyi adathalmozását tárolja, amely szinkronizálva van más szerverekkel, amelyek offline üzemmódba kapcsolhatók és időnként replikálják a változtatásokat. Különösen ez a funkció teszi a CouchDB-t vonzó megoldássá a beállítások szinkronizálásához különböző számítógépek között. A CouchDB alapú megoldásokat olyan cégek vezették be, mint a BBC, az Apple és a CERN.
A CouchDB-hez intézett lekérdezések és az adatok indexelése a következő paradigmák szerint végezhetők el, , a JavaScript nyelv alkalmazásával a lekérdezési logika megformálásához. A rendszer magja Erlang nyelven íródott, amelyet a párhuzamos lekérdezéseket kiszolgáló elosztott rendszerek létrehozásához optimalizáltak. A View-szerver C nyelven készült, és a Mozilla projekt JavaScript motorjára épül. Az adatbázishoz HTTP protokollon keresztül, RESTful JSON API használatával lehet hozzáférni, amely lehetővé teszi az adatok elérését böngészőben futó webalkalmazásokból is.
Az adattárolási egységet egy dokumentum képviseli, amelynek egyedi azonosítója, verziója van, és tetszőleges számú névvel ellátott mezőt tartalmaz kulcs/érték formátumban. Az önállóan struktúrált adathalmazon belüli tetszőleges dokumentumok (aggregáció és lekérdezés) szervezésére a nézetek (view) kialakításának koncepcióját alkalmazzuk, amelynek meghatározásához JavaScript nyelvet használunk. A JavaScript segítségével ellenőrző funkciókat is definiálhatunk, amelyek biztosítják az adatok helyességét új dokumentumok hozzáadása során egy adott nézet keretein belül.
Forrás: opennet.ru
