sql >> Base de Datos >  >> RDS >> Mysql

Almacenar archivos de imagen en la base de datos de Mongo, ¿es una buena idea?

El problema no es tanto que la base de datos crezca, las bases de datos pueden manejar eso (aunque MongoDB no es tan bueno como muchos otros en ese sentido). El problema es que para enviar los datos al cliente, primero la base de datos debe moverlos a la RAM, luego copiarlos en la memoria de la aplicación y luego entregarlos al kernel para que los envíe a través del socket. Está desperdiciando muchos ciclos de RAM y CPU. La razón por la que es mejor tener archivos grandes en el sistema de archivos es que es más fácil evitar copiarlos, puede pedirle al kernel que transmita el archivo desde el disco al socket directamente.

La desventaja de almacenar archivos grandes en el sistema de archivos es que es mucho más difícil de distribuir. El uso de una base de datos y algo como GridFS de Mongo hace posible escalar horizontalmente. Solo debe asegurarse de no copiar todo el archivo en la memoria de la aplicación a la vez, sino una parte a la vez. La mayoría de los marcos de aplicaciones web tienen cierto soporte para enviar respuestas HTTP fragmentadas en la actualidad.