2013-12-06 2 views
1

У меня есть осколок монго, созданный в моей производственной среде. В моем приложении я создаю db на ежедневной основе, так как мой размер дневного db достигает 18 ГБ.Удалить коллекцию из mongo db огромных размеров и вернуть пространство

У меня есть коллекция в моей БД, которая регистрирует необработанные данные для хитов моего сайта. Я использую эту коллекцию только для одного дня, так как все исходные данные преобразуются в агрегированные данные по моему сценарию db.

Я хочу удалить эту коллекцию в конце дня, но мое замешательство связано с большими размерами этой коллекции (почти 6 ГБ), а размер моего db превышает 17 ГБ, безопасно использовать команду восстановления базы данных.

Не могли бы вы предложить мне способ сделать это.

ответ

1

MongoDB (at at 2.4) в настоящее время выделяет хранилище на уровне базы данных. Вы правы, что вам нужно будет запустить команду repairDatabase, чтобы вернуть preallocated storage.

Если это пространство снова будет повторно использовано (т. Е. На следующий день необработанных данных), вы можете просто оставить его выделенным, а не выполнять ремонт. Если вы обрабатываете разные объемы данных каждый день, это может привести к чрезмерному хранению, поскольку вы в основном останетесь на «высоком водяном знаке», где у вас больше всего выделенного хранилища.

Если вас беспокоит использование пространства, лучшим подходом было бы добавить необработанные данные в отдельную базу данных, которую вы можете удалить, когда вам больше не нужны необработанные данные (то есть ваши исходные данные переходят в отдельный DB/коллекция в день вместо отдельной коллекции).

Смежные вопросы