MongoDump et MongoRestore contre MongoExport et MongoImport
MongoDB est un programme de base de données multiplateforme orienté document disponible en source. Classé comme programme de base de données NoSQL, MongoDB utilise des documents de type JSON avec des schémas facultatifs.
Dans ce blog, je vais parler de l'utilisation de ' mongodump et mongorestore' par rapport à 'mongoexport et mongoimport' . Le blog tient compte du fait que les lecteurs de ce blog viennent d'un milieu MongoDB et les termes utilisés sont étroitement liés à MongoDB uniquement.
Lorsque nous travaillons avec une organisation ou sur une énorme base de code avec une grande quantité de données dans la base de données, il y a des cas où nous devons utiliser ces commandes assez souvent, et il y a beaucoup de réflexion et de vérifications avant d'utiliser ces commandes comme ils manipulent les données et la manipulation de données volumineuses est une tâche à gérer avec précaution, car cela pourrait entraîner un temps d'arrêt de la base de données ou une redondance des données, ce qui pourrait entraîner une lourde perte, que ce soit en termes de technologie (c'est-à-dire pour re-stabiliser à nouveau la base de données) ou pourrait entraîner une perte de confiance des utilisateurs.
Parlons de la raison pour laquelle nous avons besoin de ces utilitaires. D'après le nom, nous pouvons conclure que mongodump et mongoexport doivent être utilisés pour exporter des données de la base de données, et mongorestore et mongoimport doivent importer des données dans la base de données, mais l'important est de savoir pourquoi plusieurs utilitaires pour des tâches similaires. C'est ce que nous allons comprendre.
mongodump
mongodump est un utilitaire de ligne de commande pour créer une exportation binaire du contenu d'une base de données. mongodump peut exporter des données à partir d'instances mongod ou mongos ; c'est-à-dire qu'il peut exporter des données à partir de déploiements autonomes, d'ensembles de répliques et de clusters partagés. Exemple de commande pour utiliser mongodump :
$ mongodump --uri=<MONGO_URL> --db=<DB_NAME> --collection=<COLL_NAME>
Il s'agit de la commande à exécuter pour supprimer le vidage à l'aide de mongodump. Par défaut, un dossier de vidage serait créé et un vidage de base de données serait créé dans le même dossier. Nous devons passer le MONGO_URL en --uriparamètre ou nous pouvons l'utiliser --user=myuser and --password=somepasspour permettre à l'utilitaire de se connecter au client MongoDB. Nous pouvons spécifier la base de données et la collection pour effectuer le vidage des --db and --collectionparamètres d'utilisation, et même nous pouvons utiliser --outle paramètre pour modifier le nom du répertoire de vidage. Chaque fois que nous prenons le vidage, pour chaque collection, il génère deux fichiers, l'un est le .bsonfichier et l'autre est .metadata.jsonle fichier. Pour plus de détails sur mongodump, la documentation peut être consultée. La sauvegarde de la base de données peut également être exécutée dans un fichier d'archive à l'aide du --archivechamp.
La raison pour laquelle nous utilisons mongodump est qu'il crée des copies binaires et qu'il est plus efficace ( par efficace, cela signifie qu'il est plus rapide que mongoexport et crée un vidage de données plus compressé ). Une autre raison est que, puisque mongodump effectue .bson un vidage, il préserve donc les types de données riches BSON. Il préserve également les index et autres statistiques du .metadata.jsonfichier. Ainsi, une fois les données restaurées, les index seront créés implicitement. Par conséquent, généralement, il est utilisé (et recommandé par MongoDB ) pour les sauvegardes de données planifiées via cron ou autre chose.
Remarque : Nous ne pouvons pas utiliser le --archivedrapeau et --outles drapeaux ensemble dans la même commande mongodump.
mongorestore
mongorestore est le complément de mongodump et est utilisé pour importer les données déchargées via mongodump ou mongoexport. mongorestore est une opération d'insertion uniquement , ce qui signifie qu'elle n'écrasera pas un document de la base de données qui existe déjà.
Mongorestore nous permet d'effectuer certaines options de restauration partielle en spécifiant une collection, ou une liste de collections, que nous aimerions restaurer dans votre base de données. Si nous n'avons besoin de restaurer qu'une seule collection, nous pouvons utiliser le --collectiondrapeau dans lequel nous devrons spécifier le --dbdrapeau avec la base de données que nous restaurons ainsi qu'un chemin vers le BSONfichier de collections. Il est recommandé d'utiliser --nsIncludeflag au lieu de collection flag.
Si nous voulons tester si a mongorestorefonctionnera avant d'importer la base de données, nous pouvons utiliser le --dryRunpour tester si la restauration fonctionnera comme prévu. Avec le --dryRundrapeau, mongorestore renverra les informations récapitulatives de mongorestore sans importer de données.
$ mongorestore --db=mydb --nsInclude="staging.*" dump/
mongoexport
mongoexport fonctionne exactement de la même manière que mongodump, mais il est moins efficace en termes d'espace et produit un vidage de données dans un format lisible par l'homme, c'est-à-dire au format JSON , et prend donc plus de temps également. Par défaut, mongoexport écrit sur stdout, mais nous pouvons également écrire les données dans un fichier en utilisant le --outparamètre. Mais comme nous en avons discuté dans mongodump, le vidage de mongoexport n'est pas compressé, et il ne produit pas .metadata.jsonde sorte qu'il ne peut pas conserver les index, et par défaut, il ne peut pas non plus conserver les types de données BSON riches. Bien que dans la nouvelle version de mongo, mongoexport a le support pour préserver les types BSON riches en utilisant --jsonFormat=canonicalle paramètre.
Un avantage de mongoexport est que nous pouvons également exporter des champs spécifiques, en utilisant le --fields=field1,field2...paramètre et en spécifiant toutes les valeurs séparées par des virgules. Nous pouvons également utiliser --skip, --limitet --sortdans mongoexport pour obtenir des résultats filtrés et restreints. Il existe également de nombreux champs que nous pouvons utiliser lorsque nous utilisons mongoexport. Nous pouvons également utiliser --querydes paramètres pour obtenir des résultats/dumps plus filtrés. Lorsque nous effectuons un vidage à l'aide de mongoexport, il devient facile de les insérer dans des applications d'interface utilisateur de base de données telles que MongoDB Compass .
mongoimport
mongoimport est le complément de mongoexport et est utilisé pour restaurer l'exportation JSON, CSV ou TSV étendue créée par mongoexportou potentiellement un autre outil d'exportation tiers. La grande différence entre mongorestore et l' utilitaire mongoimport est le --modedrapeau qui a les options d'insertion, d'upsert et de fusion. D'après les noms seuls, nous pouvons comprendre que dans le cas du mode d'insertion , nous ne pouvons insérer que des documents _id uniques et enregistrerons l'erreur en cas de duplication. En cas d' upsert , s'il existe déjà un document avec le même _ id, le nouveau document remplacera le document précédent avec le même _ id. Le troisième cas est la fusion, où les documents existants qui correspondent à un document du fichier d'importation sont fusionnés avec le nouveau document.
Conclusion : Les utilitaires mongodump / mongorestore sont parfaits pour une stratégie de sauvegarde et de restauration de base de données mongo. Ces utilitaires nous permettent de vider et de restaurer à partir d'un seul fichier d'archive qui peut facilement être compressé et stocké ou transféré par e-mail. Le mongorestore nous permet d'inclure ou d'exclure certaines collections de l'importation et/ou de la restauration dans la nouvelle base de données avec les--nsIncludeet--nsExclude. Les utilitaires mongoexport / mongoimport sont parfaits pour travailler avec des collections dans une base de données mongo et insérer/mettre à jour des documents dans ces collections. Nous pouvons utiliser le--modedrapeau dans mongoimportpour définir si nous voulons insérer, remplacer ou fusionner des documents à partir de notre fichier importé.
Merci d'avoir lu, et vous pouvez me contacter sur LinkedIn et GitHub .
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































