Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

189
Vistas
node.js procesa una gran colección de datos

Estoy trabajando con mongoose en node. Estoy haciendo solicitudes para recuperar una colección de elementos de una base de datos remota. Para obtener un informe completo, necesito analizar una colección completa, que es un conjunto grande.

Evito acercarme a cosas como:

 model.find({}, function(err, data) { // process the bunch of data })

Por ahora, uso un enfoque recursivo en el que introduzco una variable local. Más tarde envío información sobre el proceso como respuesta.

 app.get('/process/it/',(req,res)=>{ var processed_data=[]; function resolve(procdata) { res.json({status:"ok", items:procdata.length}); } function handler(data, procdata, start, n) { if(data.length <= n) resolve(procdata); else { // do something with data: push into processed_data procdata.push(whatever); mongoose.model('model').find({}, function(err, data){ handler(data, procdata, start+n, n); }).skip(start).limit(n); } } n=0 mysize=100 // first call mongoose.model('model').find({}, function(err, data){ handler(data, processed_data, n, mysize); }).skip(n).limit(mysize); })

¿Existe algún enfoque o solución que brinde alguna ventaja de rendimiento, o simplemente, para lograrlo de una mejor manera?

Cualquier ayuda sería apreciada.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La solución depende del caso de uso.

Si los datos una vez procesados no cambian con frecuencia, tal vez pueda tener una base de datos secundaria que tenga los datos procesados.

Puede cargar datos sin procesar desde la base de datos principal utilizando la paginación de la forma en que lo está haciendo ahora. Y todos los datos procesados se pueden cargar desde la base de datos secundaria en una sola consulta.

over 4 years ago · Santiago Trujillo Denunciar

0

Está bien siempre que su conjunto de datos no sea lo suficientemente grande, aunque el rendimiento podría ser bajo. Cuando llegue al nivel de gigabytes, su aplicación simplemente fallará porque la máquina no tendrá suficiente memoria para almacenar sus datos antes de enviarlos al cliente. Además, el envío de gigabytes de datos de informes llevará mucho tiempo. Aquí algunas sugerencias:

  • Intente agregar sus datos mediante el marco agregado de Mongo, en lugar de hacerlo mediante el código de su aplicación.
  • Intente dividir los datos del informe en informes más pequeños.
  • Pregenerar datos de informes, almacenarlos en algún lugar (quizás otra colección) y simplemente enviarlos al cliente cuando necesiten verlos
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda