Manejo de imagenes

24/02/2004 - 23:28 por Jorge Ramón | Informe spam
Hola, estoy trabajando un proyecto en el cual el manejo
de imágenes es crítico. Estamos hablando de alrededor de
unas 100,000 imagenes de tamaño regular diarias con un
historial de dos meses.

Mi pregunta es, Qué tan recomendable es utilizar SQL
Server para almacenar estas imágenes?

Alguna sugerencia?

Gracias y Saludos!

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
24/02/2004 - 23:40 | Informe spam
Hola!! bue es un tema mas que recurrente este (muchachos de las FAQ andan
por ahi?)

Todo depende, tenerlas en el motor tiene sus ventajas y sus no tan ventajas:

Las ventajas son mas que visibles creo (no tendrias problemas de links rotos
o cambiados, si haces un backup copias hasta las imagenes,etc)

Ahora como gran desventaja es el tamaño que esto puede llegar a consumirle a
SqlServer, aqui quizas puedas poner un control de que tan grande puede ser
una imagen, pero si la cosa es muy pesada te recomiendo que pases al plan B
(que de por si debe ser mas viejo que mi abuelita :p)

Este plan consiste en tener en la BDD solo el link de la imagen y listo!!

Para solucionar el tema de links rotos, lo que yo hago es un proceso que
cada X tiempo verifica las inconsistencias y alerta a el Admin del Sistema.

Claro esto no garantiza que te cambien una imagen por otra aunque quizas
aqui pueda aplicar algun truquillo que aprendi por ahi:

Como sabes un Archivo tiene un tamaño (kb por ej) y adentro del mismo tiene
su codigo en Hexa, bue lo que se puede hacer es que en la BDD exista:

El tam del Archivo y por ej tantos Bytes internos del archivo (esto
dependera del archivo, si sos observador veras que cualquier archivo empieza
hasta una X posicion igual y luego cambia, eso es porque en su principio
quizas este solo el formato (jpg,blbla) y luego los datos propiamente
dichos)

Si esto lo tienes guardado como dato, tambien puedes hacer un proceso que lo
verifique como el anterior de los links y ademas de ello que cada vez que se
lea el Archivo se verifiquen esas marcas contra la de la BDD.

No es Guauuuu esto pero ayuda y un monton de verdad.

Con respecto a la ubicacion quizas sea muy interesante que definas una
variable a la que le pones la ruta ej (\\servidor\d\blabla)

Bue todo esto son solo algunas cosas, espero te sea util de verdad




Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Jorge Ramón" escribió en el mensaje
news:0c1c01c3fb25$7a2fcaa0$
Hola, estoy trabajando un proyecto en el cual el manejo
de imágenes es crítico. Estamos hablando de alrededor de
unas 100,000 imagenes de tamaño regular diarias con un
historial de dos meses.

Mi pregunta es, Qué tan recomendable es utilizar SQL
Server para almacenar estas imágenes?

Alguna sugerencia?

Gracias y Saludos!
Respuesta Responder a este mensaje
#2 Jorge Ramón
25/02/2004 - 00:24 | Informe spam
Hola Maximiliano, gracias por tu pronta respuesta.

La opción de almacenar el path/nombre de archivo de las
imagenes es una de las alternativas que he considerado.

Estoy investigando acerca de la opción de almacenarlas
dentro de SQL por diversas razónes. Entre ellas:

* Las imagenes no estarían a la vista sino protegidas
bajo el esquema de seguridad de SQL.
* El sistema realizará varias operaciones con las
imagenes que, si se almacenan en directorios y se utiliza
un enlace en la base de datos que apunta a ellas,
implicaría varios accesos a disco (para mover las
imágenes de un directorio a otro) que podrían llegar a
ser problemáticos para el servidor.
* Integridad de los datos

Obviamente, así como vos decís, también tiene sus
desventajas. He oído comentarios acerca de que SQL
Server realmente no es bueno para el manejo de imágenes,
que es demasiado lento, etc.; y por ello quisiera tenér
algunos parámetros en los cuales basarme para tomar la
decisión de almacenar estas imágenes dentro de la base de
datos o directamente en el disco.

Vos mencionás el tamaño de la base de datos. Qué tamaño
puedo considerar como crítico? Qué otros datos debo tomar
en cuenta? Qué otras desventajas/ventajas puedo tener?

Gracias por tu ayuda, y espero no estar abusando de tu
confianza.

Saludos!

Hola!! bue es un tema mas que recurrente este (muchachos


de las FAQ andan
por ahi?)

Todo depende, tenerlas en el motor tiene sus ventajas y


sus no tan ventajas:

Las ventajas son mas que visibles creo (no tendrias


problemas de links rotos
o cambiados, si haces un backup copias hasta las


imagenes,etc)

Ahora como gran desventaja es el tamaño que esto puede


llegar a consumirle a
SqlServer, aqui quizas puedas poner un control de que


tan grande puede ser
una imagen, pero si la cosa es muy pesada te recomiendo


que pases al plan B
(que de por si debe ser mas viejo que mi abuelita :p)

Este plan consiste en tener en la BDD solo el link de la


imagen y listo!!

Para solucionar el tema de links rotos, lo que yo hago


es un proceso que
cada X tiempo verifica las inconsistencias y alerta a el


Admin del Sistema.

Claro esto no garantiza que te cambien una imagen por


otra aunque quizas
aqui pueda aplicar algun truquillo que aprendi por ahi:

Como sabes un Archivo tiene un tamaño (kb por ej) y


adentro del mismo tiene
su codigo en Hexa, bue lo que se puede hacer es que en


la BDD exista:

El tam del Archivo y por ej tantos Bytes internos del


archivo (esto
dependera del archivo, si sos observador veras que


cualquier archivo empieza
hasta una X posicion igual y luego cambia, eso es porque


en su principio
quizas este solo el formato (jpg,blbla) y luego los


datos propiamente
dichos)

Si esto lo tienes guardado como dato, tambien puedes


hacer un proceso que lo
verifique como el anterior de los links y ademas de ello


que cada vez que se
lea el Archivo se verifiquen esas marcas contra la de la


BDD.

No es Guauuuu esto pero ayuda y un monton de verdad.

Con respecto a la ubicacion quizas sea muy interesante


que definas una
variable a la que le pones la ruta ej


(\\servidor\d\blabla)

Bue todo esto son solo algunas cosas, espero te sea util


de verdad




Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina



-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms.../desarroll


ador/default.asp



-
(maxi_accotto[arroba]speedy.com.ar)
MSN:



-

"Jorge Ramón" escribió en el mensaje
news:0c1c01c3fb25$7a2fcaa0$
Hola, estoy trabajando un proyecto en el cual el manejo
de imágenes es crítico. Estamos hablando de alrededor de
unas 100,000 imagenes de tamaño regular diarias con un
historial de dos meses.

Mi pregunta es, Qué tan recomendable es utilizar SQL
Server para almacenar estas imágenes?

Alguna sugerencia?

Gracias y Saludos!


.

Respuesta Responder a este mensaje
#3 Maximiliano Damian Accotto
25/02/2004 - 01:04 | Informe spam
Hola!! bueno hay algunos puntos en los cuales estoy de acuerdo y en otros
no!!

El que mencionas de las operaciones con las imagenes sobre todo!! el que
deberia hacer las operaciones es la capa del Cliente y no el motor, por lo
cual el problema de pasar info por la red no desaparece.

En el punto de la seguridad tambien no estoy de acuerdo por lo siguiente:
tu aplicacion deberia tener usuarios los cuales se conectan al motor, si
usas autentificacion de Windows a estos mismos usuarios les das acceso a el
path y listo, otra tecnica es ocultar las imagenes via encriptacion (hay
algunas DLL muy piolas para esto).

