Imagenes en Base de datos o en un directorio aparte

902 views
Skip to first unread message

Wilianson

unread,
Apr 27, 2012, 10:57:13 PM4/27/12
to Agile Perú
Hola , me dijeron que aquí podía consultar con gente de experiencia,
pues bueno tengo una gran duda, les cuento que estoy haciendo un
sistema que requiere almacenar imágenes, por ahora las estoy
almacenando en una base de datos mysql (con los tipos de datos BLOB),
pero no se si este bien o no porque por ahí me dijeron que eso podría
costar mucho al momento de realizar una consulta por eso lanzo la
pregunta: ¿Que es mejor guardar en la base de datos o en un directorio
aparte y guardar en la base de datos la ruta del archivo?.
Nota estoy trabajando con PHP y Mysql
Saludos y de antemano agradezco la respuesta que pueda conseguir

Luis Cordova

unread,
Apr 28, 2012, 8:21:47 AM4/28/12
to agil...@googlegroups.com
check el codigo de phraseanet, vas a San Marcos?

2012/4/27 Wilianson <percy...@gmail.com>:
> --
> Has recibido este mensaje porque estás suscrito a Grupo "Agile Perú" de
> Grupos de Google.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a agil...@googlegroups.com
> Para anular la suscripción a este grupo, envía un mensaje a
> agileperu-...@googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.com.pe/group/agileperu?hl=es.

Percy Wilianson Lovon Ramos

unread,
Apr 28, 2012, 12:10:54 PM4/28/12
to agil...@googlegroups.com
Hola gracias por la sugerencia lo estoy revisandoa hora mismo, no no voy a San Marcos

Luis Cordova

unread,
Apr 28, 2012, 4:35:38 PM4/28/12
to agil...@googlegroups.com
Hoy dia fue genial, empezamos un poco tarde, pero muchas gracias a San
Marcos, y las comunidades Agile que nos dieron la oportunidad de hacer
un demo de las bondades de estas metodologias y sus implementaciones
en codigo.

Gracias!

2012/4/28 Percy Wilianson Lovon Ramos <percy...@gmail.com>:

JcRomaina

unread,
Apr 29, 2012, 4:51:48 AM4/29/12
to agil...@googlegroups.com
Depende de los requerimientos realmente. Debes considerar cuántas imágenes se van a almacenar (en cuanto tiempo), y cómo va a ir creciendo la base de datos. A medida que guardes más imágenes (más registros), más grande será y más demorarán las consultas.

Para grandes volumenes lo que se suele recomendar es utilizar un servidor de archivos, ir guardándolos en una ruta. 

Roberto Calero

unread,
Apr 29, 2012, 10:04:42 AM4/29/12
to agil...@googlegroups.com
Riak, Neo4J, depende de lo que quieras hacer con la imagen.

> Date: Sat, 28 Apr 2012 07:21:47 -0500
> Subject: Re: [agileperu] Imagenes en Base de datos o en un directorio aparte
> From: cord...@gmail.com
> To: agil...@googlegroups.com

Meison

unread,
Apr 29, 2012, 12:06:51 PM4/29/12
to agil...@googlegroups.com
De las 2 formas que mencionas :

1. Guardar la imagen en un directorio y luego almacenar la ruta en un campo de texto
2. Almacenar los datos de la imagen en un campo blob.

Si la base de datos es o se estima que será muy grande y las imágenes son o serán demasiadas, entonces la primera forma es más eficiente.
Si lo que deseas es que se haga algo rápido, la segunda forma está bien, pero no se hace muy escalable tu aplicación.
Armando Chirinos Paredes
Blog: http://ameison.blogspot.com
((+511) 258 - 3564
((+511) 997 - 773937

Edwin Joel Bonifacio Chanca

unread,
Apr 29, 2012, 11:19:56 PM4/29/12
to agil...@googlegroups.com
En caso se necesite guardar las imágenes en BD,

Deberías usar para esto 2 tablas: 
- Una en la cual guardes únicamente el BLOB del archivo y un ID, y 
- otra en la cual almacenes toda la información del archivo como nombre, tamaño del archivo, a que tabla del sistema esta relacionada y demás que consideres necesario, y el ID de la otra tabla. 

De esta manera y dado que todas tus consultas para hallar el archivo no guardan en si el binario, tus consultas serán más rápidas y la búsqueda en la tabla del archivo físico se harán búsquedas únicamente por ID, por tanto al ser un índice no serán búsquedas secuenciales y será mucho más rápida tu consulta y maximizar de gran manera la eficiencia de tu aplicación.

Saludos,

Edwin Bonifacio

Roberto Calero

unread,
Apr 30, 2012, 3:51:05 AM4/30/12
to agil...@googlegroups.com
Para imagenes, dependiendo del numero de imagenes... ni filesystem ni bases de datos relacionales son soluciones eficientes. Las dos tienen impedancia.


Date: Sun, 29 Apr 2012 11:06:51 -0500

Subject: Re: [agileperu] Imagenes en Base de datos o en un directorio aparte

Meison

unread,
Apr 30, 2012, 4:38:43 AM4/30/12
to agil...@googlegroups.com

Me pregunto si el sistema que esta desarrollando Wilianson necesita una base de datos NoSQL, esto efectivamente es mas eficiente pero si dice que esta usando PHP + MySQL, el desajuste por impedancia (independientemente del camino seguido) pues no le quedará mas alternativa que asumirlo, para ello existen una serie de técnicas como usar frameworks de persistencia, usar el patrón dao, usar un orm ...

Wilianson , a ver si nos cuentas luego como te fue a ver si se te puede seguir ayudando =)
((+511) 258 - 3564
((+511) 997 - 773937

Percy Wilianson Lovon Ramos

unread,
Apr 30, 2012, 8:57:12 AM4/30/12
to agil...@googlegroups.com
bueno me ha servido mucho sus puntos de viste les dire que lo que estoy desarrollando tendra por lo menos 2000 registros al año segun mi jefa, estoy haciendo lo que dice Edwin Bonifacio en una tabla todos los datos de la imagen y en otra tabla solo atributos como ID, tamaño tipo, de la imagen, no use ningun framework debido a la inexperiencia.
Muchas gracias por darme sus puntos de vista 
saludos

Edwin Joel Bonifacio Chanca

unread,
Apr 30, 2012, 10:44:19 AM4/30/12
to agil...@googlegroups.com
Como mencionan en este thread,

Recordar que todos los métodos tienen ventajas y desventajas, el procedimiento planteado es en caso de que se haya indicado que las imágenes deben ir si o si en base de datos y menciono la forma en la que trabajan algunos sistemas de gestión documental.

Y en este caso recordar que para tus consultas de los archivos deberás hacer 2 consultas, de ninguna manera realizar un join entre las tablas pues entonces tendríamos el problema inicial.

Además, se recomienda que la tabla donde están los binarios se encuentren en una BD separada.

Saludos,

Edwin Bonifacio

Meison

unread,
Apr 30, 2012, 1:00:43 PM4/30/12
to agil...@googlegroups.com

No Edgar, con ello me refiero a manejar la impedancia a la que se refiere Roberto que sucede cuando intentamos hacer sinergia entre nuestra aplicación, escrita de manera objetual, con nuestros manejador de base de datos, que trabaja de manera relacional. 

Luis Cordova

unread,
Apr 30, 2012, 1:03:02 PM4/30/12
to agil...@googlegroups.com
Si trabajas en php puedes usar el file system abstraction gauferret o algo asi, esta en frances el nombre, la cosa es que si tambien usas componentes symfony2 en tu proyecto o el mismo framework puedes me parece obtener gratis la solucion que quieres, pero quiza este missing algo de lo que exactamente necesitas, solo queria avisarte de gaufuerette

2012/4/30 Meison <maso...@gmail.com>

Carlos Zuniga

unread,
May 1, 2012, 2:07:28 AM5/1/12
to agil...@googlegroups.com
2012/4/30 Luis Cordova <cord...@gmail.com>
>
> Si trabajas en php puedes usar el file system abstraction gauferret o algo
> asi, esta en frances el nombre, la cosa es que si tambien usas componentes
> symfony2 en tu proyecto o el mismo framework puedes me parece obtener gratis
> la solucion que quieres, pero quiza este missing algo de lo que exactamente
> necesitas, solo queria avisarte de gaufuerette
>

Es gaufrette, de knplabs, muy buena biblioteca y no necesariamente
solo para uso con SF2. Permite guardar y leer archivos tanto en el
filesystem local como en un CDN, Amazon S3, FTP, etc:

https://github.com/KnpLabs/Gaufrette

Sobre el problema inicial, a menos que tengas necesidad de bloquear la
vista de las imágenes solo a usuarios con privilegios, no veo razón
para guardarlas en la base de datos.

Saludos

--
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de
leer manuales.
Reply all
Reply to author
Forward
0 new messages