2014-01-17 3 views
0

Ищете очень чистый и дешевый способ избавиться от старых данных и вернуть дисковое пространство обратно в ОС без боли.MongoDB: Разделите большой набор данных самостоятельно?

Я хранил данные выборки (отметка времени + связка свойств). Много. Каждый образец представляет собой единый документ, и коллекция становится огромной.

Обрезанные коллекции не могут быть и речи, потому что мне нужно хранить данные на основе временного диапазона, а не на размере, которое требуется. Коллекции TTL не хороши из-за пространства, требуемого индексом TTL, оно может расти смехотворно большим. Sharding отсутствует по другим причинам.

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

Вопрос в том, что я должен использовать для «раздела»? Коллекции или база данных? Технически я мог бы пойти в любом случае, приложение основано на Java, я мог бы легко управлять набором коллекций или баз данных.

Моя забота о падении коллекций заключается в том, что у mongodb возникла проблема с возвратом дискового пространства обратно в ОС. Затем он пытается его повторно использовать, могут быть проблемы с фрагментацией, нужно делать repair() .. и тому подобное.

Будут ли базы данных быть более эффективными?

Опять же, мне нужен наименее разрушительный способ избавиться от паролей terra старых данных, продолжая накачивать новые данные. Если у вас есть опыт работы с любым из этих подходов, поделитесь им.

ответ

1

Каждую неделю я просто начинаю новый раздел.

Одним из распространенных решений является создание коллекции в неделю, назовите ее чем-то вроде recordings_wk53, а затем просто отбрасывайте эту коллекцию каждую неделю.

Коллекции или база данных?

Коллекции будут легче управлять в вашем приложении и могут быть быстрее, так как есть меньше файлов для удаления (и т. Д.), Но НЕ освобождает место на диске для ОС.

Теперь вы можете сделать это с базами данных относительно легко, вы могли бы создать соединение в неделю в своем приложении, если только ваше управление 100-м должно быть прекрасным, и поскольку вы не используете их как средство масштабирования по вертикали, Шаблоны OPs и т. Д. Должны быть довольно хорошими для использования.

Будет ли снижать базу данных более эффективным способом?

Мда это очень субъективный и самоуверенный вопрос, но я бы, вероятно, пойти на инкассо, то MongoDB может просто повторно использовать эту коллекцию мгновенно, без необходимости перераспределять все это пространство, я имею в виду, поэтому MongoDB не освобождает пространство обратно к ОС; поэтому ему не нужно возвращать его, что может быть медленным.

+0

спасибо, это то, что я хотел услышать, что отбрасывающая коллекция не восстанавливает дисковое пространство при удалении базы данных. – Dima

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