sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvad er nyt i MongoDB 4.4

MongoDB 4.4 (aktuelt i beta) er ved at blive udrullet med hoveddagsordenen for at adressere udviklerforslag fra MongoDB-fællesskabet. Denne version er blevet frigivet for at øge databasens evne til at fungere i en bekvem og pålidelig skala, og er derfor udviklet under "brugerdrevet teknik"-princippet for at give den mulighed for at levere adskillige forbedrede funktioner.

Forbedrede funktioner i MongoDB 4.4

Hedged Reads

MongoDB-forespørgselsrouter udsender læseanmodninger parallelt med flere replikasæt, og dataresultater fra den mest effektive node returneres, hvilket reducerer applikationsforsinkelsen.

Definerbare delte nøgler

Tilføjelse af suffikser til en shard-nøgle efter ændring af datadistribution under skaleringsprocessen.

Spejlede læsninger

Dette er en funktion, der forvarmer caches af sekundære replikaer for at reducere eftervirkningerne af primærvalg, der kan være et resultat af planlagt vedligeholdelse eller udfald.

Aggregationsforbedringer

Aggregationsforbedring har forskellige forbedringer, herunder definering og kostumering af aggregeringsudtryk, kombination af data fra flere mongo-samlinger til et enkelt resultatsæt, strengmanipulation og nye operatører i matrixhåndtering. Følgende er nogle af forbedringerne:

$ud

$out-operationen er blevet forbedret til at udsende indsamlingsresultater til forskellige databaser i modsætning til en tidligere version, der kun kunne udsende til en samling i den samme database, som aggression var.

$indexStats

$indexStats har nye feltoutput i MongoDB 4.4, som inkluderer felter:

bygning

Det er et boolsk flag, som angiver det indeks, der bygges.

spec

Specifikationsdokument for hvert indeks

shard

Det specifikke navn på et shard, hvis det kræves

$merge

I MongoDB 4.4 er $merge blevet forbedret til output på den samme samling, som er ved at blive opgraderet. Derudover kan man også output i en samling, der vises på pipelinen som $lookup.

$planCacheStats Ændringer

$planCacheStats-tilstand er blevet forbedret til at køre både mongod- og mongos-forekomster i MongoDB 4.4. Desuden har $planCacheSTats et nyt felt kendt som værtsfeltet, når man kører mongo. PlanCache.list() er en indpakning for $planCacheStats aggregeringsstadiet.

$collStats Ændringer

$collStats er blevet lavet til at acceptere forespørgslens exec-statistikker under udvidet dokumentation. Derudover scanner Samling som felter med følgende beskrivelse;

Feltnavn

Beskrivelse

ikke-halebar

Dette er et 64-bit heltal, der udfører en samlingsscanning på flere forespørgsler, der ikke bruger tailable cursor.

i alt

Total er en samling af forespørgsler udført samlingsscanning, som ikke bruger en tailable cursor.

$unionWith Aggregation

MongoDB har tilføjet $unionWith, en funktion, der forener samlingssæt, dvs. den forener resultater af en pipeline fra flere samlinger til ét sæt.

$unionWith Syntax

$unionWith har følgende generelle syntaks:

cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }

$unionWith har en forenklet version af syntaks, som bruges til at inkludere alle dokumenter fra en samling:

{ $unionWith: "<collection>" }  // include all documents from the specified collection

$accumulator-sammenlægning

$accumulator er en anden ny funktion i MongoDB 4.4, der specificerer en brugerdefineret akkumulatoroperatør. Akkumulatorer er operatører, der ikke ændrer tilstand, efterhånden som dokumenter gør fremskridt langs pipelinen. Du kan bruge en $accumulator-operator til at udføre JavaScript-funktioner, der ikke understøttes af MongoDB. $accumulator findes i de følgende tre stadier af pipeline:

  1. $bucket stage:Udskriver kun dokumenter, der indeholder ikke mindre end én dokumentinput.
  2. $group stage:Indlæser dokumenter med specificeret _id og udlæser et dokument for hver bestemt gruppering
  3. $bucketAuto stage:Det sorterer dokumentindtastninger i specifikke gruppenumre kendt som buckets.

