MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist neu in MongoDB 4.4

MongoDB 4.4 (derzeit in der Beta-Phase) wird mit der Hauptaufgabe eingeführt, Entwicklervorschläge aus der MongoDB-Community zu berücksichtigen. Diese Version wurde veröffentlicht, um die Fähigkeit der Datenbank zu erweitern, in einem bequemen und zuverlässigen Maßstab zu arbeiten, und wurde daher nach dem Prinzip der "benutzergesteuerten Entwicklung" entwickelt, um zahlreiche verbesserte Funktionen bereitzustellen.

Verbesserte Funktionen in MongoDB 4.4

Abgesicherte Lesevorgänge

Der MongoDB-Abfragerouter gibt Leseanforderungen parallel an mehrere Replikatsätze aus und Datenergebnisse werden vom effizientesten Knoten zurückgegeben, wodurch die Anwendungslatenz verringert wird.

Definierbare gemeinsame Schlüssel

Hinzufügen von Suffixen zu einem Shard-Schlüssel nach dem Ändern der Datenverteilung während des Skalierungsprozesses.

Gespiegelte Lesevorgänge

Dies ist eine Funktion, die Caches sekundärer Replikate vorwärmt, um die Nachwirkungen von Primärwahlen zu reduzieren, die sich aus geplanten Wartungsarbeiten oder Ausfällen ergeben können.

Aggregationsverbesserungen

Die Aggregationsverbesserung hat verschiedene Verbesserungen, darunter das Definieren und Anpassen von Aggregationsausdrücken, das Kombinieren von Daten aus mehreren Mongo-Sammlungen in einem einzigen Ergebnissatz, die String-Manipulation und neue Operatoren bei der Array-Verarbeitung. Im Folgenden sind einige der Verbesserungen aufgeführt:

$out

Die

$out-Operation wurde verbessert, um Sammlungsergebnisse an verschiedene Datenbanken auszugeben, im Gegensatz zu einer früheren Version, die nur an eine Sammlung in derselben Datenbank ausgeben konnte, die die Aggression war.

$indexStats

$indexStats hat neue Feldausgaben in MongoDB 4.4, die Felder enthalten:

Gebäude

Es ist ein boolesches Flag, das den erstellten Index angibt.

Spezifikation

Spezifikationsdokument für jeden Index

Shard

Der spezifische Name eines Shards, falls erforderlich

$merge

In MongoDB 4.4 wurde $merge dahingehend verbessert, dass es auf derselben Sammlung ausgegeben wird, die aktualisiert wird. Darüber hinaus kann man auch in einer Sammlung ausgeben, die in der Pipeline erscheint, wie $lookup.

$planCacheStats-Änderungen

Der Status von $planCacheStats wurde verbessert, um sowohl Mongod- als auch Mongos-Instanzen in MongoDB 4.4 auszuführen. Darüber hinaus verfügt $planCacheSTats über ein neues Feld, das als Hostfeld bekannt ist, wenn Mongo ausgeführt wird. PlanCache.list() ist ein Wrapper für die Aggregationsphase $planCacheStats.

$collStats-Änderungen

$collStats wurde so eingestellt, dass es die Abfrage-Exec-Statistiken während der erweiterten Dokumentation akzeptiert. Zusätzlich scannt die Sammlung als Felder mit der folgenden Beschreibung:

Feldname

Beschreibung

nonTailble

Dies ist eine 64-Bit-Ganzzahl, die einen Sammlungsscan für mehrere Abfragen durchführt, die keinen Tailable-Cursor verwenden.

gesamt

Total ist eine Sammlung von Abfragen, die eine Sammlungsprüfung durchführt, die keinen Tailable-Cursor verwendet.

$unionWith Aggregation

MongoDB hat $unionWith hinzugefügt, ein Feature, das Sammlungssätze vereinheitlicht, das heißt, es vereint Ergebnisse einer Pipeline aus mehreren Sammlungen in einem Satz.

$unionWith-Syntax

$unionWith hat die folgende allgemeine Syntax:

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

$unionWith hat eine vereinfachte Version der Syntax, die verwendet wird, um alle Dokumente aus einer Sammlung einzuschließen:

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

$akkumulator-Aggregation

$accumulator ist eine weitere neue Funktion in MongoDB 4.4, die einen benutzerdefinierten Akkumulatoroperator angibt. Akkumulatoren sind Operatoren, die ihren Status nicht ändern, während Dokumente entlang der Pipeline fortschreiten. Sie können einen $akkumulator-Operator verwenden, um JavaScript-Funktionen auszuführen, die nicht von MongoDB unterstützt werden. $akkumulator befindet sich in den folgenden drei Phasen der Pipeline:

  1. $bucket stage:Gibt nur Dokumente aus, die mindestens eine Dokumenteingabe enthalten.
  2. $group stage:Fügt Dokumente nach angegebener _id ein und gibt ein Dokument für jede bestimmte Gruppierung aus
  3. $bucketAuto stage:Es sortiert Dokumenteinträge in bestimmte Gruppennummern, die als Buckets bekannt sind.

Syntax