Claro todo esto de poner las imagenes si son muy pesadas hara lento tu
Servidor.

No hay un tamaño ideal de BDD, he conocido casos que tienen BDD que superan
el TB, el tema es si eso lo llenas de imagenes para mi es una locura, y vas
a tener que tener mucho Hard para soportar semejante carga.

Ahora el tema de las imagenes no es un problema se SqlServer, cualquier
motor tiene el mismo problema en general!!!

Deberias de monitorias muy pero muy bien el rendimiento de tu servidor si
vas a optar por tener las imagenes en la BDD y no en Path, pero tu sabras
mejor que yo el ambiente y yo supongo que habras hecho un buen analisis del
Sistema (cuando hablo del sistema no hablo solo la parte programacion, sino
SISTEMA o sea: Soft,BDD,Hard,Usuarios, todo estos son parte de tu sistema)

Bye Bye

Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Jorge Ramón" escribió en el mensaje
news:0c8b01c3fb2d$69941b80$
Hola Maximiliano, gracias por tu pronta respuesta.

La opción de almacenar el path/nombre de archivo de las
imagenes es una de las alternativas que he considerado.

Estoy investigando acerca de la opción de almacenarlas
dentro de SQL por diversas razónes. Entre ellas:

* Las imagenes no estarían a la vista sino protegidas
bajo el esquema de seguridad de SQL.
* El sistema realizará varias operaciones con las
imagenes que, si se almacenan en directorios y se utiliza
un enlace en la base de datos que apunta a ellas,
implicaría varios accesos a disco (para mover las
imágenes de un directorio a otro) que podrían llegar a
ser problemáticos para el servidor.
* Integridad de los datos

Obviamente, así como vos decís, también tiene sus
desventajas. He oído comentarios acerca de que SQL
Server realmente no es bueno para el manejo de imágenes,
que es demasiado lento, etc.; y por ello quisiera tenér
algunos parámetros en los cuales basarme para tomar la
decisión de almacenar estas imágenes dentro de la base de
datos o directamente en el disco.

Vos mencionás el tamaño de la base de datos. Qué tamaño
puedo considerar como crítico? Qué otros datos debo tomar
en cuenta? Qué otras desventajas/ventajas puedo tener?

Gracias por tu ayuda, y espero no estar abusando de tu
confianza.

Saludos!

Hola!! bue es un tema mas que recurrente este (muchachos


de las FAQ andan
por ahi?)

Todo depende, tenerlas en el motor tiene sus ventajas y


sus no tan ventajas:

Las ventajas son mas que visibles creo (no tendrias


problemas de links rotos
o cambiados, si haces un backup copias hasta las


imagenes,etc)

Ahora como gran desventaja es el tamaño que esto puede


llegar a consumirle a
SqlServer, aqui quizas puedas poner un control de que


tan grande puede ser
una imagen, pero si la cosa es muy pesada te recomiendo


que pases al plan B
(que de por si debe ser mas viejo que mi abuelita :p)

Este plan consiste en tener en la BDD solo el link de la


imagen y listo!!

Para solucionar el tema de links rotos, lo que yo hago


es un proceso que
cada X tiempo verifica las inconsistencias y alerta a el


Admin del Sistema.

Claro esto no garantiza que te cambien una imagen por


otra aunque quizas
aqui pueda aplicar algun truquillo que aprendi por ahi:

Como sabes un Archivo tiene un tamaño (kb por ej) y


adentro del mismo tiene
su codigo en Hexa, bue lo que se puede hacer es que en


la BDD exista:

El tam del Archivo y por ej tantos Bytes internos del


archivo (esto
dependera del archivo, si sos observador veras que


cualquier archivo empieza
hasta una X posicion igual y luego cambia, eso es porque


en su principio
quizas este solo el formato (jpg,blbla) y luego los


datos propiamente
dichos)

