¿Almacenar imágenes de perfil de usuario en el disco o en la base de datos?

Estoy creando una aplicación asp.net mvc donde los usuarios pueden adjuntar una imagen a su perfil, pero también en otras áreas del sistema, como un gadget de mensajería en el tablero que muestra mensajes recientes, etc.

Cuando el usuario carga estos, me pregunto si sería mejor almacenarlos en la base de datos o en el disco.

Ventajas de Databse

fácil de hacer una copia de seguridad de toda la base de datos y mantener el contenido / imágenes del perfil con tablas asociadas de perfil / usuario

cuando construyo servicios web más adelante, solo pueden extraer todos los datos relacionados con el perfil de un punto (la base de datos)

Ventajas del sistema de archivos

cargar archivos desde el disco es probablemente más rápido

alguna otra ventaja?

¿Dónde almacenan otros sitios este tipo de información? ¿Tengo razón en preocuparme un poco por el rendimiento de la base de datos para algo como esto?

¿Tal vez habría una manera de almacenar en caché las imágenes extraídas de la base de datos por un período de tiempo?

Alternativamente, ¿qué pasa con la idea de almacenar estas imágenes en la base de datos, pero copiarlas en el disco para que el servidor web pueda cargarlas desde allí? Esto parecería proporcionar tanto la copia de seguridad como la comodidad de un Db, al tiempo que brinda las ventajas de velocidad de los archivos en el disco.

Infraestructura en cuestión

El sitio web se implementará en IIS en Windows Server 2003 con el sistema de archivos NTFS.La base de datos será SQL Server 2008

Resumen

Al leer muchos hilos relacionados aquí en SO, muchas personas ahora tienden hacia el tipo de SQL Server Filestream. Sin embargo, por lo que pude reunir (puedo estar equivocado), no hay mucho beneficio cuando los archivos son bastante pequeños. Sin embargo, la transmisión de archivos busca mejorar en gran medida el rendimiento cuando los archivos tienen varios MB o más.

Como las imágenes de mi perfil tienden a estar alrededor de ~ 5kb, decidí dejarlas almacenadas en un almacén de archivos en la base de datos como varbinary (max).

En ASP.NET MVC, vi un pequeño problema de rendimiento al devolver FileContentResults para imágenes extraídas de la base de datos de esta manera. Así que terminé almacenando en caché el archivo en el disco cuando se lee si la ubicación de este archivo no se encuentra en el caché de mi aplicación.

Así que supongo que fui por un híbrido;

Almacenamiento de base de datos para facilitar la recopilación de datos y los archivos están vinculados directamente a los perfilesInstantáneas en disco para permitir un mejor almacenamiento en caché

En cualquier momento, puedo eliminar la carpeta de caché en el disco y, a medida que se vuelven a solicitar las imágenes, se volverán a copiar en el primer golpe y se servirán desde la caché allí después.

Respuestas a la pregunta(2)

Su respuesta a la pregunta