Syntaks

Syntaksen for $accumulator er som følger:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$function aggregation

$function aggregation definerer en aggregeringsfunktion i JavaScript.

$funktionsoperator kan bruges til at definere funktioner til at bruge adfærd, der ikke understøttes af MongoDB

Syntaksen for $function er som nedenfor:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Andre funktioner inkluderet i den seneste MongoDB 4.4-version er:skriveproblemer, globale læsninger, streamreplikering, Genoptagelig initial synkronisering og sammensat hashed shard.

Hvad er nyt med MongoDB Replica Sets?

Genoptagelig indledende synkronisering

MongoDB 4.4 har en funktion, der forsøger at genoptage en afbrudt synkroniseringsproces.

Streamende replikationer

I de tidligere versioner af MongoDB indsamlede sekundære partier af oplog efter anmodning udstedt for at synkronisere fra kilden. Med MongoDB 4.4 vil synkroniseringsprocesser fra kilder sende kontinuerlige strømme af oplog-indgange til de sekundære synkroniseringsprocesser.

Rollback Directory

Fra MongoDB 4.4 ved tilbagerulningen får samlingsmappen navnet i henhold til samlingens UUID og samlingens navneområde.

Minimum Oplog-opbevaringsperiode

Fra MongoDB 4.4 og frem er det muligt at angive det mindste antal timer, du ønsker at bevare en oplog-indgang.

Repica Set Reconfiguration Changes

MongoDB 4.4 har en kommando kaldet replSetReconfig, der tillader tilføjelse eller fjernelse af ikke mere end én vælger ad gangen. En anden ny funktion i MongoDB 4.4 er ændringerne til replSetGetConfig. MongoDB 4.4 replSetConfig kan angive en ny option-forpligtelseStatus.

Compound Hashed Shard Keys

Startende i MongoDB 4.4 kan du sønderdele en samling ved hjælp af en sammensat shard-nøgle med et enkelt hashed felt. Før 4.4 understøttede MongoDB ikke sammensatte shard-nøgler med et hash-felt. Sammensat hashed sharding understøtter funktioner som zone sharding, hvor præfikset (dvs. det første) ikke-hashed felt eller felter understøtter zoneområder, mens det hasherede felt understøtter mere distribution af de shardede data. Følgende handling skærer f.eks. en samling på en sammensat hashed shard-nøgle, der understøtter zoneinddelt sharding:

sh.shardCollection(

  "examples.compoundHashedCollection",

  { "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }

)

Generelle forbedringer af Sharded Clusters

Indekskonsistenstjek

I MongoDB 4.4 kontrollerer konfigurationsserveren i det væsentlige, som standard, for filuregelmæssigheder over shards for sharded samlinger. Kommandoen serverStatus returnerer feltet shardedIndexConsistency for at rapportere om filuregelmæssigheder, når den kører på konfigurationsserveren. I MongoDB 4.4 har du mere end én removeShard-handling i forvejen. I tidligere tilpasninger returnerer removeShard en fejl ved chancen for, at en anden removeShard-operation er på forhånd.

Shard Key Limit

Begyndende i formular 4.4 udviser MongoDB 512-byte-begrænsningen på shard-nøgleestimatet. For MongoDB 4.2 og tidligere kan en shard-nøgle ikke overstige 512 bytes.

Forbedret katalogcacheopdatering

I MongoDB 4.4, i tilfælde af at der er en gammel del, genopliver katalogcachen den for at få et skår, der har del.

MongoDB 4.4 har enableFinerGrainedCatalogCacheRefresh, som er en parameter til at forringe genoplivning af katalogcache. enableFinerGrainedCatalogCacheRefresh fokuserer på shard og udnytter den mere erfarne katalogcache-genoplivningsadfærd.

enableFinerGrainedCatalogCacheRefresh-parameteren er som standard sand.

Forespørgsels- og Sharding-forbedringer i MongoDB 4.4

MongoDB har en tradition for løbende at skalere ud gennem distribution af data til flere noder eller gennem sharding. En shard-nøgle indeholder et dokument, fordi shard-nøglen for et givent dokument kun kan ændres før en opgave og ikke efter en opgave.

Udviklingen af ​​MongoDB har gjort det udfordrende at omkalibrere shards af et givet indhold i MongoDB. For at muliggøre rebalancering har MongoDB 4.4-udgivelsen introduceret raffinerbare shard-nøgler, der tillader, at dokumenter, shard-nøgler kan ændres.

Refinerbare shard-nøgler gør det muligt at ændre en ændring i dokument-shard-nøgler ved at gøre det muligt for dokumenter, der hører sammen på et shard, at ændre deres krav og bliver derfor dynamisk rebalanceret.

Rebalancering kan være programmatisk eller aggressivt afhængigt af, hvordan brugeren ser det over tid.

Andre forbedringer

Aggregation af MongoDB-samling, når forskellige datasæt tillader forespørgsler gennem fagforeninger. En sådan mulighed gør det muligt at behandle data anderledes og ikke som en separat ETL.

Data kan flyttes og konsolideres på serveren og videregives til klienten, og processen kræver ikke flere ture for at administrere et komplet resultat.

$funktion er blandt de kostumerede aggregering, der muliggør udførelse af mere komplekse aggregeringer på serversiden og forbedrer databehandlingsprocessen.

Forskellige versionskostumerede procedurer vises på den udgivne MongoDB 4.4. De udklædte funktioner er blevet forbundet med den øgede ydeevne af betaversionen. Ikke desto mindre aktiveres $funktion kun, når andre kostumerede og indbyggede funktioner ikke er tilstrækkelige i den igangværende proces.

MongoDB-forespørgselssprog og -drivere

  1. Custom Aggregation-optrædener har ejerfunktion, der udvider MongoDB som en del af aggregeringsudførelsespipeline.
  2. Union Aggregation har mere dybdegående analyse og udforskning ved at blande data fra flere samlinger ind i Union Aggregation-pipelinen.
  3. Skriveproblemer og Global Read for at skrive holdbarhed og konfigurere klyngelæseisolering.
  4. Swift-drivere og New Rust
  5. Udskaleret fleksibilitet og ydeevne
  6. Streaming-replikering og samtidig indeksering reducerer replika-forsinkelse for at levere data til brugere i MongoDB 4.4.
  7. Resultater returneres så hurtigt som muligt på grund af Hedged Reads, der minimerer p65- og p99-forsinkelser ved at indsende en læseanmodning til flere datareplikaer i MongoDB.
  8. Bevarelse af datalokalitet som sammensatte hashed-nøgler fordeles jævnt på tværs af forskellige shards med deres shard-nøgle.
  9. Intet system i centrum, når man definerer og forfiner shard-nøglen på et givet tidspunkt.

Modstyrke og sikkerhed

  1. Godkendelse i MongoDB 4.4 beta er over 50 % hurtigere og er TLS 1.3.
  2. Forbindelse til MongoDB Atlas kræver AWS IASM-godkendelse, som forenkler den cloud-native sikkerhed ved at genbruge midlertidige Amazon IAM-legitimationsoplysninger og eksisterende regulære.
  3.  Genopretter noder ved Genoptagelig indledende synkronisering, der letter udskaleringsprocessen ved at tilføje nye replikaer. Reduceret indvirkning af primærvalg ved Mirrored Reads, der opvarmer gemmerne på sekundært efter planlagt vedligeholdelse eller udfald.

Konklusion

MongoDB 4.4 har udløst en bedre oplevelse i en ikke-relationel dokumentbaseret database ved at forbedre ydeevnefunktionerne i systemet. Forbedringerne har muliggjort hurtigere analytiske, operationelle og transaktionelle applikationer med MongoDB 4.4.

MongoDB 4.4 har også tilladt fleksibilitet ved definition af datadistribution, efterhånden som kravene til driften ændres. Forbedringer foretaget på MongoDB 4.4 har gjort det mere pålideligt med hensyn til latens, sofistikering og sikkerhedskontrol, mens du bruger Mongo Atlas, som er skyen.


  1. HBase:5 tips til at køre på EC2 med lav hukommelse

  2. Smukt print i MongoDB shell som standard

  3. Fjern automatisk referenceobjekter ved sletning i MongoDB

  4. Samlet $lookup med C#