Zavádí se MongoDB 4.4 (aktuálně ve verzi beta) s hlavním programem řešení návrhů vývojářů z komunity MongoDB. Tato verze byla vydána proto, aby rozšířila schopnost databáze pracovat v pohodlném a spolehlivém měřítku, proto byla vyvinuta na principu „user-drive engineering“ a umožnila jí poskytovat četné vylepšené funkce.
Vylepšené funkce v MongoDB 4.4
Zajištěná čtení
Směrovač dotazů MongoDB vydává požadavky na čtení paralelně s více sadami replik a vrací se výsledky dat z nejúčinnějšího uzlu, čímž se snižuje latence aplikace.
Definovatelné sdílené klíče
Přidání přípon ke zlomkovému klíči po úpravě distribuce dat během procesu škálování.
Zrcadlové čtení
Toto je funkce, která předehřívá mezipaměti sekundárních replik, aby se omezily následky primárních voleb, které mohou být důsledkem plánované údržby nebo výpadků.
Vylepšení agregace
Vylepšení agregace má různá vylepšení, včetně definování a přizpůsobení agregačních výrazů, kombinování dat z více kolekcí mongo do jedné sady výsledků, manipulace s řetězci a nových operátorů při práci s poli. Následují některá vylepšení:
$out
Operace $out byla vylepšena pro výstup výsledků shromažďování do různých databází, na rozdíl od dřívější verze, která mohla vydávat pouze kolekci ve stejné databázi, jakou byla agrese.
$indexStats
$indexStats má v MongoDB 4.4 nové výstupy polí, které zahrnují pole:
budova | Je to booleovský příznak, který označuje, že se index vytváří. |
spec | Specifikační dokument pro každý index |
útržek | Konkrétní název fragmentu, je-li vyžadován |
$merge
V MongoDB 4.4 byl $merge vylepšen tak, aby vystupoval ve stejné kolekci, která je upgradována. Kromě toho lze také vytvořit výstup v kolekci, která se objeví v kanálu jako $lookup.
Změny $planCacheStats
stav $planCacheStats byl vylepšen, aby v MongoDB 4.4 spouštěl instance mongod i mongos. Navíc má $planCacheSTats při spuštění mongo nové pole známé jako pole hostitele. PlanCache.list() je obal pro fázi agregace $planCacheStats.
Změny $collStats
$collStats byl vytvořen, aby akceptoval statistiky exec dotazu během dokumentace rozšíření. Kolekce navíc prohledává jako pole s následujícím popisem;
Název pole | Popis |
nonTailble | Toto je 64bitové celé číslo, které provádí skenování kolekce u několika dotazů, které nepoužívají upravitelný kurzor. |
celkem | Total je sbírka dotazů provedených skenováním kolekce, která nepoužívá kurzor pro sledování. |
$unionWith Agregation
MongoDB přidal $unionWith, funkci, která sjednocuje sady kolekcí, to znamená, že spojuje výsledky kanálu z několika kolekcí do jedné sady.
$unionWith syntaxe
$unionWith má následující obecnou syntaxi:
cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }
$unionWith má zjednodušenou verzi syntaxe, která se používá k zahrnutí všech dokumentů z kolekce:
{ $unionWith: "<collection>" } // include all documents from the specified collection
Agregace $accumulator
$accumulator je další nová funkce v MongoDB 4.4, která určuje vlastní operátor akumulátoru. Akumulátory jsou operátoři, kteří nemění stav, jak dokumenty postupují podél potrubí. Operátor $accumulator můžete použít k provádění funkcí JavaScriptu, které MongoDB nepodporuje. $accumulator se nachází v následujících třech fázích potrubí:
- fáze $bucket:Vydává pouze dokumenty obsahující minimálně jeden vstupní dokument.
- $group stage:Vkládá dokumenty podle zadaného _id a vydává dokument pro každé konkrétní seskupení
- $bucketAuto stage:Třídí záznamy dokumentů do konkrétních skupinových čísel známých jako segmenty.
Syntaxe
Syntaxe $accumulator je následující:
{ $accumulator:{
init: <code>,
initArgs: <array expression>, // Optional
accumulate: <code>,
accumulateArgs: <array expression>,
merge: <code>,
finalize: <code>, // Optional
lang: <string>
}}
Agregace $function
$function aggregation definuje agregační funkci v JavaScriptu.
Operátor $function lze použít k definování funkcí pro použití chování, které MongoDB nepodporuje
Syntaxe $funkce je následující:
{
$function: {
body: <code>,
args: <array expression>,
lang: "js"
}
}
Další funkce zahrnuté v nejnovější verzi MongoDB 4.4 jsou:problémy se zápisem, globální čtení, replikace streamu, obnovitelná počáteční synchronizace a složený hashový fragment.
Co je nového u sad replik MongoDB?
Obnovitelná počáteční synchronizace
MongoDB 4.4 má funkci, která se pokouší obnovit přerušený proces synchronizace.
Streamování replikací
V předchozích verzích MongoDB sekundární uživatelé shromažďovali dávky oplogů na základě žádosti vydané k synchronizaci ze zdroje. S MongoDB 4.4 budou synchronizační procesy ze zdrojů odesílat nepřetržité proudy záznamů oplog do sekundárních synchronizačních procesů.
Adresář pro vrácení změn
Od verze MongoDB 4.4 při vrácení zpět je adresář kolekce pojmenován podle UUID kolekce a jmenného prostoru kolekce.
Minimální doba uchování protokolu
Od MongoDB 4.4 dále je možné určit nejmenší počet hodin, po které chcete zachovat záznam oplogu.
Změny konfigurace sady replik
MongoDB 4.4 má příkaz nazvaný replSetReconfig, který umožňuje přidání nebo odebrání ne více než jednoho voliče najednou. Další novou funkcí v MongoDB 4.4 jsou změny v replSetGetConfig. MongoDB 4.4 replSetConfig může stanovit novou možnost commitStatus.
Složené hashované Shard Keys
Počínaje MongoDB 4.4 můžete sbírku fragmentovat pomocí složeného klíče fragmentu s jedním hashovaným polem. Před verzí 4.4 MongoDB nepodporoval složené klíče fragmentů s hashovaným polem. Složené hašované dělení podporuje funkce jako zónové dělení, kde předpona (tj. první) nehašované pole nebo pole podporují zónu, zatímco hašované pole podporuje větší distribuci střídavých dat. Například následující operace rozdělí kolekci na složeném hashovaném klíči, který podporuje zónové sharding:
sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)
Obecná vylepšení sdílených clusterů
Kontrola konzistence indexu
V MongoDB 4.4 konfigurační server v podstatě ve výchozím nastavení kontroluje nesrovnalosti v souborech nad úlomky, zda neobsahují střepy. Příkaz serverStatus vrací pole shardedIndexConsistency pro hlášení o nesrovnalostech souboru při spuštění na konfiguračním serveru nezbytně nutné. V MongoDB 4.4 budete mít předem více než jednu operaci removeShard. V předchozích úpravách funkce removeShard vrací chybu v případě, že je v předstihu další operace removeShard.
Limit zlomkových klíčů
Počínaje formulářem 4.4 odstraňuje MongoDB 512bajtové omezení odhadu shard key. Pro MongoDB 4.2 a starší nemůže zlomkový klíč překročit 512 bajtů.
Vylepšená aktualizace mezipaměti katalogu
V MongoDB 4.4, v případě, že existuje starý blok, mezipaměť katalogu jej oživí a získá fragment, který tento blok obsahuje.
MongoDB 4.4 má enableFinerGrainedCatalogCacheRefresh, což je parametr pro omezení obnovy mezipaměti katalogu. enableFinerGrainedCatalogCacheRefresh se zaměřuje na fragment a využívá zkušenější chování při oživování mezipaměti katalogu.
Parametr enableFinerGrainedCatalogCacheRefresh má výchozí hodnotu true.
Vylepšení dotazů a sdílení v MongoDB 4.4
MongoDB má tradici neustálého škálování prostřednictvím distribuce dat do více uzlů nebo pomocí shardingu. Sdílený klíč obsahuje dokument, protože zlomkový klíč daného dokumentu lze změnit pouze před přiřazením, nikoli po přiřazení.
Evoluce MongoDB ztížila rekalibraci útržků poskytnutého obsahu v MongoDB. Aby bylo možné znovu vyvážit, vydání MongoDB 4.4 zavedlo upravitelné skartové klíče, které umožňují upravovat skartované klíče dokumentů.
Upravitelné zlomkové klíče umožňují změnu ve zlomkových klíčích dokumentu tím, že umožní dokumentům, které k sobě na zlomku patří, změnit své požadavky, a tím se dynamicky znovu vyváží.
Rebalancování může probíhat programově nebo agresivně v závislosti na tom, jak se na to uživatel v průběhu času dívá.
Další vylepšení
Agregace shromažďování MongoDB, když různé datové sady umožňují dotazy prostřednictvím Union. Taková schopnost umožňuje zacházet s daty odlišně a nikoli jako se samostatným ETL.
Data lze přesouvat a konsolidovat na serveru a předat klientovi a proces nevyžaduje vícenásobné cesty ke správě úplného výsledku.
funkce $ patří mezi kostýmovanou agregaci, která umožňuje provádění složitějších agregací na straně serveru a zlepšuje proces zpracování dat.
Ve vydané MongoDB 4.4 se objevují různé verze kostýmovaných procedur. Kostýmované funkce byly spojeny se zvýšeným výkonem beta verze. Nicméně $funkce je vyvolána pouze tehdy, když jiné kostýmované a vestavěné funkce nejsou v probíhajícím procesu dostatečné.
Dotazovací jazyk a ovladače MongoDB
- Vlastní vzhledy agregace mají funkci vlastníků rozšiřujících MongoDB jako součást procesu provádění agregace.
- Union Aggregation má podrobnější analýzu a prozkoumání prostřednictvím slučování dat z více kolekcí do kanálu Union Aggregation.
- Zápis o obavách a globální čtení pro trvanlivost zápisu a konfiguraci izolace čtení clusteru.
- Ovladače Swift a New Rust
- Škálovaná flexibilita a výkon
- Streamování replikace a simultánní indexování snižuje zpoždění replik při poskytování dat uživatelům v MongoDB 4.4.
- Výsledky jsou vráceny co nejdříve, protože Hedged Reads minimalizuje latence p65 a p99 odesláním požadavku na čtení do více replik dat v MongoDB.
- Zachování datové lokality, protože složené hashované klíče jsou rovnoměrně rozmístěny mezi různými fragmenty pomocí jejich fragmentu.
- Žádný systém v centru při definování a zpřesňování shard key v kteroukoli danou chvíli.
Odolnost a zabezpečení
- Ověřování v MongoDB 4.4 beta je o více než 50 % rychlejší a je TLS 1.3.
- Připojení k MongoDB Atlas vyžaduje AWS IASM Authentication, které zjednodušuje cloudové nativní zabezpečení opětovným použitím dočasných přihlašovacích údajů Amazon IAM a stávajících běžných.
- Obnovuje uzly pomocí Resumable Initial synchronizace, která usnadňuje proces škálování přidáním nových replik. Snížený dopad primárních voleb díky zahřívání zrcadlených čtení mezipaměti sekundárních po plánované údržbě nebo výpadku.
Závěr
MongoDB 4.4 uvolnil lepší zkušenosti s nerelační databází založenou na dokumentech zlepšením funkcí výkonu ve svém systému. Vylepšení umožnila rychlejší analytické, provozní a transakční aplikace s MongoDB 4.4.
MongoDB 4.4 také umožnil flexibilitu při definování distribuce dat, když se mění požadavky provozu. Vylepšení provedené na MongoDB 4.4 jej učinilo spolehlivějším, pokud jde o latenci, sofistikovanost a kontrolu zabezpečení při používání Mongo Atlas, což je cloud.