Imágenes en SQL Server

Tenemos una BD SQL Server 2000 sobre la que operan 3 aplicaciones, una para entorno de red local desarrollada en Borland C++ Builder y las otras dos para intranet e internet desarrolladas en ASP i ASP.NET. En dichas aplicaciones gestionamos una gran cantidad de archivos adjuntos, tanto imágenes (JPEG, BMP) como documentos PDF. La vinculación de las aplicaciones con estos archivos la hacemos guardando su ruta en campos varchar.
Hace poco nos hablaron de que podíamos sustituir estos campos con las rutas por campos Image (o mejor VarBinary) donde guardar directamente las imágenes y no tener que depender de los archivos y las rutas externas a la BD (esto alguna vez nos ha causado algún conflicto debido a algún cambio en algún recurso de red).
Mi pregunta es: ¿Es aconsejable dar este paso? ¿Se resentirá mucho, poco o nada el rendimiento de la BD?
Buscando, hemos encontrado dos respuestas en este mismo foro que son un poco contradictorias; las dos respuestas se refieren a sendas preguntas del día 09-03-2010 hechas para SQL Server 7.
Respuesta 1: "En cuanto a la primera cuestión te recomiendo que las imágenes las almacenes en la base de datos SQL Server 7. Es mucho más potente que Access en cuanto a la gestión de imágenes. Hay webs en las que hay Gigas de datos en campos imágenes (por ejemplo los mapas y callejeros) y funcionan perfectamente. Hace tiempo estuve leyendo un artículo sobre esto y viendo una web hecha así con SQL Server y la verdad que iba muy bien".
Respuesta 2: "Aunque lo que quieres hacer es posible, no te lo recomiendo. Lo que se suele utilizar en estos casos es que en este campo es mejor que indiques la ruta de llamada donde se encuentra la imagen, de esta forma te funcionará igualmente y no cargaras el rentimiento de la BDD ya que éstos campos almacenan en cada fila valores de 16 bytes".
¿Quién tiene razón?
Gracias y perdón por el "tostón".

1 respuesta

Respuesta
1
La palabra mágica es "depende", en este caso como en muchos otros no existe una verdad absoluta, las dos respuestas son verdaderas de acuerdo a las circunstancias, entorno o escenario.
Es recomendable "embeber" las imágenes en la BD cuando el tamaño de los archivos es pequeño, y no son muchas, un ejemplo podría ser las fotos de los empleados en una base de datos de nómina por ejemplo.
Si son muchas, entonces lo más aconsable es tener la ruta, la web de flickr (www.flickr.com) lo que dispone son de "granjas" de servidores donde se alojan las imágenes, si una imagen tiene un "peso" de unos 2MB, entonces con 500 imágenes llegamos fácilmente a 1GB, si nuestra BD está indexada correctamente acceder la información no sería afectada, pero otros factores si, como por ejemplo desplazamiento en el disco duro, hacer un backup de BD sería una tarea titánica. Otro factor es el ancho de banda, si el servidor va a "servir" las imágenes ocupará el ancho de banda para transferir la imagen hasta el cliente, mientras otras peticiones quedarán en espera. Si las imágenes están alojadas en otra computadora, la transmisión de esas imágenes se hará desde la máquina que tenga las imágenes hacia quien hace la solicitud. Claro, como uds. han experimentado, están sujetos a cuestiones de red, incluso la seguridad se ve comprometida porque cualquier usuario puede cambiar una imagen por otra o borrarla, un cambio en un nombre de computadora hace que las imágenes sean inaccesibles. En este caso hay que evaluar que esquema se ajusta mejor a nuestras necesidades y equipo (seguridad, confiabilidad, disponibilidad, capacidad de la BD, tamaño de HD, RAM, ancho de banda, etc)
Si en este momento están funcionando bien las aplicaciones con su esquema, considero que no es necesario modificar nada (No hay que componer lo que no está descompuesto).
Julius
- Guatemala -

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas