MongoDump und MongoRestore vs. MongoExport und MongoImport
MongoDB ist ein quellverfügbares, plattformübergreifendes, dokumentenorientiertes Datenbankprogramm. MongoDB ist als NoSQL-Datenbankprogramm klassifiziert und verwendet JSON-ähnliche Dokumente mit optionalen Schemata.
In diesem Blog werde ich über die Verwendung von „ mongodump und mongorestore“ vs. „mongoexport und mongoimport“ sprechen . Der Blog berücksichtigt die Tatsache, dass die Leser dieses Blogs einen MongoDB- Hintergrund haben und die verwendeten Begriffe nur einen engen Bezug zu MongoDB haben.
Wenn wir mit einer Organisation zusammenarbeiten oder an einer riesigen Codebasis mit einer großen Datenmenge in der Datenbank arbeiten, gibt es Fälle, in denen wir diese Befehle ziemlich oft verwenden müssen, und es müssen viele Überlegungen und Plausibilitätsprüfungen durchgeführt werden, bevor wir diese Befehle verwenden Sie manipulieren die Daten, und die Manipulation großer Datenmengen ist eine Aufgabe, die mit Vorsicht gehandhabt werden muss, da sie zu Ausfallzeiten der Datenbank oder zu Redundanz in den Daten führen könnte, was wiederum zu einem erheblichen technischen Verlust (z. B. zur Wiederherstellung) führen könnte die Datenbank erneut löschen) oder zum Verlust des Vertrauens der Benutzer führen könnte.
Lassen Sie uns darüber sprechen, warum wir diese Dienstprogramme brauchen. Aus dem Namen können wir schließen, dass mongodump und mongoexport zum Exportieren von Daten aus der Datenbank verwendet werden müssen und mongorestore und mongoimport Daten in die Datenbank importieren müssen, aber der wichtige Teil ist, warum mehrere Dienstprogramme für ähnliche Aufgaben verwendet werden. Das werden wir verstehen.
Mongodump
mongodump ist ein Befehlszeilenprogramm zum Erstellen eines binären Exports des Inhalts einer Datenbank. mongodump kann Daten entweder von Mongod- oder Mongos- Instanzen exportieren ; Das heißt, es können Daten aus Einzelplatz-, Replikatsatz- und Shard-Cluster-Bereitstellungen exportiert werden. Beispielbefehl zur Verwendung von Mongodump ist:
$ mongodump --uri=<MONGO_URL> --db=<DB_NAME> --collection=<COLL_NAME>
Dies ist der Befehl, der zum Entfernen des Dumps mit mongodump ausgeführt werden muss. Standardmäßig wird ein Dump-Ordner und ein Datenbank-Dump im selben Ordner erstellt. Wir müssen entweder den Parameter MONGO_URL im --uriParameter übergeben oder ihn verwenden --user=myuser and --password=somepass, um das Dienstprogramm mit dem MongoDB-Client verbinden zu lassen. Mithilfe von Parametern können wir die Datenbank und die Sammlung angeben, die den Dump übernehmen sollen --db and --collection, und wir können sogar --outParameter verwenden, um den Namen des Dump-Verzeichnisses zu ändern. Immer wenn wir den Dump erstellen, werden für jede Sammlung zwei Dateien generiert, eine ist die .bsonDatei und eine ist .metadata.jsondie Datei. Weitere Informationen zu Mongodump finden Sie in der Dokumentation . Über das Feld kann die Datenbanksicherung auch in eine Archivdatei ausgeführt werden --archive.
Der Grund, warum wir mongodump verwenden, besteht darin, dass es Binärkopien erstellt und effizienter ist ( effizient bedeutet, dass es schneller als mongoexport ist und einen komprimierteren Datendump erstellt ). Ein weiterer Grund ist, dass Mongodump, da es einen Dump erstellt .bson , die BSON Rich Data Types beibehält . Außerdem bleiben die Indizes und andere Statistiken in der .metadata.jsonDatei erhalten, sodass die Indizes implizit erstellt werden, sobald wir die Daten wiederherstellen. Daher wird es im Allgemeinen für geplante Datensicherungen über Cron oder etwas anderes verwendet (und von MongoDB empfohlen).
Hinweis: Wir können das Flag und die Flags nicht zusammen im selben mongodump-Befehl verwenden .--archive--out
mongorestore
mongorestore ist die Ergänzung von mongodump und wird zum Importieren der über mongodump oder mongoexport ausgegebenen Daten verwendet. mongorestore ist eine reine Einfügeoperation , was bedeutet, dass ein bereits vorhandenes Dokument in der Datenbank nicht überschrieben wird.
Mit Mongorestore können wir einige teilweise Wiederherstellungsoptionen durchführen, indem wir eine Sammlung oder Liste von Sammlungen angeben, die wir in Ihrer Datenbank wiederherstellen möchten. Wenn wir nur eine Sammlung wiederherstellen müssen, können wir das --collectionFlag verwenden, in dem wir das Flag mit der Datenbank angeben müssen, --dbin der wir wiederherstellen, sowie einen Pfad zur Sammlungsdatei BSON. --nsIncludeEs wird empfohlen , anstelle des Sammlungsflags ein Flag zu verwenden .
Wenn wir testen möchten, ob a mongorestorefunktioniert, bevor wir die Datenbank importieren, können wir --dryRuntesten, ob die Wiederherstellung wie erwartet funktioniert. Mit dem --dryRunFlag gibt mongorestore die zusammenfassenden Informationen von mongorestore zurück , ohne Daten zu importieren.
$ mongorestore --db=mydb --nsInclude="staging.*" dump/
mongoexport
mongoexport funktioniert genauso wie mongodump, ist jedoch weniger platzsparend und erstellt einen Datendump in einem für Menschen lesbaren Format, z. B. im JSON-Format , was auch mehr Zeit in Anspruch nimmt. Standardmäßig schreibt mongoexport in stdout, wir können die Daten jedoch mithilfe des --outParameters auch in eine Datei schreiben. Aber wie wir in mongodump besprochen haben, ist der Dump von mongoexport nicht komprimiert und wird nicht erstellt .metadata.json, sodass die Indizes nicht beibehalten werden können. Standardmäßig können auch die umfangreichen BSON-Datentypen nicht beibehalten werden. Obwohl mongoexport in der neueren Version von Mongo die Unterstützung bietet, umfangreiche BSON-Typen mithilfe von Parametern beizubehalten --jsonFormat=canonical.
Ein Vorteil von mongoexport besteht darin, dass wir auch bestimmte Felder exportieren können, indem wir den --fields=field1,field2...Parameter verwenden und alle Werte durch Kommas getrennt angeben. Wir können auch --skip, --limitund --sortin mongoexport verwenden, um gefilterte und eingeschränkte Ergebnisse zu erhalten. Es gibt auch viele Felder, die wir verwenden können, während wir Mongoexport verwenden. Wir können auch --queryParameter verwenden, um mehr gefilterte Ergebnisse/Dumps zu erhalten. Wenn wir Dumps mit Mongoexport erstellen, ist es einfach, sie in Datenbank-UI-Anwendungen wie MongoDB Compass einzufügen .
mongoimport
mongoexportmongoimport ist die Ergänzung von mongoexport und wird verwendet, um den erweiterten JSON-, CSV- oder TSV-Export wiederherzustellen, der von oder möglicherweise einem anderen Exporttool eines Drittanbieters erstellt wurde . Der große Unterschied zwischen mongorestore und dem Dienstprogramm mongoimport ist die --modeFlagge, die über die Optionen Einfügen, Upsert und Zusammenführen verfügt. Allein anhand der Namen können wir verstehen, dass wir im Einfügemodus nur eindeutige _id- Dokumente einfügen können und den Fehler im Falle einer Duplizierung protokollieren. Wenn im Falle von upsert bereits ein Dokument mit derselben _id vorhanden ist , ersetzt das neue Dokument das vorherige Dokument mit derselben _id . Der dritte Fall ist die Zusammenführung, wobei vorhandene Dokumente, die mit einem Dokument in der Importdatei übereinstimmen, mit dem neuen Dokument zusammengeführt werden.
Fazit: Die Dienstprogramme mongodump / mongorestore eignen sich perfekt für eine Mongo-Datenbanksicherungs- und -wiederherstellungsstrategie. Mit diesen Dienstprogrammen können wir eine einzige Archivdatei sichern und wiederherstellen, die einfach komprimiert und gespeichert oder per E-Mail übertragen werden kann. Mit dem Mongorestore--nsInclude können wir mit den Flagund bestimmte Sammlungen einschließen oder vom Import und/oder der Wiederherstellung in die neue Datenbank ausschließen--nsExclude. Die Dienstprogramme mongoexport / mongoimport eignen sich hervorragend zum Arbeiten mit Sammlungen in einer Mongo-Datenbank und zum Einfügen/Aktualisieren von Dokumenten in diesen Sammlungen. Wir können die--modeFlagge in Mongoimport verwendenum zu definieren, ob wir Dokumente aus unserer importierten Datei einfügen, ersetzen oder zusammenführen möchten.
Vielen Dank fürs Lesen. Sie können mich auf LinkedIn und GitHub kontaktieren .

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































