Almacenamiento de imágenes a gran escala
Es probable que participe en un proyecto en el que un componente importante es el almacenamiento de una gran cantidad de archivos (en este caso, imágenes, pero debería actuar como un almacenamiento de archivos).
Se espera que la cantidad de archivos entrantes sea de alrededor de 500,000 por semana (con un promedio de alrededor de 100 Kb cada uno), alcanzando un máximo de 100,000 archivos por día y 5 por segundo. Se espera que el número total de archivos alcance decenas de millones antes de alcanzar un equilibrio en el que los archivos caduquen por varias razones a la velocidad de entrada.
Por lo tanto, necesito un sistema que pueda almacenar alrededor de 5 archivos por segundo en las horas pico, mientras lee alrededor de 4 y elimina 4 en cualquier momento.
Mi idea inicial es que un sistema de archivos NTFS simple con un servicio simple para almacenar, caducar y leer debería ser suficiente. Me imagino que el servicio crea subcarpetas para cada año, mes, día y hora para mantener al mínimo el número de archivos por carpeta y permitir la caducidad manual en caso de que sea necesario.
Se ha discutido una gran solución NTFSaquí, pero aún podría usar algunos consejos sobre qué problemas esperar al construir un almacenamiento con las especificaciones mencionadas, qué problemas de mantenimiento esperar y qué alternativas existen. Preferiblemente me gustaría evitar un almacenamiento distribuido, si es posible y práctico.
editar
Gracias por todos los comentarios y sugerencias. Más información adicional sobre el proyecto:
Esta no es una aplicación web donde las imágenes son proporcionadas por los usuarios finales. Sin revelar demasiado, ya que esto está en la fase de contrato, está más en la categoría de control de calidad. Piense en una planta de producción con cinta transportadora y sensores. No es un control de calidad tradicional ya que el valor del producto depende completamente de que la base de datos de imágenes y metadatos funcione sin problemas.
Una aplicación autónoma accede al 99% de las imágenes en orden de entrada, primera salida, pero también se produce acceso aleatorio por parte de una aplicación de usuario. Las imágenes de más de un día servirán principalmente para propósitos de archivo, aunque ese propósito también es muy importante.
La caducidad de las imágenes sigue reglas complejas por varias razones, pero en alguna fecha todas las imágenes deben eliminarse. Las reglas de eliminación siguen la lógica empresarial que depende de los metadatos y las interacciones del usuario.
Habrá tiempo de inactividad cada día, donde se puede realizar el mantenimiento.
Preferiblemente, el almacenamiento de archivos no tendrá que comunicar la ubicación de la imagen al servidor de metadatos. La ubicación de la imagen debe deducirse únicamente de los metadatos, posiblemente a través de una base de datos de mapeo, si se elige algún tipo de hashing o sistema distribuido.
Entonces mis preguntas son:
¿Qué tecnologías harán un trabajo robusto?¿Qué tecnologías tendrán los costos de implementación más bajos?¿Qué tecnologías serán más fáciles de mantener por el departamento de TI del cliente?¿Qué riesgos existen para una tecnología dada a esta escala (datos de 5-20 TB, 10-100 millones de archivos)?