Die Syntax für $akkumulator ist wie folgt:

{ $accumulator:{

init: <code>,

initArgs: <array expression>,    // Optional

accumulate: <code>,

accumulateArgs: <array expression>,

merge: <code>,

finalize: <code>, // Optional

lang: <string>

  }}

$function Aggregation

$function aggregation definiert eine Aggregationsfunktion in JavaScript.

Der

$function-Operator kann verwendet werden, um Funktionen zu definieren, die Verhaltensweisen verwenden, die von MongoDB nicht unterstützt werden

Die Syntax für $Funktion ist wie folgt:

{

  $function: {

body: <code>,

args: <array expression>,

lang: "js"

  }

}

Weitere Funktionen, die in der neuesten Version von MongoDB 4.4 enthalten sind, sind:Schreibprobleme, globale Lesevorgänge, Stream-Replikation, wiederaufnehmbare anfängliche Synchronisierung und Compound-Hash-Shard.

Was ist neu bei MongoDB-Replikatsätzen?

Fortsetzbare anfängliche Synchronisierung

MongoDB 4.4 hat eine Funktion, die versucht, einen unterbrochenen Synchronisierungsprozess fortzusetzen.

Streaming-Replikationen

In den vorherigen Versionen von MongoDB sammelten Secondaries Batches von oplog auf Anfrage, die zur Synchronisierung von der Quelle ausgegeben wurden. Mit MongoDB 4.4 senden Synchronisierungsprozesse aus Quellen kontinuierliche Ströme von Oplog-Einträgen an die sekundären Synchronisierungsprozesse.

Rollback-Verzeichnis

Ab MongoDB 4.4 erhält das Sammlungsverzeichnis beim Rollback den Namen gemäß der UUID der Sammlung und dem Sammlungsnamensraum.

Minimale Oplog-Aufbewahrungsdauer

Ab MongoDB 4.4 ist es möglich, die Mindestanzahl von Stunden anzugeben, die Sie einen Oplog-Eintrag aufbewahren möchten.

Änderungen an der Neukonfiguration des Replikatsatzes

MongoDB 4.4 hat einen Befehl namens replSetReconfig, der das Hinzufügen oder Entfernen von nicht mehr als einem Wähler gleichzeitig erlaubt. Ein weiteres neues Feature in MongoDB 4.4 sind die Änderungen an replSetGetConfig. Die MongoDB 4.4 replSetConfig kann eine neue Option CommitmentStatus festlegen.

Zusammengesetzte gehashte Shard-Schlüssel

Ab MongoDB 4.4 können Sie eine Sammlung unter Verwendung eines zusammengesetzten Shard-Schlüssels mit einem einzelnen Hash-Feld fragmentieren. Vor 4.4 unterstützte MongoDB keine zusammengesetzten Shard-Schlüssel mit einem Hash-Feld. Zusammengesetztes gehashtes Sharding unterstützt Funktionen wie Zonen-Sharding, wobei das Präfix (d. h. das erste) nicht gehashte Feld oder Felder Zonenbereiche unterstützen, während das gehashte Feld eine stärkere Verteilung der geteilten Daten unterstützt. Beispielsweise fragmentiert die folgende Operation eine Sammlung auf einem zusammengesetzten gehashten Shard-Schlüssel, der Zonen-Sharding unterstützt:

sh.shardCollection(

  "examples.compoundHashedCollection",

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

)

Allgemeine Verbesserungen bei Sharded-Clustern

Indexkonsistenzprüfungen

In MongoDB 4.4 prüft der Konfigurationsserver im Wesentlichen standardmäßig auf Dateiunregelmäßigkeiten über den Shards für Sharding-Sammlungen. Der Befehl serverStatus gibt das Feld shardedIndexConsistency zurück, um Dateiunregelmäßigkeiten bei der Ausführung auf dem Konfigurationsserver Essential zu melden. In MongoDB 4.4 haben Sie im Voraus mehr als eine removeShard-Operation. In früheren Anpassungen gibt removeShard einen Fehler zurück, wenn die Möglichkeit besteht, dass ein weiterer removeShard-Vorgang im Voraus stattfindet.

Shard-Key-Limit

Ab Version 4.4 beseitigt MongoDB die 512-Byte-Beschränkung für die Schätzung des Shard-Schlüssels. Für MongoDB 4.2 und früher darf ein Shard-Schlüssel 512 Byte nicht überschreiten.

Verbesserte Katalog-Cache-Aktualisierung

In MongoDB 4.4 wird ein alter Chunk vom Katalog-Cache wiederbelebt, um einen Shard zu erhalten, der den Chunk enthält.

MongoDB 4.4 verfügt über enableFinerGrainedCatalogCacheRefresh, einen Parameter zur Beeinträchtigung der Katalog-Cache-Wiederbelebung. enableFinerGrainedCatalogCacheRefresh konzentriert sich auf den Shard und nutzt das bewährtere Katalog-Cache-Wiederbelebungsverhalten.

Der Parameter enableFinerGrainedCatalogCacheRefresh ist standardmäßig wahr.

Verbesserungen bei Abfragen und Sharding in MongoDB 4.4

