Я собираюсь развернуть веб-приложение, используя MongoDB в качестве хранилища. Проблема в том, что локально я могу строить индексы, когда захочу (также это делается автоматически), но вы не должны делать это в производстве. Теперь, переключаясь на производство, я не совсем уверен, когда и как часто строить индексы. Должен ли я делать это каждый день? Должен ли я делать это один раз в неделю? Мой проект похож на маленькую социальную сеть - так скажем, у меня когда-нибудь будет около 100 000 пользователей. В зависимости от объема данных создание индексов может занять часы или даже дни.
Я собираюсь построить свои индексы в фоновом режиме (см. Здесь http://www.mongodb.org/display/DOCS/Indexing+as+a+Background+Operation).. Это все равно вызовет блокировку записи, но задание на сборку будет приостановлено, чтобы другие читатели и писатели могли получить доступ к базе данных - так что если я там Это будет большая нагрузка на базу данных, фоновая сборка индекса будет по-прежнему негативно влиять на производительность. Поэтому это следует делать в пределах временного окна, когда трафик минимален (исследуется здесь http://www.javabeat.net/articles/353-indexing-in-practice-using-mongodb-1.html).
Есть ли у кого-нибудь опыт в том, когда и как часто создавать индексы в производстве (желательно с большим объемом данных)? Я использую Rails с Mongoid (http://mongoid.org/).