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

MongoDB im Jahr 2018 – Ein Jahresrückblick

MongoDB ist bei weitem die beliebteste Wahl in der NoSQL-Welt, da seine verteilte Architektur mehr Skalierbarkeit ermöglicht und sein Dokumentdatenmodell Entwicklern eine gute Flexibilität bietet. Fast jedes Jahr wird eine größere MongoDB-Version veröffentlicht und 2018 ist da keine Ausnahme. MongoDB 4.0 wurde im Juli 2018 veröffentlicht, gefolgt von einigen anderen kleineren Versionen. Mit MongoDB Version 4.0 werden jetzt Transaktionen mit mehreren Dokumenten und Typkonvertierungen unterstützt. MongoDB hat 2018 ein neues Tool namens MongoDB-Diagramme (Beta) eingeführt und die Unterstützung für den Aggregation Pipeline Builder in MongoDB Compass hinzugefügt. In diesem Artikel werden wir einige aufregende Funktionen von MongoDB durchgehen, die 2018 veröffentlicht wurden.

ACID-Transaktionen mit mehreren Dokumenten

Dies war die am meisten erwartete Funktion in MongoDB. Ab Version 4.0 sind Säuretransaktionen mit mehreren Dokumenten gegen Replikatsätze produktionsbereit und werden von MongoDB unterstützt. Alle MongoDB-Transaktionen erweitern jetzt ACID-Eigenschaften, die die Datenintegrität gewährleisten. Es ist wirklich einfach, Säuretransaktionen in jeder Anwendung hinzuzufügen, die sie benötigt, und sie wirken sich nicht auf andere Vorgänge aus, die sie nicht benötigen. Durch die Unterstützung von Acid-Transaktionen mit mehreren Dokumenten ist jeder Schreibvorgang, der innerhalb der Transaktion ausgeführt wird, außerhalb der Transaktion nicht sichtbar. Hier sind einige nützliche Befehle zum Hinzufügen von Acid-Transaktionen mit mehreren Dokumenten in Ihrer Anwendung.

Funktion Beschreibung
Session.startTransaction() Starten Sie eine neue Transaktion
Session.commitTransaction() Sendet die Transaktion
Session.abortTransaction() Bricht die Transaktion ab

Hier ist ein kleines Beispiel für das Hinzufügen von Transaktionsoperationen mit der Mongo-Shell:

akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()

Alle Transaktionen bieten eine konsistente Ansicht von Daten über eine oder mehrere Sammlungen in der Datenbank mithilfe von Snapshot-Isolation. MongoDB überträgt keine nicht festgeschriebenen Änderungen an sekundäre Knoten/Replikate. Sobald eine Transaktion festgeschrieben ist, werden alle Änderungen auf sekundäre Knoten angewendet.

Es gibt viele Beispiele, bei denen wir MongoDB-Säuretransaktionen mit mehreren Dokumenten verwenden können, z. B.

  • Geldtransfer zwischen Bankkonten
  • Zahlungssystem
  • Handelssystem
  • Lieferkettensystem
  • Abrechnungssystem

Dinge, die beim Hinzufügen von Transaktionen zu beachten sind

  1. MongoDB bricht jede Transaktion ab, die länger als 60 Sekunden läuft.
  2. In einer einzigen Transaktion sollten nicht mehr als 1000 Dokumente geändert werden. Keine Begrenzung für Lesevorgänge.
  3. Jede Transaktion sollte eine Größe von weniger als 16 MB haben, da MongoDb jede Transaktion als einen einzigen Eintrag in oplog speichert.
  4. Wenn Sie eine Transaktion abbrechen, werden alle Änderungen rückgängig gemacht.

Neue Typumwandlungsoperatoren in der Aggregationspipeline

Um Echtzeit-Einblicke in Daten zu erhalten und komplexe Abfragen zu schreiben, ziehen es MongoDB-Entwickler im Allgemeinen vor, eine Aggregationspipeline zu erstellen. In der MongoDB-Version 4.0 wurden einige neue Konvertierungsoperatoren für Aggregationstypen hinzugefügt, um Daten abzufragen, ohne einzelne Felder zu bereinigen.

Aggregationsoperator Beschreibung
$convert Konvertiert den Wert in einen bestimmten Typ
$toDate Konvertiert Wert in Datum
$toDecimal Konvertiert den Wert in Dezimal
$toDouble Konvertiert den Wert in Double
$toLong Konvertiert den Wert in Long
$toInt Konvertiert den Wert in eine ganze Zahl
$toObjectId Konvertiert den Wert in ObjectId
$toString Konvertiert den Wert in einen String
$ltrim Entfernen Sie unnötige Zeichen am Anfang der Zeichenfolge
$rtrim Entfernen Sie unnötige Zeichen am Ende der Zeichenfolge
$trim Entfernen Sie unnötige Zeichen von beiden Seiten der Zeichenfolge
Multiplenines Become a MongoDB DBA – Bringing MongoDB to ProductionErfahren Sie, was Sie wissen müssen, um MongoDBDownload for Free bereitzustellen, zu überwachen, zu verwalten und zu skalieren

Erweiterte Funktionalität von Change Streams

Die Funktionalität von Änderungsströmen, die Aktualisierungen von Datenänderungen in Echtzeit ohne komplexe Einstellungen bereitstellt, wurde in Version 3.6 eingeführt. Mit Version 4.0 können Change Streams jetzt Änderungen der gesamten Datenbank oder des Clusters statt nur einer einzelnen Sammlung verfolgen. Abgesehen davon gibt Change Streams jetzt auch einen Cluster-Zeitstempel zurück, der einem Ereignis zugeordnet ist, was für die Serveranwendungen hilfreich sein kann.

Schnellere Datenmigrationen

Wenn Ihre Datenbank über den Cluster verteilt ist, kann das elastische Hinzufügen und Entfernen von Knoten aus einem fragmentierten Cluster manchmal zeitaufwändig sein. Der Sharded Cluster Balancer, der für die Verteilung von Daten auf alle Shards verantwortlich ist, hat in Version 4.0 ein großes Upgrade erhalten. Jetzt kann die Datenmigration um 40 % schneller abgeschlossen werden.

Nicht blockierende sekundäre Lesevorgänge

Früher blockierte MongoDB alle sekundären Lesevorgänge, wenn Oplog-Einträge auf die sekundären Knoten angewendet wurden. Dies verursachte eine variable Latenz von sekundären Lesevorgängen. Ab MongoDB 4.0 sind sekundäre Lesevorgänge aufgrund des erhöhten Replikatsatzdurchsatzes und verbesserter Leselatenzen nicht mehr blockierend.

Aggregation Pipeline Builder in Compass

MongoDB Compass ist das GUI-Tool für MongoDB zum Visualisieren und Abfragen von Daten. In diesem Jahr erhielt der MongoDB-Kompass eine neue Funktion der Aggregationspipeline. Es bietet einen visuellen Abfrageeditor zum Erstellen von mehrstufigen Aggregationspipelines. Hier ist der Schnappschuss davon:

Builder für Aggregationsabfragen in Compass

Zusätzlich zu dieser Funktion bietet compass jetzt auch die Möglichkeit, Ihre Abfragen in alle nativen Codesprachen Ihrer Wahl zu exportieren.

MongoDB-Diagramme

MongoDB Charts ist das neue Tool, mit dem der Benutzer schnell Echtzeit-Visualisierungen von MongoDB-Daten erstellen kann. Dieses Tool ist für das Dokumentdatenmodell mit Unterstützung für Typhandhabung, Array-Reduktionen und auch verschachtelte Dokumente konzipiert. Mit diesem Tool können Benutzer Diagramm-Dashboards erstellen und mit anderen Benutzern teilen. MongoDB-Diagramme sind jetzt vollständig in MongoDB Atlas integriert.

Weitere neue MongoDB-Funktionen

  • MongoDB Stitch:Serverlose Plattform für die Entwicklung von Client-Anwendungen, die sicher auf Mongo-Dienste zugreifen kann.
  • MongoDB Kubernetes:Zum Bereitstellen von MongoDB innerhalb des Kubernetes-Clusters.
  • MongoDB Mobile:Bietet Flexibilität und Leistungsfähigkeit von MongoDB in kompakter Form, sodass es in IoT-Geräten verwendet werden kann.
  • MongoDB Monitoring Cloud Service:Um Monitoring-Metadaten kostenlos in die MongoDB Monitoring Cloud zu übertragen.

Die Zukunft von MongoDB

MongoDB plant außerdem, mit seiner Version 4.2 einige neue Funktionen einzuführen, darunter:

  • Umfangreichere WiredTiger-Engine
  • Transaktionsmanager
  • Transaktionen über eine fragmentierte Bereitstellung
  • Globaler Zeitpunkt liest