Mongoimport: обновление коллекции ночью без прерывания потребления данных - PullRequest
2 голосов
/ 28 ноября 2011

У меня есть коллекция приблизительно из 625 000 объектов.

Ночью через cron я получаю обновленный файл (tsv) этих данных от поставщика данных, и мне необходимо повторно импортировать их в мой mongodb.

Каков наилучший способ сделать это, не прерывая работу веб-сайта / службы и ее пользователей, которые потребляют данные?Является ли mongoimport --upsert непосредственно в коллекции лучшим способом?Это так медленно.

Стоит ли думать о других методах, использующих копии моей коллекции?

1 Ответ

1 голос
/ 29 ноября 2011

Является ли mongoimport --upsert непосредственно в коллекции лучшим способом? Это так медленно.

Это будет работать, но по моему опыту mongoimport был медленным и громоздким. У него также есть некоторые серьезные ограничения: нет возможности отслеживать прогресс, нет места для проверки / проверки, нет журнала о том, что он делает.

Должен ли я думать о других методах, связанных с копиями моей коллекции?

Альтернативный метод здесь - написать скрипт, который делает это. На большинстве языков это довольно тривиально.

Это даст вам возможность отслеживать прогресс и обрабатывать неверные данные. Если вы обнаружите, что импорт особенно медленный, вы также можете разорвать процесс и разделить работу.

О скорости

Помните, что вы обновляете 625 тыс. Объектов. Если вы можете получить 1k обновлений в секунду, это еще 10 минут для обновления. Если вы запускаете mongostat или проверяете мониторинг во время процесса импорта, вы должны получить представление о том, сколько работы выполняется.

...