MongoDB hat eine Tradition des kontinuierlichen Aufskalierens durch die Verteilung von Daten auf mehrere Knoten oder durch Sharding. Ein Shard-Schlüssel enthält ein Dokument, da der Shard-Schlüssel eines bestimmten Dokuments nur vor einer Zuweisung und nicht nach einer Zuweisung geändert werden kann.

Die Weiterentwicklung von MongoDB hat es zu einer Herausforderung gemacht, Shards eines bereitgestellten Inhalts in MongoDB neu zu kalibrieren. Um die Neuverteilung zu ermöglichen, wurden in der Version 4.4 von MongoDB verfeinerbare Shard-Schlüssel eingeführt, mit denen die Shard-Schlüssel von Dokumenten geändert werden können.

Verfeinerbare Shard-Keys ermöglichen eine Änderung der Dokument-Shard-Keys, indem Dokumente, die auf einem Shard zusammengehören, ihre Anforderungen ändern und somit dynamisch neu ausbalanciert werden.

Das Rebalancing kann programmgesteuert oder aggressiv erfolgen, je nachdem, wie der Benutzer es im Laufe der Zeit sieht.

Weitere Verbesserungen

Aggregation der MongoDB-Sammlung, wenn verschiedene Datensätze Abfragen über Unions zulassen. Eine solche Funktion ermöglicht die unterschiedliche Behandlung von Daten und nicht als separate ETL.

Daten können auf dem Server verschoben und konsolidiert und an den Client übergeben werden, und der Prozess erfordert nicht mehrere Fahrten, um ein vollständiges Ergebnis zu verwalten.

$function gehört zu den kostümierten Aggregationen, die die Ausführung komplexerer Aggregationen auf der Serverseite ermöglichen und den Datenverarbeitungsprozess verbessern.

Verschiedene versionierte Prozeduren erscheinen in der veröffentlichten MongoDB 4.4. Die kostümierten Features wurden mit der gesteigerten Leistung der Beta-Version verknüpft. Nichtsdestotrotz wird $function nur aufgerufen, wenn andere kostümierte und eingebaute Funktionen im laufenden Prozess nicht ausreichen.

MongoDB-Abfragesprache und -Treiber

  1. Benutzerdefinierte Aggregationserscheinungen haben Besitzerfunktionen, die MongoDB als Teil der Aggregationsausführungspipeline erweitern.
  2. Union Aggregation bietet eine eingehendere Analyse und Exploration durch das Zusammenführen von Daten aus mehreren Sammlungen in der Union Aggregation-Pipeline.
  3. Schreiben Sie Bedenken und globales Lesen, um Dauerhaftigkeit zu schreiben und Cluster-Leseisolation zu konfigurieren.
  4. Swift-Treiber und New Rust
  5. Skalierte Flexibilität und Leistung
  6. Streaming-Replikation und simultane Indizierung reduzieren Replikationsverzögerungen, um Daten für Benutzer in MongoDB 4.4 bereitzustellen.
  7. Ergebnisse werden so schnell wie möglich zurückgegeben, da die abgesicherten Lesevorgänge p65- und p99-Latenzen minimieren, indem eine Leseanforderung an mehrere Datenreplikate in MongoDB gesendet wird.
  8. Beibehalten der Datenlokalität, da zusammengesetzte Hash-Schlüssel mit ihrem Shard-Schlüssel gleichmäßig auf verschiedene Shards verteilt werden.
  9. Kein System in der Innenstadt beim Definieren und Verfeinern des Shard-Schlüssels zu einem bestimmten Zeitpunkt.

Resilienz und Sicherheit

  1. Authentifizierung in MongoDB 4.4 Beta ist über 50 % schneller und entspricht TLS 1.3.
  2. Die Verbindung mit MongoDB Atlas erfordert eine AWS IASM-Authentifizierung, die die Cloud-native Sicherheit vereinfacht, indem temporäre Amazon IAM-Anmeldeinformationen und vorhandene reguläre wiederverwendet werden.
  3.  Stellt Knoten durch fortsetzbare anfängliche Synchronisierung wieder her, die den Scale-out-Prozess durch Hinzufügen neuer Replikate vereinfacht. Reduzierte Auswirkungen von Primärwahlen durch gespiegelte Lesevorgänge, die die Caches von Sekundär nach geplanter Wartung oder Ausfall aufwärmen.

Fazit

MongoDB 4.4 hat eine bessere Erfahrung in einer nicht-relationalen dokumentbasierten Datenbank durch verbesserte Leistungsmerkmale in seinem System freigesetzt. Die Verbesserungen haben mit MongoDB 4.4 schnellere analytische, betriebliche und transaktionale Anwendungen ermöglicht.

MongoDB 4.4 hat auch Flexibilität bei der Definition der Datenverteilung ermöglicht, wenn sich die Anforderungen des Betriebs ändern. Die an MongoDB 4.4 vorgenommene Verbesserung hat es in Bezug auf Latenz, Raffinesse und Sicherheitskontrolle bei der Verwendung von Mongo Atlas, der Cloud, zuverlässiger gemacht.