Si esto lo tienes guardado como dato, tambien puedes


hacer un proceso que lo
verifique como el anterior de los links y ademas de ello


que cada vez que se
lea el Archivo se verifiquen esas marcas contra la de la


BDD.

No es Guauuuu esto pero ayuda y un monton de verdad.

Con respecto a la ubicacion quizas sea muy interesante


que definas una
variable a la que le pones la ruta ej


(\\servidor\d\blabla)

Bue todo esto son solo algunas cosas, espero te sea util


de verdad




Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina



-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms.../desarroll


ador/default.asp



-
(maxi_accotto[arroba]speedy.com.ar)
MSN:



-

"Jorge Ramón" escribió en el mensaje
news:0c1c01c3fb25$7a2fcaa0$
Hola, estoy trabajando un proyecto en el cual el manejo
de imágenes es crítico. Estamos hablando de alrededor de
unas 100,000 imagenes de tamaño regular diarias con un
historial de dos meses.

Mi pregunta es, Qué tan recomendable es utilizar SQL
Server para almacenar estas imágenes?

Alguna sugerencia?

Gracias y Saludos!


.

Respuesta Responder a este mensaje
#4 perezh
26/02/2004 - 22:13 | Informe spam
Permitanme que les cuente mi breve experiencia. trabaje
casi 5 años en procesamiento de documentos de compensacion
bancaria. El procesamiento se hacia basado en la captura
de las imagenes de dichos documentos (boletas de deposito
y cheques) con scanners de alta velocidad (500 doc por
min). A esa velocidad se grababan en la base de datos.
Guardabamos la imagen como un dato mas dentro del base de
datos. En una red ethernet de 100 Mbps con 40 operadores
en linea se tardaba menos de 1 seg. en mostrar la imagen
del documento en pantalla para el data entry. procesabamos
cerca de 300.000 imagenes por dia. Definitivamente
recomiendo almacenar la imagen dentro de la base de datos.
Detalle: usamos Oracle. Creo que con SQl Server habria que
hacer pruebas pero no creo que 100.00 imagenes representen
un problema.
Hola!! bueno hay algunos puntos en los cuales estoy de


acuerdo y en otros
no!!

El que mencionas de las operaciones con las imagenes


sobre todo!! el que
deberia hacer las operaciones es la capa del Cliente y no


el motor, por lo
cual el problema de pasar info por la red no desaparece.

En el punto de la seguridad tambien no estoy de acuerdo


por lo siguiente:
tu aplicacion deberia tener usuarios los cuales se


conectan al motor, si
usas autentificacion de Windows a estos mismos usuarios


les das acceso a el
path y listo, otra tecnica es ocultar las imagenes via


encriptacion (hay
algunas DLL muy piolas para esto).

Claro todo esto de poner las imagenes si son muy pesadas


hara lento tu
Servidor.

No hay un tamaño ideal de BDD, he conocido casos que


tienen BDD que superan
el TB, el tema es si eso lo llenas de imagenes para mi es


una locura, y vas
a tener que tener mucho Hard para soportar semejante


carga.

Ahora el tema de las imagenes no es un problema se


SqlServer, cualquier
motor tiene el mismo problema en general!!!

Deberias de monitorias muy pero muy bien el rendimiento


de tu servidor si
vas a optar por tener las imagenes en la BDD y no en


Path, pero tu sabras
mejor que yo el ambiente y yo supongo que habras hecho un


buen analisis del
Sistema (cuando hablo del sistema no hablo solo la parte


programacion, sino
SISTEMA o sea: Soft,BDD,Hard,Usuarios, todo estos son


parte de tu sistema)

Bye Bye

Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...desarrolla


dor/default.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Jorge Ramón" escribió en el mensaje
news:0c8b01c3fb2d$69941b80$
Hola Maximiliano, gracias por tu pronta respuesta.

