MongoDB ist eine der beliebtesten NoSQL-Datenbank-Engines. Es ist bekannt für seine Skalierbarkeit, Leistungsfähigkeit, Zuverlässigkeit und Benutzerfreundlichkeit. In diesem Artikel zeigen wir Ihnen, wie Sie Ihre MongoDB-Datenbanken importieren und exportieren.
Wir sollten klarstellen, dass mit Import und Export in diesem Artikel der Umgang mit Daten in einem für Menschen lesbaren Format gemeint ist, das mit anderen Softwareprodukten kompatibel ist. Im Gegensatz dazu erstellen oder verwenden die Sicherungs- und Wiederherstellungsvorgänge MongoDB-spezifische Binärdaten, wodurch nicht nur die Konsistenz und Integrität Ihrer Daten, sondern auch die spezifischen MongoDB-Attribute erhalten bleiben. Daher ist es für die Migration normalerweise vorzuziehen, Backup und Restore zu verwenden, solange Quell- und Zielsystem kompatibel sind. Das Sichern, Wiederherstellen und Migrieren geht über den Rahmen dieses Artikels hinaus. Weitere Informationen finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-back-up-restore-and-migrate-a-mongodb-database-. on-ubuntu-14-04 [Sichern, Wiederherstellen und Migrieren einer MongoDB-Datenbank unter Ubuntu 14.04].
Voraussetzungen
Stellen Sie vor dem Ausführen dieses Lernprogramms sicher, dass folgende Voraussetzungen erfüllt sind:
-
Ubuntu 14.04 Droplet
-
Nicht-Root-Benutzer von sudo. Weitere Informationen finden Sie unter Initial Server Setup with Ubuntu 14.04.
-
MongoDB installiert und konfiguriert mit dem Artikel Installation von MongoDB unter Ubuntu 14.04.
Sofern nicht anders angegeben, sollten alle Befehle, für die in diesem Lernprogramm Root-Berechtigungen erforderlich sind, als Nicht-Root-Benutzer mit Sudo-Berechtigungen ausgeführt werden.
Grundlagen verstehen
Bevor Sie mit diesem Artikel fortfahren, ist ein grundlegendes Verständnis in dieser Angelegenheit erforderlich. Wenn Sie Erfahrung mit gängigen relationalen Datenbanksystemen wie MySQL haben, können Sie bei der Arbeit mit MongoDB einige Ähnlichkeiten feststellen.
Das Erste, was Sie wissen sollten, ist, dass MongoDB die Formate json und bson (binary json) zum Speichern seiner Informationen verwendet. Json ist das für Menschen lesbare Format, das sich perfekt zum Exportieren und schließlich zum Importieren Ihrer Daten eignet. Sie können Ihre exportierten Daten weiterhin mit jedem Tool verwalten, das JSON unterstützt, einschließlich eines einfachen Texteditors.
Ein Beispiel für ein JSON-Dokument sieht folgendermaßen aus:
Beispiel für das json-Format
{"address":[
{"building":"1007", "street":"Park Ave"},
{"building":"1008", "street":"New Ave"},
]}
Es ist sehr praktisch, mit Json zu arbeiten, es werden jedoch nicht alle in bson verfügbaren Datentypen unterstützt. Dies bedeutet, dass es bei Verwendung von json zu einem so genannten "Vertrauensverlust" der Informationen kommt. Aus diesem Grund ist es für das Sichern / Wiederherstellen besser, die Binärdatei zu verwenden, mit der Sie Ihre MongoDB-Datenbank besser wiederherstellen können.
Zweitens müssen Sie sich keine Gedanken über das explizite Erstellen einer MongoDB-Datenbank machen. Wenn die für den Import angegebene Datenbank noch nicht vorhanden ist, wird sie automatisch erstellt. Noch besser ist die Struktur der Sammlungen (Datenbanktabellen). Im Gegensatz zu anderen Datenbank-Engines wird in MongoDB die Struktur beim Einfügen des ersten Dokuments (Datenbankzeile) wieder automatisch erstellt.
Drittens kann das Lesen oder Einfügen großer Datenmengen in MongoDB, z. B. für die in diesem Artikel beschriebenen Aufgaben, ressourcenintensiv sein und einen Großteil der CPU, des Arbeitsspeichers und des Festplattenspeichers beanspruchen. Dies ist von entscheidender Bedeutung, da MongoDB häufig für große Datenbanken und Big Data verwendet wird. Die einfachste Lösung für dieses Problem besteht darin, die Exporte / Backups über Nacht auszuführen.
Viertens kann die Informationskonsistenz problematisch sein, wenn Sie einen ausgelasteten MongoDB-Server haben, auf dem sich die Informationen während des Datenbankexports ändern. Es gibt keine einfache Lösung für dieses Problem, aber am Ende dieses Artikels finden Sie Empfehlungen, die Sie zum Thema Replikation lesen sollten.
Informationen in MongoDB importieren
Um zu erfahren, wie das Importieren von Informationen in MongoDB funktioniert, verwenden wir eine beliebte MongoDB-Beispieldatenbank für Restaurants. Es ist im .json-Format und kann mit "+ wget +" wie folgt heruntergeladen werden:
wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
Sobald der Download abgeschlossen ist, sollten Sie eine Datei mit dem Namen "+ primer-dataset.json in" (12 MB groß) im aktuellen Verzeichnis haben. Importieren Sie die Daten aus dieser Datei in eine neue Datenbank mit dem Namen "+ newdb " und in eine Sammlung mit dem Namen " restaurants ". Zum Importieren verwenden wir den Befehl " mongoimport +" wie folgt:
sudo mongoimport --db newdb --collection restaurants --file primer-dataset.json
Das Ergebnis sollte so aussehen:
Ausgabe von Mongoimport
2016-01-17T14:27:04.806-0500 connected to: localhost
2016-01-17T14:27:07.315-0500 imported 25359 documents
Wie der obige Befehl zeigt, wurden 25359 Dokumente importiert. Da wir keine Datenbank mit dem Namen "+ newdb +" hatten, hat MongoDB diese automatisch erstellt.
Überprüfen Sie den Import, indem Sie eine Verbindung zur neu erstellten MongoDB-Datenbank mit dem Namen "+ newdb +" wie folgt herstellen:
sudo mongo newdb
Sie sind jetzt mit der neu erstellten Datenbankinstanz "+ newdb +" verbunden. Beachten Sie, dass sich Ihre Eingabeaufforderung geändert hat und angibt, dass Sie mit der Datenbank verbunden sind.
Zählen Sie die Dokumente in der Restaurantsammlung mit dem Befehl:
db.restaurants.count()
Das Ergebnis sollte "+ 25359 +" sein, genau die Anzahl der importierten Dokumente. Für eine noch bessere Prüfung können Sie das erste Dokument aus der Restaurantsammlung wie folgt auswählen:
db.restaurants.findOne()
Das Ergebnis sollte so aussehen:
Ausgabe von db.restaurants.findOne ()
{
"_id" : ObjectId("569beb098106480d3ed99926"),
"address" : {
"building" : "1007",
"coord" : [
-73.856077,
40.848447
],
"street" : "Morris Park Ave",
"zipcode" : "10462"
},
"borough" : "Bronx",
"cuisine" : "Bakery",
"grades" : [
{
"date" : ISODate("2014-03-03T00:00:00Z"),
"grade" : "A",
"score" : 2
},
...
],
"name" : "Morris Park Bake Shop",
"restaurant_id" : "30075445"
}
Eine solche detaillierte Prüfung könnte Probleme mit den Dokumenten aufdecken, wie z. B. deren Inhalt, Codierung usw. Das json-Format verwendet die Kodierung "+ UTF-8 +", und Ihre Exporte und Importe sollten in dieser Kodierung erfolgen. Beachten Sie dies, wenn Sie die json-Dateien manuell bearbeiten. Andernfalls übernimmt MongoDB dies automatisch für Sie.
Um die MongoDB-Eingabeaufforderung zu beenden, geben Sie an der Eingabeaufforderung "+ exit +" ein:
exit
Sie kehren als Benutzer ohne Rootberechtigung zur normalen Eingabeaufforderung zurück.
Exportieren von Informationen aus MongoDB
Wie bereits erwähnt, können Sie durch Exportieren von MongoDB-Informationen eine für Menschen lesbare Textdatei mit Ihren Daten erstellen. Standardmäßig werden Informationen im JSON-Format exportiert, Sie können sie jedoch auch in eine CSV-Datei exportieren (durch Kommas getrennte Werte).
Um Informationen aus MongoDB zu exportieren, verwenden Sie den Befehl + mongoexport +
. Sie können einen sehr detaillierten Export exportieren, um eine Datenbank, eine Sammlung und ein Feld anzugeben und sogar eine Abfrage für den Export zu verwenden.
Ein einfaches Beispiel für "+ mongoexport " wäre der Export der Restaurants-Sammlung aus der Datenbank " newdb +", die wir zuvor importiert haben. Das kann so gemacht werden:
sudo mongoexport --db newdb -c restaurants --out newdbexport.json
Im obigen Befehl verwenden wir "+ - db ", um die Datenbank anzugeben, " -c " für die Sammlung und " - out +" für die Datei, in der die Daten gespeichert werden.
Die Ausgabe eines erfolgreichen "+ mongoexport +" sollte folgendermaßen aussehen:
Ausgabe von Mongoexport
2016-01-20T03:39:00.143-0500 connected to: localhost
2016-01-20T03:39:03.145-0500 exported 25359 records
Die obige Ausgabe zeigt, dass 25359 Dokumente importiert wurden - dieselbe Anzahl wie die importierten.
In einigen Fällen müssen Sie möglicherweise nur einen Teil Ihrer Sammlung exportieren. In Anbetracht der Struktur und des Inhalts der JSON-Datei für Restaurants exportieren wir alle Restaurants, die die Kriterien für die Lage im Bezirk Bronx und die chinesische Küche erfüllen. Wenn Sie diese Informationen direkt abrufen möchten, während Sie mit MongoDB verbunden sind, stellen Sie erneut eine Verbindung zur Datenbank her:
sudo mongo newdb
Verwenden Sie dann diese Abfrage:
db.restaurants.find( { borough: "Bronx", cuisine: "Chinese" } )
Die Ergebnisse werden im Terminal angezeigt. Um die MongoDB-Eingabeaufforderung zu beenden, geben Sie an der Eingabeaufforderung "+ exit +" ein:
exit
Wenn Sie die Daten aus einer sudo-Befehlszeile exportieren möchten, anstatt mit der Datenbank verbunden zu sein, nehmen Sie die vorherige Abfrage in den Befehl + mongoexport +
vor, indem Sie sie für das Argument + -q +
wie folgt angeben:
sudo mongoexport --db newdb -c restaurants -q "{ borough: 'Bronx', cuisine: 'Chinese' }" --out Bronx_Chinese_retaurants.json
Beachten Sie, dass wir einfache Anführungszeichen innerhalb der doppelten Anführungszeichen für die Abfragebedingungen verwenden. Wenn Sie doppelte Anführungszeichen oder Sonderzeichen wie "+ $ " verwenden, müssen Sie diese mit einem Backslash (" \ +") in der Abfrage maskieren.
Wenn der Export erfolgreich war, sollte das Ergebnis folgendermaßen aussehen:
Ausgabe von Mongoexport
2016-01-20T04:16:28.381-0500 connected to: localhost
2016-01-20T04:16:28.461-0500 exported 323 records
Die obige Abbildung zeigt, dass 323 Datensätze exportiert wurden und Sie diese in der von uns angegebenen Datei + Bronx_Chinese_retaurants.json +
finden.
Fazit
Dieser Artikel enthält eine Einführung in die Grundlagen des Importierens und Exportierens von Informationen in und aus einer MongoDB-Datenbank. Weitere Informationen finden Sie unter How To Sichern, Wiederherstellen und Migrieren einer MongoDB-Datenbank unter Ubuntu 14.04 und How To Set a Skalierbare MongoDB-Datenbank.
Die Replikation ist nicht nur für die Skalierbarkeit nützlich, sondern auch für die aktuellen Themen wichtig. Mit der Replikation können Sie Ihren MongoDB-Dienst ohne Unterbrechung von einem Slave-MongoDB-Server ausführen, während Sie den Master-Server nach einem Fehler wiederherstellen. Teil der Replikation ist auch das operations log (oplog), das alle Vorgänge aufzeichnet, die Ihre Daten ändern. Sie können dieses Protokoll wie das Binärprotokoll in MySQL verwenden, um Ihre Daten nach der letzten Sicherung wiederherzustellen. Denken Sie daran, dass Sicherungen normalerweise nachts durchgeführt werden. Wenn Sie sich entschließen, eine Sicherung am Abend wiederherzustellen, werden Ihnen alle Aktualisierungen seit der letzten Sicherung fehlen.