2011-12-23 2 views
4

Я использую MongoDB, и мы очень довольны этой БД. Но в последнее время наш клиент спросил нас о размере базы данных в будущем.Как рассчитать будущий размер базы данных в Монго?

Мы знаем, как вычислить это в типичной реляционной базе данных, но у нас нет большого опыта в производстве с этой базой данных No-SQL.

вещи, которые мы знаем:

  • db.namecollections.stats() дают нам важную информацию, как, размер (документы), avgObjSize (документы), storageSize, totalIndexSize (более here)

с размером и totalIndexSize мы можем вычислить общий размер для только коллекции, но большой вопрос здесь есть:

  • Почему существует разница между размером коллекции и размером хранилища?

Как можно рассчитать это, думая о будущей величине базы данных?

ответ

3

Пункты MongoDB документируют немного, так что они могут расти немного, без необходимости перемещать их в конец коллекции на диске (дорогостоящая операция).

Кроме того, mongo предварительно распределяет файлы данных, создавая следующий и заполняя его нулями, прежде чем он понадобится для повышения скорости.

Вы можете выбросить флаг -noprealloc на mongod, чтобы предотвратить это от hapening.

Если вы хотите больше информации вы можете посмотреть here

В отношении Вашего вопроса о расчете дискового пространства 5 лет вне, если вы можете выяснить, уравнение для роста ваших данных, сделать некоторые предположения о том, что ваши средний размер документа будет, и сколько/каких индексов у вас будет, вы могли бы что-то придумать.

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

+0

Спасибо за ваш быстрый ответ Тайлер, в моем случае Деньги дороги для этого банка :(Я просто хочу быть ясным, как вычислить storageSize. Я читал о --noprealloc, но его не следует использовать на производственных серверах – KCOtzen