Po roce vývoje byla představena verze dokumentově orientované databázové SYSTÉMY MongoDB 6.0, která se nachází mezi rychlými a škálovatelnými systémy pracujícími s daty ve formátu klíč/hodnota a relačními databázovými SYSTÉMY, které jsou funkční a snadno se vytvářejí dotazy. Kód MongoDB je napsán v jazyce C++ a je distribuován pod licencí SSPL, která je založena na licenci AGPLv3, ale není otevřená, protože obsahuje diskriminační požadavek poskytnout pod licencí SSPL nejen kód samotné aplikace, ale také zdrojové texty všech komponent účastnících se poskytování cloudové služby.
MongoDB podporuje ukládání dokumentů v JSON-podobném formátu, má dostatečně flexibilní jazyk pro vytváření dotazů, může vytvářet indexy pro různé uložené atributy, efektivně zajišťuje ukládání velkých binárních objektů, podporuje protokolování operací při změně a přidávání dat do databáze, může pracovat v souladu s paradigmatem Map/Reduce, podporuje replikaci a budování odolných konfigurací.
V MongoDB jsou k dispozici vestavěné prostředky pro zajištění segmentace (distribuce datové sady na servery na základě určitého klíče), v kombinaci s replikací umožňující vybudovat horizontálně škálovatelný skladovací cluster, ve kterém není jediný bod selhání (selhání jakéhokoli uzlu nemá vliv na funkci databáze), podporuje automatické obnovení po selhání a přenos zátěže z nefunkčního uzlu. Rozšíření clusteru nebo transformace jednoho serveru do clustru se provádí bez přerušení práce databáze prostým přidáním nových strojů.
Hlavní vlastnosti nového vydání:
- Byla implementována možnost provádění dotazů, které pokrývají data uložená zašifrovaným způsobem (Queryable Encryption). Data se dešifrují na straně uživatele a během zpracování dotazu zůstávají zašifrovaná (dotaz se provádí na zašifrovaných datech, aniž by byla předem dešifrována). V aktuální podobě jsou v dotazech povoleny pouze výrazy porovnání, ale v budoucnu se plánuje přidat podporu pro kontrolu rozsahů, prefixů, sufixů, podřetězců a dalších operací.
- Byly rozšířeny možnosti spojené s ukládáním dat ve formě časových řad (time series collections), optimalizovaných pro ukládání výřezů hodnot parametrů zaznamenávaných v určitých časových intervalech (čas a soubor odpovídajících hodnot v tomto čase), například obava o uchovávání podobných dat vzniká v monitorovacích systémech, finančních platformách a systémech pro dotazování stavů senzorů. V nové verzi byla přidána možnost použití sekundárních a složených indexů s kolekcemi dat ve formě časových řad. Byla přidána podpora připojení dalších dat, například geografických informací pro zohlednění vzdálenosti a polohy. Byla zvýšena výkonnost čtení, provádění dotazů a třídění.
- Byly přidány nové nástroje pro sledování změn ("změnové toky", API Change Streams), pomocí nichž lze organizovat odesílání upozornění aplikacím o změně dat v databázi. Informace o změnách přicházejí v reálném čase a umožňují vytvářet aplikace pomocí metod reaktivního a událostmi řízeného programování. Události jsou zpracovávány pomocí metody watch, při čemž je možné filtrovat a agregovat potřebné události pomocí operátorů $match, $project a $redact. V nové verzi byla nabídnuta možnost získání předchozího a následujícího stavu dokumentu (například když je dokument smazán nebo změněn). Kromě operací s využitím jazyka DML (data manipulation language) byla poskytnuta podpora operací DDL (data definition language), jako je vytváření a mazání indexů a kolekcí. Byly přidány nástroje pro filtrování asociovaných upozornění.
- V operátorech $lookup a $graphlookup byla implementována kompletní podpora pro šardované (sharded) úložiště. Byla optimalizována výkonnost operace $lookup, například při přítomnosti indexu na cizím klíči se porovnávání malého počtu dokumentů nyní provádí 5-10krát rychleji, zatímco velkého počtu - dvakrát rychleji. Pro porovnání bez použití indexů může nárůst výkonnosti dosáhnout 100krát.
- Byla dána možnost provádět složité analytické dotazy nad konzistentními průřezy (snapshot) stavu pracovních dat. Takové analytické dotazy mohou pokrývat několik segmentů ve velkých distribuovaných konfiguracích MongoDB.
- Byly přidány nové operátory $maxN, $minN a $lastN pro určení hodnot v sadě dat, stejně jako operátor $sortArray pro třídění prvků pole.
- Byla výrazně zvýšena efektivita segmentace. Výchozí velikost bloku pro segmentovanou kolekci byla zvýšena na 128 MB. Byla přidána příkaz configureCollectionBalancing pro defragmentaci segmentované kolekce.
- Do nástrojů klientského šifrování dat na úrovni polí (CSFLE, client-side field-level encryption) byla přidána podpora pro klíčové poskytovatele kompatibilní s KMIP.
- Byla přidána možnost komprese a šifrování auditního logu, který zaznamenává aktivitu uživatelů SGBD.
- Byl implementován experimentální režim synchronizace dat mezi clustery MongoDB (Cluster-to-Cluster Sync).
Zdroj: opennet.ru
