Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

106
Visualizações
NodeJS Optimización Almacenar objetos muy grandes en disco

Feliz viernes :)

Estoy trabajando para almacenar matrices muy grandes de objetos (cientos de miles) en el disco usando NodeJS. Funciona muy bien en mi computadora portátil increíblemente rápida, sin embargo, el rendimiento en dispositivos más lentos es una consideración principal y pensé en dejar que ustedes lo prueben para ver si me estoy perdiendo algo obvio o estoy pasando por alto una mejor manera.

Nuestro objetivo final es poder comparar la matriz actual con la matriz anterior, por lo que necesitamos la actual y la anterior, pero solo queremos cargar los datos según sea necesario para mantener el uso de RAM lo más bajo posible cuando la aplicación está inactiva.

Tenemos que usar NodeJS y no podemos usar ninguna base de datos local, debe almacenarse como un archivo normal.

Esto es lo que se me ocurrió, usando Zlib:

 let currentArray = [...] let previousArray = [] if(fs.existsSync('last.db')) { previousArray = JSON.parse(zlib.gunzipSync(fs.readFileSync('last.db')).toString('utf-8')) } fs.writeFileSync('last.db', zlib.gzipSync(JSON.stringify(currentArray)))

Buscando pensamientos, impresiones, mejoras o café :D

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

¿Considera guardar como csv en lugar de una cadena JSON? Luego puede agregar cada fila editada a un archivo .csv, separados por comas

Entonces puedes leerlo como flujo usando csv rápido

La ventaja de esto es que no necesita leer toda la base de datos en una sola variable, porque escribir/leer el archivo completo como cadena->objeto->cadena

  • análisis / stringify requiere cpu + memoria
  • almacenar en variable requiere escribir todo en la memoria

De hecho, creo que si usara fsPromises.appendFile , también puede agregar JSON.stringificar cada objeto individual como una línea separada en el archivo en lugar de clasificar toda la matriz de objetos,

Luego puede leer el archivo línea por línea https://nodejs.org/api/readline.html#readline_example_read_file_stream_line_by_line

He leído en un sitio web si carga un archivo completo (90 MB) en la memoria usando readFileSync, la memoria utilizada es de aproximadamente 224,5 MB . usar readline usa solo 6.33 MB , por lo que definitivamente es un gran aumento de rendimiento.

PD: no se pueden compartir enlaces en SO, pero si buscara en Google "node readline vs readfile", aparecerá primero.


Si el lujo de Internet está disponible, definitivamente cargaré todo en un atlas mongodb de nivel gratuito en lugar de un archivo local.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda