Mongoimport: обновление сбора ночей без прерывания потребления данных

StackOverflow https://stackoverflow.com/questions/8301421

  •  22-10-2019
  •  | 
  •  

Вопрос

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

Ночью через Cron я получаю обновленный файл (TSV) этих данных от поставщика данных и должен повторно импортировать их в мой MongoDB.

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

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

Это было полезно?

Решение

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

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

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

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

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

О скорости

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top