sql >> Database >  >> NoSQL >> MongoDB

Wat is er nieuw in MongoDB 4.4

MongoDB 4.4 (momenteel in bèta) wordt uitgerold met als belangrijkste agenda het aanpakken van ontwikkelaarssuggesties van de MongoDB-gemeenschap. Deze versie is uitgebracht om het vermogen van de database om op een handige en betrouwbare schaal te werken te vergroten, en is daarom ontwikkeld volgens het "user-driven engineering"-principe om tal van verbeterde functies te bieden.

Verbeterde functies in MongoDB 4.4

Hedged Reads

MongoDB-queryrouter geeft leesverzoeken parallel aan meerdere replicasets en gegevensresultaten van het meest efficiënte knooppunt worden geretourneerd, waardoor de applicatielatentie wordt verminderd.

Definieerbare gedeelde sleutels

Suffixen toevoegen aan een Shard-sleutel na het wijzigen van de gegevensdistributie tijdens het schaalproces.

Gespiegelde leesteksten

Dit is een functie die caches van secundaire replica's voorverwarmt om de nasleep van primaire verkiezingen te verminderen die het gevolg kunnen zijn van gepland onderhoud of uitval.

Aggregatieverbeteringen

Aggregatieverbetering heeft verschillende verbeteringen, waaronder het definiëren en aanpassen van aggregatie-expressies, het combineren van gegevens uit meerdere mongo-verzamelingen in een enkele resultaatset, manipulatie van strings en nieuwe operators bij het afhandelen van arrays. Hier volgen enkele van de verbeteringen:

$uit

$out-bewerking is verbeterd om collectieresultaten naar verschillende databases uit te voeren, in tegenstelling tot een eerdere versie die alleen uitvoer naar een collectie in dezelfde database die agressie was.

$indexStats

$indexStats heeft nieuwe velduitvoer in MongoDB 4.4 die velden bevat:

gebouw

Het is een Booleaanse vlag, die aangeeft dat de index wordt gebouwd.

spec

Specificatiedocument voor elke index

shard

De specifieke naam van een shard indien nodig

$merge

In MongoDB 4.4 is $merge verbeterd zodat het wordt uitgevoerd op dezelfde collectie die wordt geüpgraded. Bovendien kan men ook een verzameling uitvoeren die in de pijplijn verschijnt, zoals de $lookup.

$planCacheStats-wijzigingen

$planCacheStats-status is verbeterd om zowel mongod- als mongos-instanties in MongoDB 4.4 uit te voeren. Bovendien heeft $planCacheSTAts een nieuw veld dat bekend staat als het hostveld bij het uitvoeren van mongo. PlanCache.list() is een wrapper voor de $planCacheStats-aggregatiefase.

$collStats-wijzigingen

$collStats is gemaakt om de query-exec-statistieken te accepteren tijdens augment-documentatie. Bovendien scant collectie als velden met de volgende beschrijving;

Veldnaam

Beschrijving

nonTailble

Dit is een 64-bits geheel getal dat een collectiescan uitvoert op verschillende zoekopdrachten die geen staartbare cursor gebruiken.

totaal

Totaal is een verzameling uitgevoerde zoekopdrachten voor verzamelingsscans die geen staartbare cursor gebruikt.

$unionWith Aggregation

MongoDB heeft $unionWith toegevoegd, een functie die verzamelingssets verenigt, dat wil zeggen, het verenigt de resultaten van een pijplijn van verschillende verzamelingen in één set.

$unionWith-syntaxis

$unionWith heeft de volgende algemene syntaxis:

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

$unionWith heeft een vereenvoudigde versie van de syntaxis die wordt gebruikt om alle documenten uit een verzameling op te nemen:

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

$accumulator-aggregatie

$accumulator is een andere nieuwe functie in MongoDB 4.4 die een aangepaste accumulator-operator specificeert. Accumulatoren zijn operators die niet van status veranderen naarmate documenten in de pijplijn vorderen. U kunt een $accumulator-operator gebruiken om JavaScript-functies uit te voeren die niet worden ondersteund door MongoDB. $accumulator wordt gevonden in de volgende drie fasen van de pijplijn:

  1. $bucket stage:voert alleen documenten uit die niet minder dan één documentinvoer bevatten.
  2. $groepsfase:voert documenten in op gespecificeerde _id en voert een document uit voor elke specifieke groepering
  3. $bucketAuto stage:het sorteert documentinvoer in specifieke groepsnummers die bekend staan ​​als buckets.

Syntaxis

De syntaxis voor $accumulator is als volgt:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$function Aggregation

