Según mi experiencia, tuve que gestionar ambas situaciones: imágenes almacenadas en la base de datos e imágenes en el sistema de archivos con la ruta almacenada en db.
La primera solución, las imágenes en la base de datos, es algo "más limpia", ya que su capa de acceso a datos tendrá que tratar solo con objetos de la base de datos; pero esto es bueno solo cuando tienes que lidiar con números bajos.
Obviamente, el rendimiento del acceso a la base de datos cuando se trata con objetos binarios grandes se degrada, y las dimensiones de la base de datos crecerán mucho, causando nuevamente una pérdida de rendimiento ... y normalmente el espacio de la base de datos es mucho más costoso que el espacio del sistema de archivos.
Por otro lado, tener grandes objetos binarios almacenados en el sistema de archivos hará que tenga planes de respaldo que tengan que considerar tanto la base de datos como el sistema de archivos, y esto puede ser un problema para algunos sistemas.
Otra razón para optar por el sistema de archivos es cuando tiene que compartir sus datos de imágenes (o sonidos, video, lo que sea) con acceso de terceros: en estos días estoy desarrollando una aplicación web que utiliza imágenes a las que se debe acceder desde "fuera "mi granja web de tal manera que el acceso a una base de datos para recuperar datos binarios es simplemente imposible. Entonces, a veces también hay consideraciones de diseño que lo llevarán a elegir.
Considere también, al hacer esta elección, si tiene que lidiar con el permiso y la autenticación al acceder a objetos binarios: estos requisitos normalmente se pueden resolver de una manera más fácil cuando los datos se almacenan en db.