Mongoimport: actualización de la recopilación todas las noches sin interrumpir el consumo de datos

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

  •  22-10-2019
  •  | 
  •  

Pregunta

Tengo una colección de aproximadamente 625,000 objetos.

Nightly a través de Cron, recupero un archivo actualizado (TSV) de estos datos de un proveedor de datos y necesito volver a importarlos en mi MongoDB.

¿Cuál es la mejor manera de hacer esto sin interrumpir el sitio web/servicio y sus usuarios que están consumiendo los datos? ¿Es MongoImport -Upsert directamente en la colección de la mejor manera? Es tan lento.

¿Debería estar pensando en otros métodos que involucren copias de mi colección?

¿Fue útil?

Solución

¿Es MongoImport -Upsert directamente en la colección de la mejor manera? Es tan lento.

Esto funcionará, pero en mi experiencia mongoimport ha sido lento y difícil de manejar. También tiene algunas otras limitaciones serias: no hay capacidad para rastrear el progreso, no hay lugar para verificar/validación, sin registro de lo que está haciendo.

¿Debería estar pensando en otros métodos que involucren copias de mi colección?

El método alternativo aquí es escribir un script que haga esto. En la mayoría de los idiomas esto es bastante trivial.

Esto le dará la capacidad de rastrear el progreso y manejar los malos datos. Si encuentra la importación particularmente lenta, también puede desembolsar el proceso y dividir el trabajo.

Acerca de la velocidad

Recuerde que está actualizando los objetos 625K. Si puede obtener actualizaciones de 1k/segundo, eso sigue siendo 10 minutos para actualizar. Si tu corres mongostat O verifique su monitoreo durante el proceso de importación, debe tener una idea de cuánto trabajo se está haciendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top