El 30/03/2017 a las 21:36, Edwin Quijada escribió:
Aunque esto es una geurra santa, ahi vamos.

1- Los backup creceran pero igual tendras que hacerlo desde el SO si vas
a sacar BK

2- Para la replica los WAL tambien van a crecer pero se supone que se
deben replicar tambien las imagenes asi que ya sea por WAL o por FTP o
lo que sea tendras que mandar las imagenes.

3- Si haces un select Postgres no carga las imagenes ergo no consume ni
mas memoria ni se hace mas lento, PG solo carga la referencia en donde
esta la imagen en la BD por lo tanto esto no implica nada.

¿En la tabla guardas el oid del objeto o lo guardas en el propio registro?, esto ultimo no me ha quedado claro, entiendo que tienes el oid del pg_catalog (creo que es ahi donde lo guarda cuando utilizas el io_import)

En mi caso estoy pensando en cargarlo en un bytea en una tabla propia, no en el pg_catalog.

haré búsquedas en la tabla pero por otros campos , y solo leeré el campo bytea del registro que quiero mostrar.



4- AL eliminar un registro no tienes el problema de la integridad
referencial ni tampoco los problemas de la seguridad al mantenerla en SO.

5- Mi sistema tiene alrededor de 300000 imagenes dentro de PG y eso con
un metodo un poco mas arcaico , la convierto TEXT no a bytea, lo que
hace que sea un poco mas grande y funciona perfectamente.

Finalmente , Instagram en sus primera versiones usaba PG


En lo particular las uso dentro de la BD porque me quito bastante
trabajo y almaceno de todo desde PDF , imagenes y videos y todo bien,
que el BK sera mas pesado Si, pero de todas formas tengo que hacerlo




------------------------------------------------------------------------
*From:* pgsql-es-ayuda-ow...@postgresql.org
<pgsql-es-ayuda-ow...@postgresql.org> on behalf of Lazaro Garcia
<lazaro3...@gmail.com>
*Sent:* Thursday, March 30, 2017 4:33 PM
*To:* 'Kernel'; 'Ayuda'
*Subject:* RE: [pgsql-es-ayuda] como guardar ficheros en una tabla

Si por un tema de seguridad necesitas tener la data en la DB pues
podrías guardarla ahí. Tuve una experiencia en un sistema donde
guardábamos las huellas de personas en la DB. Para las imágenes solo
buscábamos la que realmente era útil y nunca se usaba un select * porque
era muy lento. En otros proyectos que he desarrollado las imágenes las
he puesto en un servidor WEB apache, controlo los paths desde la
aplicación y en la db solo guardo el nombre del fichero. De esa forma si
el storage para las imágenes cambia, no tengo que modificar los
registros en la base, sino los parámetros de configuración de la
aplicación. Si elimino la tupla elimino también el fichero.

Saludos.

-----Mensaje original-----
De: pgsql-es-ayuda-ow...@postgresql.org
[mailto:pgsql-es-ayuda-ow...@postgresql.org] En nombre de Kernel
Enviado el: jueves, 30 de marzo de 2017 12:04 p. m.
Para: 'Ayuda'
Asunto: Re: [pgsql-es-ayuda] como guardar ficheros en una tabla

El 30/03/2017 a las 14:50, Lázaro Garcia escribió:
El oid no es más que la referencia del large object que fue insertado en otra 
tabla independiente del catálogo. El bytea guarda en el mismo campo y utiliza 
TOAST. En lo personal recomendaría más guardar files independientes al motor y 
en la base almacenar el path donde el fichero está guardado por las siguientes 
razones:

- Tu base puede crecer mucho (data files y generación de WAL). Con la base muy 
grande los backups and restore tardarán más, en cuanto a los WAL se generarán 
en mayor cantidad y será mucho mayor el flujo de datos si necesitas usar 
réplica.

- Si haces un select sobre ese campo igual demorará más pues el motor 
necesitará colocar la data en los shared buffers, no creo que para ficheros sea 
una buena idea pues que pasa que si llenas los shared buffers de files o si por 
alguna razón shared buffers no alcanzara y fuese necesario usar swap?

- Lo mismo sucediera si quisieras no se obtener los ficheros de un nombre 
específico. En este caso si guardas el nombre del fichero en la base solamente 
y configuras los paths a nivel de aplicación, pudieras incluso indexar por este 
campo para hacer algún tipo de búsqueda específico.

Como nota: Si decides usar LO (Large objects), debes utilizar vacuumlo para 
eliminar los objetos largos del catálogo que ya no son referenciados.

Saludos.


-----Mensaje original-----
De: pgsql-es-ayuda-ow...@postgresql.org
[mailto:pgsql-es-ayuda-ow...@postgresql.org] En nombre de Kernel Enviado
el: miércoles, 29 de marzo de 2017 03:47 a. m.
Para: Ayuda
Asunto: [pgsql-es-ayuda] como guardar ficheros en una tabla

hola,
Hasta ahora nunca he guardado ficheros el la db (pdf,jpg,doc) en la db y estoy 
valorando la posibilidad de guardarlos.

He visto 2 maneras , una con oid (lo_import y lo_export) o definir un
tipo bytea (no se con que funciones se maneja)

me gustaria preguntaros algunas cosas

Es recomendable guardarlo en la db

¿cual es la mejor manera con el typo bytea o oid?


Agradeceria comentarios sobre vuestra experiencia con este tema


Gracias

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) 
Para cambiar tu suscripci n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Gracias Lazaro,
actualmente lo tengo con ficheros, pero estoy probando y he  añadido un
campo bytea en la tabla actual, en la que guardo el nombre y demas datos.
Estoy pensando en limitar el tamaño del fichero a guardar a 5 megas.

En cuanto a la replica, también tengo que replicar los ficheros, lo hago
con rsync, pero es verdad que los ficheros wal creceran.


El tamaño  del backup  y los ficheros es de 5GB mas o menos
, he probado a cargarlo y la copia mas o menos ocupa lo mismo,

mas o menos trabajan 50 usuarios, se pueden subir 10 o 15 archivos al dia.

-Las ventajas que veo es que tengo todo en el mismo sitio, no tengo que
tener por una lado la db y los ficheros, las replicas de ambos.
Puedo atacar a la db desde distintas apliaciones que pueden estar en
distintas plataformas, con acceder a la db tengo todo.

Creo que los tamaños de los que hablo son pequeños

¿Como lo ves?


Gracias



-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a