MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Reduzindo o tamanho do arquivo de banco de dados MongoDB


ATUALIZAÇÃO: com o compact comando e WiredTiger parece que o espaço extra em disco será realmente liberado para o sistema operacional.

ATUALIZAÇÃO: a partir da v1.9+ existe um compact comando.

Este comando irá realizar uma compactação "in-line". Ele ainda vai precisar de algum espaço extra, mas não tanto.

O MongoDB compacta os arquivos por:
  • copiando os arquivos para um novo local
  • percorrer os documentos e reordenar/resolvê-los
  • substituindo os arquivos originais pelos novos arquivos

Você pode fazer essa "compressão" executando mongod --repair ou conectando-se diretamente e executando db.repairDatabase() .

Em ambos os casos, você precisa de espaço em algum lugar para copiar os arquivos. Agora não sei por que você não tem espaço suficiente para realizar uma compactação, no entanto, você tem algumas opções se tiver outro computador com mais espaço.
  1. Exporte o banco de dados para outro computador com o Mongo instalado (usando mongoexport ) e então você pode importar esse mesmo banco de dados (usando mongoimport ). Isso resultará em um novo banco de dados mais compactado. Agora você pode parar o mongod original substitua pelos novos arquivos de banco de dados e pronto.
  2. Pare o mongod atual e copie os arquivos do banco de dados para um computador maior e execute o reparo nesse computador. Você pode então mover os novos arquivos de banco de dados de volta para o computador original.

Atualmente, não há uma boa maneira de "compactar no local" usando o Mongo. E o Mongo definitivamente pode sugar muito espaço.

A melhor estratégia agora para compactação é executar uma configuração Master-Slave. Você pode então compactar o Slave, deixá-lo acompanhar e trocá-los. Eu sei ainda um pouco peludo. Talvez a equipe do Mongo apresente uma compactação melhor no local, mas não acho que esteja no topo da lista. O espaço em disco é atualmente considerado barato (e geralmente é).