sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Es GridFS lo suficientemente rápido y confiable para la producción?

Uso gridfs en el trabajo en uno de nuestros servidores que es parte de un sitio web de comparación de precios con estadísticas de tráfico honorables (alrededor de 25k visitantes por día). El servidor no tiene mucha ram, 2 gigas, e incluso la CPU no es muy rápida (Core 2 duo 1.8Ghz) pero el servidor tiene mucho espacio de almacenamiento:10Tb (sata) en configuración raid 0. El trabajo que está haciendo el servidor es muy simple:

Cada producto en nuestro comparador de precios tiene una imagen (hay alrededor de 10 millones de productos según nuestra base de datos de productos), y el trabajo de los servidores es descargar la imagen, cambiar su tamaño, almacenarla en gridfs y entregarla al navegador de los visitantes. .. si no está presente en la grilla... o... entregarlo al navegador de los visitantes si ya está almacenado en la grilla. Entonces, esto podría llamarse un "esquema cdn tradicional".

Hemos almacenado y procesado 4 millones de imágenes en este servidor desde que está en funcionamiento. El cambio de tamaño y el almacenamiento se realizan mediante un simple script php... pero seguro, un script de python o algo como Java podría ser más rápido.

Tamaño de datos actual:11,23 g

Tamaño de almacenamiento actual:12,5 g

Índices:5

Tamaño del índice:849,65 m

Acerca de la confiabilidad:Esto es muy confiable. El servidor no carga, el tamaño del índice está bien, las consultas son rápidas

Acerca de la velocidad:por supuesto, no es tan rápido como el almacenamiento local de archivos, tal vez un 10% más lento, pero lo suficientemente rápido como para usarse en tiempo real incluso cuando la imagen necesita ser procesada, que en nuestro caso depende mucho de php. Los tiempos de mantenimiento y desarrollo también se han reducido:se volvió tan simple eliminar una o varias imágenes:simplemente consulte la base de datos con un simple comando de eliminación. Otra cosa interesante:cuando reiniciamos nuestro antiguo servidor, con almacenamiento de archivos local (tanto millones de archivos en miles de carpetas), a veces se bloquea durante horas porque el sistema estaba realizando una verificación de integridad de archivos (esto realmente tomó horas...). Ya no tenemos este problema con gridfs, nuestras imágenes ahora se almacenan en grandes fragmentos de mongodb (archivos de 2 gb)

Así que... en mi mente... Sí, gridfs es lo suficientemente rápido y confiable para ser utilizado en producción.