La opción de almacenar el path/nombre de archivo de las
imagenes es una de las alternativas que he considerado.

Estoy investigando acerca de la opción de almacenarlas
dentro de SQL por diversas razónes. Entre ellas:

* Las imagenes no estarían a la vista sino protegidas
bajo el esquema de seguridad de SQL.
* El sistema realizará varias operaciones con las
imagenes que, si se almacenan en directorios y se utiliza
un enlace en la base de datos que apunta a ellas,
implicaría varios accesos a disco (para mover las
imágenes de un directorio a otro) que podrían llegar a
ser problemáticos para el servidor.
* Integridad de los datos

Obviamente, así como vos decís, también tiene sus
desventajas. He oído comentarios acerca de que SQL
Server realmente no es bueno para el manejo de imágenes,
que es demasiado lento, etc.; y por ello quisiera tenér
algunos parámetros en los cuales basarme para tomar la
decisión de almacenar estas imágenes dentro de la base de
datos o directamente en el disco.

Vos mencionás el tamaño de la base de datos. Qué tamaño
puedo considerar como crítico? Qué otros datos debo tomar
en cuenta? Qué otras desventajas/ventajas puedo tener?

Gracias por tu ayuda, y espero no estar abusando de tu
confianza.

Saludos!

Hola!! bue es un tema mas que recurrente este (muchachos


de las FAQ andan
por ahi?)

Todo depende, tenerlas en el motor tiene sus ventajas y


sus no tan ventajas:

Las ventajas son mas que visibles creo (no tendrias


problemas de links rotos
o cambiados, si haces un backup copias hasta las


imagenes,etc)

Ahora como gran desventaja es el tamaño que esto puede


llegar a consumirle a
SqlServer, aqui quizas puedas poner un control de que


tan grande puede ser
una imagen, pero si la cosa es muy pesada te recomiendo


que pases al plan B
(que de por si debe ser mas viejo que mi abuelita :p)

Este plan consiste en tener en la BDD solo el link de la


imagen y listo!!

Para solucionar el tema de links rotos, lo que yo hago


es un proceso que
cada X tiempo verifica las inconsistencias y alerta a el


Admin del Sistema.

Claro esto no garantiza que te cambien una imagen por


otra aunque quizas
aqui pueda aplicar algun truquillo que aprendi por ahi:

Como sabes un Archivo tiene un tamaño (kb por ej) y


adentro del mismo tiene
su codigo en Hexa, bue lo que se puede hacer es que en


la BDD exista:

El tam del Archivo y por ej tantos Bytes internos del


archivo (esto
dependera del archivo, si sos observador veras que


cualquier archivo empieza
hasta una X posicion igual y luego cambia, eso es porque


en su principio
quizas este solo el formato (jpg,blbla) y luego los


datos propiamente
dichos)

Si esto lo tienes guardado como dato, tambien puedes


hacer un proceso que lo
verifique como el anterior de los links y ademas de ello


que cada vez que se
lea el Archivo se verifiquen esas marcas contra la de la


BDD.

No es Guauuuu esto pero ayuda y un monton de verdad.

Con respecto a la ubicacion quizas sea muy interesante


que definas una
variable a la que le pones la ruta ej


(\\servidor\d\blabla)

Bue todo esto son solo algunas cosas, espero te sea util


de verdad




Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina



-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms.../desarroll


ador/default.asp



-
(maxi_accotto[arroba]speedy.com.ar)
MSN:



-

"Jorge Ramón" escribió en el mensaje
news:0c1c01c3fb25$7a2fcaa0$
Hola, estoy trabajando un proyecto en el cual el manejo
de imágenes es crítico. Estamos hablando de alrededor de
unas 100,000 imagenes de tamaño regular diarias con un
historial de dos meses.

Mi pregunta es, Qué tan recomendable es utilizar SQL
Server para almacenar estas imágenes?

Alguna sugerencia?

Gracias y Saludos!


.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida