MongoDump e MongoRestore vs MongoExport e MongoImport

Jan 25 2023
O MongoDB é um programa de banco de dados orientado a documentos, multiplataforma e disponível no código-fonte. Classificado como um programa de banco de dados NoSQL, o MongoDB usa documentos semelhantes a JSON com esquemas opcionais.

O MongoDB é um programa de banco de dados orientado a documentos, multiplataforma e disponível no código-fonte. Classificado como um programa de banco de dados NoSQL, o MongoDB usa documentos semelhantes a JSON com esquemas opcionais.

Neste blog, falarei sobre o uso de ' mongodump e mongorestore' versus 'mongoexport e mongoimport' . O blog está considerando o fato de que os leitores deste blog vêm de um fundo MongoDB e os termos usados ​​estão intimamente relacionados apenas ao MongoDB.

Quando trabalhamos com uma organização ou trabalhamos em uma enorme base de código com uma grande quantidade de dados no banco de dados, há casos em que precisamos usar esses comandos com bastante frequência, e há muito pensamento e verificações de sanidade antes de usar esses comandos como eles manipulam os dados e a manipulação de dados grandes é uma tarefa a ser tratada com cuidado, pois pode levar ao tempo de inatividade do banco de dados ou à redundância de dados, o que, por sua vez, pode levar a uma grande perda, seja em termos de tecnologia (ou seja, para reestabilizar o banco de dados novamente) ou pode levar à perda de confiança dos usuários.

Vamos falar sobre por que precisamos desses utilitários. A partir do nome, podemos concluir que mongodump e mongoexport devem ser usados ​​para exportar dados do banco de dados, e mongorestore e mongoimport devem importar dados para o banco de dados, mas a parte importante é por que vários utilitários para tarefas semelhantes. É isso que vamos entender.

mongodump

mongodump é um utilitário de linha de comando para criar uma exportação binária do conteúdo de um banco de dados. mongodump pode exportar dados de instâncias mongod ou mongos ; ou seja, pode exportar dados de implantações autônomas, de conjuntos de réplicas e de cluster fragmentado. O comando de exemplo para usar o mongodump é:

$ mongodump --uri=<MONGO_URL> --db=<DB_NAME> --collection=<COLL_NAME>

Este é o comando a ser executado para remover o dump usando o mongodump. Por padrão, uma pasta de despejo seria criada e um despejo de banco de dados seria criado dentro da mesma pasta. Precisamos passar o MONGO_URL no --uriparâmetro ou podemos usar --user=myuser and --password=somepasspara permitir que o utilitário se conecte ao cliente MongoDB. Podemos especificar o banco de dados e a coleção para obter o despejo usando --db and --collectionparâmetros e até mesmo podemos usar --outo parâmetro para alterar o nome do diretório de despejo. Sempre que fazemos o dump, para cada coleção, ele gera dois arquivos, um é o .bsonarquivo e o outro é .metadata.jsono arquivo. Para obter mais detalhes sobre mongodump, a documentação pode ser consultada. O backup do banco de dados também pode ser executado em um arquivo morto usando o --archivecampo.

A razão pela qual usamos mongodump é que ele cria cópias binárias e é mais eficiente ( por eficiente significa que é mais rápido que mongoexport e cria um despejo de dados mais compactado ). Outro motivo é que, como o mongodump faz .bson dump, ele preserva os tipos de dados ricos BSON. Ele também preserva os índices e outras estatísticas no .metadata.jsonarquivo, portanto, assim que restaurarmos os dados, os índices serão criados implicitamente. Portanto, geralmente, é usado (e recomendado pelo MongoDB para ser usado) para backups de dados agendados via cron ou outra coisa.

Nota: Não podemos usar o --archivesinalizador e --outos sinalizadores juntos no mesmo comando mongodump.

mongorestore

mongorestore é o complemento do mongodump e é usado para importar os dados despejados via mongodump ou mongoexport. mongorestore é uma operação somente de inserção , o que significa que não substituirá um documento no banco de dados que já existe.

O Mongorestore nos permite fazer algumas opções de restauração parcial, especificando uma coleção, ou lista de coleções, que gostaríamos de restaurar em seu banco de dados. Se precisarmos restaurar apenas uma coleção, podemos usar o --collectionsinalizador no qual precisaremos especificar o --dbsinalizador com o banco de dados para o qual estamos restaurando, bem como um caminho para o BSONarquivo de coleções. Recomenda-se usar --nsIncludeo sinalizador em vez do sinalizador de coleção.

Se quisermos testar se a mongorestorefuncionará antes de importar o banco de dados, podemos usar o --dryRunpara testar se a restauração funcionará conforme o esperado. Com o --dryRunsinalizador, o mongorestore retornará as informações resumidas do mongorestore sem importar nenhum dado.

$ mongorestore --db=mydb --nsInclude="staging.*" dump/

mongoexport

mongoexport funciona da mesma maneira que mongodump, mas é menos eficiente em termos de espaço e produz despejo de dados em um formato legível por humanos, ou seja, formato JSON e, portanto, leva mais tempo também. Por padrão, mongoexport grava em stdout, mas também podemos gravar os dados em um arquivo usando o --outparâmetro. Mas, como discutimos no mongodump, o dump do mongoexport não é compactado e não produz, .metadata.jsonportanto, não pode preservar os índices e, por padrão, também não pode preservar os tipos de dados BSON avançados. Embora na versão mais recente do mongo, o mongoexport tenha suporte para preservar tipos BSON avançados usando --jsonFormat=canonicalo parâmetro.

Um benefício do mongoexport é que também podemos exportar campos específicos, usando o --fields=field1,field2...parâmetro e especificando todos os valores separados por vírgula. Também podemos usar --skip, --limite --sortno mongoexport para obter resultados filtrados e restritos. Também existem muitos campos que podemos usar enquanto estivermos usando o mongoexport. Também podemos usar --queryparâmetros para obter mais resultados/despejos filtrados. Quando fazemos o dump usando o mongoexport, torna-se fácil inseri-los em aplicativos de interface do usuário do banco de dados, como o MongoDB Compass .

mongoimport

mongoimport é o complemento de mongoexport e é usado para restaurar a exportação JSON, CSV ou TSV estendida criada por mongoexport, ou potencialmente, outra ferramenta de exportação de terceiros. A grande diferença entre o mongorestore e o utilitário mongoimport é o --modesinalizador que tem as opções de inserir, upsert e mesclar. Somente pelos nomes podemos entender que, no caso do modo de inserção , podemos inserir apenas documentos _id exclusivos e registraremos o erro em caso de duplicação. No caso de upsert , se já existir um documento com o mesmo _ id, o novo documento substituirá o documento anterior com o mesmo _ id. O terceiro caso é mesclar, onde os documentos existentes que correspondem a um documento no arquivo de importação são mesclados com o novo documento.

Conclusão: Os utilitários mongodump / mongorestore são perfeitos para uma estratégia de backup e restauração de banco de dados mongo. Esses utilitários nos permitem despejar e restaurar a partir de um único arquivo que pode ser facilmente compactado e armazenado ou transferido por e-mail. O mongorestore nos permite incluir ou excluir certas coleções de serem importadas e/ou restauradas no novo banco de dados com as--nsIncludee--nsExclude. Os utilitários mongoexport / mongoimport são ótimos para trabalhar com coleções em um banco de dados mongo e inserir/atualizar documentos nessas coleções. Podemos usar a--modebandeira no mongoimportpara definir se queremos inserir, substituir ou mesclar documentos de nosso arquivo importado.

Obrigado por ler, e você pode entrar em contato comigo no LinkedIn e no GitHub .