$function aggregation definieert een aggregatiefunctie in JavaScript.

$function operator kan worden gebruikt om functies te definiëren om gedrag te gebruiken dat niet wordt ondersteund door MongoDB

De syntaxis voor $function is als volgt:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Andere functies in de nieuwste MongoDB 4.4-versie zijn:schrijfproblemen, globale leesbewerkingen, streamreplicatie, hervatbare initiële synchronisatie en samengestelde gehashte shard.

Wat is er nieuw aan MongoDB-replicasets?

Hervatbare initiële synchronisatie

MongoDB 4.4 heeft een functie die probeert een onderbroken synchronisatieproces te hervatten.

Streaming-replicaties

In de vorige versies van MongoDB verzamelden secondaries batches oplog op verzoek om te synchroniseren vanaf de bron. Met MongoDB 4.4 sturen synchronisatieprocessen uit bronnen continue stromen van oplog-items naar de secundaire synchronisatieprocessen.

Rollback-map

Vanaf MongoDB 4.4 bij het terugdraaien krijgt de collectiedirectory de naam volgens de UUID van de collectie en de collectienaamruimte.

Minimale Oplog-retentieperiode

Vanaf MongoDB 4.4 is het mogelijk om het minste aantal uren op te geven dat u een oplog-item wilt bewaren.

Replica Set herconfiguratiewijzigingen

MongoDB 4.4 heeft een commando genaamd replSetReconfig waarmee niet meer dan één kiezer tegelijk kan worden toegevoegd of verwijderd. Een andere nieuwe functie in MongoDB 4.4 zijn de wijzigingen in replSetGetConfig. De MongoDB 4.4 replSetConfig kan een nieuwe optie commitmentStatus bepalen.

Samengestelde gehashte Shard-sleutels

Vanaf MongoDB 4.4 kunt u een verzameling sharden met een samengestelde shardsleutel met een enkel gehasht veld. Vóór 4.4 ondersteunde MongoDB geen samengestelde shard-sleutels met een gehasht veld. Samengestelde gehashte sharding ondersteunt functies zoals zone-sharding, waarbij het prefix (d.w.z. eerste) niet-gehashte veld of velden zonebereiken ondersteunen, terwijl het gehashte veld meer distributie van de shard-gegevens ondersteunt. De volgende bewerking vernietigt bijvoorbeeld een verzameling op een samengestelde gehashte shardsleutel die gezoneerde sharding ondersteunt:

sh.shardCollection(

  "examples.compoundHashedCollection",

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

)

Algemene verbeteringen aan Sharded-clusters

Consistentiecontroles van indexen

In MongoDB 4.4 controleert de configuratieserver in wezen standaard op bestandsonregelmatigheden over de shards voor shard-collecties. De opdracht serverStatus retourneert het veld shardedIndexConsistency om te rapporteren over bestandsonregelmatigheden wanneer deze op de essentiële configuratieserver wordt uitgevoerd. In MongoDB 4.4 heb je vooraf meer dan één removeShard-bewerking. In eerdere aanpassingen retourneert removeShard een fout met de kans dat een andere removeShard-bewerking vooraf gaat.

Shard-sleutellimiet

Vanaf formulier 4.4 verwijdert MongoDB de beperking van 512 bytes voor de schatting van de Shard-sleutel. Voor MongoDB 4.2 en eerder kan een Shard-sleutel niet groter zijn dan 512 bytes.

Verbeterde cataloguscache vernieuwen

In MongoDB 4.4, als er een oud stuk is, wordt het door de cataloguscache nieuw leven ingeblazen om een ​​scherf te krijgen met het stuk.

MongoDB 4.4 heeft de enableFinerGrainedCatalogCacheRefresh, een parameter voor het belemmeren van het herstel van de cataloguscache. enableFinerGrainedCatalogCacheRefresh richt zich op de shard en maakt gebruik van het meer doorgewinterde herstelgedrag van de cataloguscache.

De parameter enableFinerGrainedCatalogCacheRefresh is standaard ingesteld op true.

Query- en shardingverbeteringen in MongoDB 4.4

MongoDB heeft de traditie om voortdurend uit te schalen door de distributie van gegevens naar meerdere knooppunten of door middel van sharding. Een shardsleutel bevat een document omdat de shardsleutel van een bepaald document alleen kan worden gewijzigd vóór een toewijzing en niet na een toewijzing.

