MongoDB 4.4 (för närvarande i betaversion) rullas ut med huvudagendan för att ta itu med utvecklarförslag från MongoDB-communityt. Den här versionen har släppts för att utöka databasens förmåga att fungera i en bekväm och pålitlig skala, därför utvecklad enligt principen "användardriven teknik" för att möjliggöra att den levererar många förbättrade funktioner.
Förbättrade funktioner i MongoDB 4.4
Säkrade avläsningar
MongoDB query router problem läsförfrågningar parallellt med flera replikuppsättningar och dataresultat från den mest effektiva noden returneras, vilket minskar applikationens latens.
Definerbara delade nycklar
Lägga till suffix till en shard-nyckel efter att ha ändrat datadistribution under skalningsprocessen.
Speglade läsningar
Detta är en funktion som förvärmer cacher av sekundära repliker för att minska efterdyningarna av primärval som kan bli resultatet av planerat underhåll eller avbrott.
Aggregationsförbättringar
Aggregationsförbättring har olika förbättringar, inklusive att definiera och kostymera aggregationsuttryck, kombinera data från flera mongosamlingar till en enda resultatuppsättning, strängmanipulation och nya operatorer i arrayhantering. Följande är några av förbättringarna:
$ut
$out-operationen har förbättrats för att skicka insamlingsresultat till olika databaser i motsats till en tidigare version som bara kunde skicka till en samling i samma databas som aggression var.
$indexStats
$indexStats har nya fältutdata i MongoDB 4.4 som inkluderar fält:
byggnad | Det är en boolesk flagga, som indikerar indexet som byggs. |
spec | Specifikationsdokument för varje index |
skärva | Det specifika namnet på en shard vid behov |
$merge
I MongoDB 4.4 har $merge förbättrats för att skriva ut på samma samling som uppgraderas. Dessutom kan man också skriva ut i en samling som visas på pipelinen som $lookup.
$planCacheStats ändringar
$planCacheStats-tillståndet har förbättrats för att köra både mongod- och mongos-instanser i MongoDB 4.4. Dessutom har $planCacheSTats ett nytt fält känt som värdfältet när man kör mongo. PlanCache.list() är ett omslag för $planCacheStats aggregeringssteg.
$collStats ändringar
$collStats har gjorts för att acceptera query exec statistik under utökad dokumentation. Dessutom skannar Samling som fält med följande beskrivning;
Fältnamn | Beskrivning |
ej svansbar | Detta är ett 64-bitars heltal som utför en samlingsskanning på flera frågor som inte använder tailable cursor. |
totalt | Totalt är en samling av frågor som utförs samlingsskanning som inte använder en tailable markör. |
$unionWith Aggregation
MongoDB har lagt till $unionWith, en funktion som förenar samlingsuppsättningar, det vill säga den förenar resultaten av en pipeline från flera samlingar till en uppsättning.
$unionWith Syntax
$unionWith har följande allmänna syntax:
cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }
$unionWith har en förenklad version av syntax som används för att inkludera alla dokument från en samling:
{ $unionWith: "<collection>" } // include all documents from the specified collection
$accumulator-aggregation
$accumulator är en annan ny funktion i MongoDB 4.4 som specificerar en anpassad ackumulatoroperatör. Ackumulatorer är operatörer som inte ändrar tillstånd när dokument gör framsteg längs pipelinen. Du kan använda en $accumulator-operator för att köra JavaScript-funktioner som inte stöds av MongoDB. $accumulator finns i följande tre steg av pipeline:
- $bucket stage:Utmatar endast dokument som innehåller inte mindre än en dokumentinmatning.
- $group stage:Matar in dokument med angivet _id och matar ut ett dokument för varje särskild gruppering
- $bucketAuto stage:Den sorterar dokumentposter i specifika gruppnummer som kallas hinkar.
Syntax
Syntaxen för $accumulator är följande:
{ $accumulator:{
init: <code>,
initArgs: <array expression>, // Optional
accumulate: <code>,
accumulateArgs: <array expression>,
merge: <code>,
finalize: <code>, // Optional
lang: <string>
}}
$function Aggregation
$function aggregation definierar en aggregationsfunktion i JavaScript.
$function operator kan användas för att definiera funktioner för att använda beteenden som inte stöds av MongoDB
Syntaxen för $function är enligt nedan:
{
$function: {
body: <code>,
args: <array expression>,
lang: "js"
}
}
Andra funktioner som ingår i den senaste MongoDB 4.4-versionen är:skrivproblem, globala läsningar, strömreplikering, Återupptagbar initial synkronisering och Compound hashed shard.
Vad är nytt med MongoDB Replica Sets?
Återupptagbar initial synkronisering
MongoDB 4.4 har en funktion som försöker återuppta en avbruten synkroniseringsprocess.
Strömmande repliker
I de tidigare versionerna av MongoDB samlade sekundärer in batcher av oplog genom begäran utfärdad för att synkronisera från källan. Med MongoDB 4.4 kommer synkroniseringsprocesser från källor att skicka kontinuerliga strömmar av oplogposter till de sekundära synkroniseringsprocesserna.
Återställningskatalog
Från MongoDB 4.4 vid återställningen får samlingskatalogen namnet enligt samlingens UUID och samlingens namnutrymme.
Minsta bevarandeperiod för Oplog
Från MongoDB 4.4 och framåt är det möjligt att ange det minsta antal timmar du vill bevara en oploggpost.
Rekonfigurationsändringar av replikuppsättningar
MongoDB 4.4 har ett kommando som heter replSetReconfig som tillåter tillägg eller borttagning av högst en väljare åt gången. En annan ny funktion i MongoDB 4.4 är ändringarna av replSetGetConfig. MongoDB 4.4 replSetConfig kan stipulera en ny option åtagandeStatus.
Compound Hashed Shard Keys
Från och med MongoDB 4.4 kan du skärpa en samling med en sammansatt skärvnyckel med ett enda hashat fält. Före 4.4 stödde MongoDB inte sammansatta shard-nycklar med ett hashat fält. Sammansatt hashad skärning stöder funktioner som zonfördelning, där prefixet (d.v.s. det första) icke-hashade fältet eller fälten stöder zonintervall medan det hashade fältet stöder mer distribution av de skärdata. Följande operation skär till exempel en samling på en sammansatt hashad skärvnyckel som stöder zonfördelning:
sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)
Allmänna förbättringar av delade kluster
Indexkonsistenskontroller
I MongoDB 4.4, kontrollerar konfigurationsservern i huvudsak, som standard, efter filoegentligheter över skärvorna för fragmenterade samlingar. Kommandot serverStatus returnerar fältet shardedIndexConsistency för att rapportera om filoegentligheter när den körs på konfigurationsservern. I MongoDB 4.4 har du mer än en removeShard-operation i förväg. I tidigare anpassningar returnerar removeShard ett misstag om chansen att en annan removeShard-operation är i förväg.
Shard Key Limit
Från och med formulär 4.4 tar MongoDB bort 512-byte-begränsningen på shard-nyckeluppskattningen. För MongoDB 4.2 och tidigare kan en shard-nyckel inte överstiga 512 byte.
Förbättrad uppdatering av katalogcache
I MongoDB 4.4, om det finns en gammal bit, återupplivar katalogcachen den för att få en skärva som har biten.
MongoDB 4.4 har enableFinerGrainedCatalogCacheRefresh som är en parameter för att försämra återupplivandet av katalogcache. enableFinerGrainedCatalogCacheRefresh fokuserar på skärvan och använder det mer rutinerade katalogcache-återupplivningsbeteendet.
parametern enableFinerGrainedCatalogCacheRefresh är som standard true.
Fråge- och delningsförbättringar i MongoDB 4.4
MongoDB har en tradition av att kontinuerligt skala ut genom distribution av data till flera noder eller genom sharding. En shard-nyckel innehåller ett dokument eftersom shard-nyckeln för ett visst dokument endast kan ändras före en tilldelning och inte efter en tilldelning.
Utvecklingen av MongoDB har gjort det utmanande att omkalibrera skärvor av ett tillhandahållet innehåll i MongoDB. För att möjliggöra ombalansering har MongoDB 4.4-versionen introducerat förfiningsbara shard-nycklar som tillåter att dokument shard-nycklar modifieras.
Refinerbara shard-nycklar gör att en ändring av dokument shard-nycklar kan ändras genom att göra det möjligt för dokument som hör ihop på en shard att ändra sina krav och blir därför dynamiskt ombalanserade.
Ombalansering kan vara programmatiskt eller aggressivt beroende på hur användaren ser det över tid.
Andra förbättringar
Aggregation av MongoDB-samling när olika datauppsättningar tillåter frågor genom fackföreningar. En sådan förmåga möjliggör behandling av data annorlunda och inte som en separat ETL.
Data kan flyttas och konsolideras på servern och skickas till klienten, och processen kräver inte flera resor för att hantera ett komplett resultat.
$funktionen är en av kostymerad aggregering som möjliggör exekvering av mer komplexa aggregationer på serversidan och förbättrar databearbetningsprocessen.
Olika versioner av kostymprocedurer visas på den släppta MongoDB 4.4. De kostymklädda funktionerna har kopplats till den ökade prestandan hos betaversionen. Icke desto mindre anropas $funktion endast när andra kostymer och inbyggda funktioner inte är tillräckliga i den pågående processen.
MongoDB frågespråk och drivrutiner
- Anpassade aggregeringsutseenden har ägarfunktion som utökar MongoDB som en del av aggregeringskörningspipelinen.
- Union Aggregation har mer djupgående analys och utforskning genom att blanda data från flera samlingar i Union Aggregation-pipeline.
- Skrivproblem och Global Read för att skriva hållbarhet och konfigurera klusterläsisolering.
- Swift-drivrutiner och New Rust
- Utskalad flexibilitet och prestanda
- Strömmande replikering och simultan indexering minskar replikfördröjningen för att leverera data till användare i MongoDB 4.4.
- Resultaten returneras så snart som möjligt på grund av att Hedged Reads minimerar fördröjningen för p65 och p99 genom att skicka en läsbegäran till flera datarepliker i MongoDB.
- Behåller datalokalitet som sammansatta hashade nycklar fördelas jämnt över olika shards med deras shardnyckel.
- Inget system i centrum när man definierar och förfinar shard-nyckeln vid en given tidpunkt.
Förmåga och säkerhet
- Autentisering i MongoDB 4.4 beta är över 50 % snabbare och är TLS 1.3.
- Anslutning till MongoDB Atlas kräver AWS IASM-autentisering, vilket förenklar den molnbaserade säkerheten genom att återanvända tillfälliga Amazon IAM-uppgifter och befintliga vanliga.
- Återställer noder genom Resumable Initial sync som underlättar utskalningsprocessen genom att lägga till nya repliker. Minskad påverkan av primärvalen genom Mirrored Reads som värmer upp cachen på sekundären efter planerat underhåll eller avbrott.
Slutsats
MongoDB 4.4 har släppt lös en bättre upplevelse i en icke-relationell dokumentbaserad databas genom att förbättra prestandafunktionerna i sitt system. Förbättringarna har möjliggjort snabbare analytiska, operativa och transaktionsapplikationer med MongoDB 4.4.
MongoDB 4.4 har också tillåtit flexibilitet vid definition av datadistribution när kraven för driften ändras. Förbättringar som gjorts på MongoDB 4.4 har gjort den mer pålitlig när det gäller latens, sofistikering och säkerhetskontroll när du använder Mongo Atlas, som är molnet.