De evolutie van MongoDB heeft het een uitdaging gemaakt om scherven van een geleverde inhoud in MongoDB opnieuw te kalibreren. Om herbalancering mogelijk te maken, heeft de MongoDB 4.4-release herfinieerbare shard-sleutels geïntroduceerd waarmee documenten-shard-sleutels kunnen worden gewijzigd.

Met herbepaalde shard-sleutels kan een wijziging in document-shard-sleutels worden gewijzigd door documenten die bij elkaar horen op een shard in staat te stellen hun vereisten te wijzigen en zo dynamisch opnieuw in evenwicht te worden gebracht.

Herbalanceren kan programmatisch of agressief zijn, afhankelijk van hoe de gebruiker het in de loop van de tijd bekijkt.

Andere verbeteringen

Aggregatie van MongoDB-verzameling wanneer verschillende datasets query's via Unions toestaan. Een dergelijke mogelijkheid maakt het mogelijk om gegevens anders te behandelen en niet als een afzonderlijke ETL.

Gegevens kunnen worden verplaatst en geconsolideerd op de server en worden doorgegeven aan de client, en het proces vereist niet meerdere keren om een ​​volledig resultaat te beheren.

$function is een van de gekostumeerde aggregaties die de uitvoering van complexere aggregaties aan de serverzijde mogelijk maakt en het gegevensverwerkingsproces verbetert.

Verschillende gekostumeerde procedures verschijnen op de uitgebrachte MongoDB 4.4. De gekostumeerde functies zijn gekoppeld aan de verbeterde prestaties van de bètaversie. Desalniettemin wordt $function alleen aangeroepen wanneer andere gekostumeerde en ingebouwde functies niet voldoende zijn in het lopende proces.

MongoDB-querytaal en stuurprogramma's

  1. Aangepaste aggregatieweergaven hebben de functie van eigenaren om MongoDB uit te breiden als onderdeel van de aggregatie-uitvoeringspijplijn.
  2. Union Aggregation heeft meer diepgaande analyses en verkenningen door gegevens uit meerdere collecties samen te voegen in de Union Aggregation-pijplijn.
  3. Schrijf problemen en Global Read om duurzaamheid te schrijven en clusterleesisolatie te configureren.
  4. Snelle stuurprogramma's en nieuwe roest
  5. Uitgebreide flexibiliteit en prestaties
  6. Streaming-replicatie en gelijktijdige indexering verminderen de replicavertraging om gegevens aan gebruikers in MongoDB 4.4 te leveren.
  7. Resultaten worden zo snel mogelijk geretourneerd vanwege de Hedged Reads die p65- en p99-latenties minimaliseren door een leesverzoek in te dienen bij meerdere gegevensreplica's in MongoDB.
  8. Gegevenslocatie behouden terwijl samengestelde gehashte sleutels gelijkmatig worden verdeeld over verschillende shards met hun shardsleutel.
  9. Geen systeem in het centrum bij het definiëren en verfijnen van de Shard-sleutel op een bepaald moment.

Veerkracht en veiligheid

  1. Verificatie in MongoDB 4.4 beta is meer dan 50% sneller en is TLS 1.3.
  2. Verbinding met MongoDB Atlas vereist AWS IASM-authenticatie, wat de cloud-native beveiliging vereenvoudigt door tijdelijke Amazon IAM-referenties en bestaande reguliere te hergebruiken.
  3.  Herstelt nodes door hervatbare initiële synchronisatie die het uitschaalproces vereenvoudigt door nieuwe replica's toe te voegen. Verminderde impact van primaire verkiezingen door Mirrored Reads die de caches van secundair opwarmen na gepland onderhoud of uitval.

Conclusie

MongoDB 4.4 heeft een betere ervaring ontketend in een niet-relationele, op documenten gebaseerde database door de prestatiekenmerken in het systeem te verbeteren. De verbeteringen hebben snellere analytische, operationele en transactionele applicaties mogelijk gemaakt met MongoDB 4.4.

MongoDB 4.4 heeft ook flexibiliteit toegestaan ​​bij het definiëren van gegevensdistributie naarmate de vereisten van de operatie veranderen. Verbetering aan MongoDB 4.4 heeft het betrouwbaarder gemaakt in termen van latentie, verfijning en beveiligingscontrole tijdens het gebruik van Mongo Atlas, de cloud.


  1. Hoe zoek ik naar een object op zijn ObjectId in de mongo-console?

  2. Snelle manier om duplicaten te vinden op geïndexeerde kolom in mongodb

  3. Hoe kan ik een unieke id met twee kolommen toevoegen aan de mongodb in een meteor-app?

  4. Waarom zou ik Redis gebruiken als ik PostgreSQL als mijn database voor Django heb?