Por que evitar el bytea? Antes usaba TEXT convertido a BASE64 y luego pase todo 
el sistema a BYTEA eso si, uso una tabla aparte para manejar todo los archivos 
y como no tienen que modificarse mucho los vacuum sobre eesta tabla no pasan 
muy a menudo y funciona bien

Date: Mon, 13 Oct 2014 10:51:19 -0500
Subject: [pgsql-es-ayuda] Mejor tipo de dato para almacenar archivos.
From: ivan.pera...@gmail.com
To: pgsql-es-ayuda@postgresql.org

Hola buen día.

Actualmente tengo un sistema al que se le pueden cargar archivos, alrededor de 
un 70% son archivos de texto y el otro 30% archivos binarios. Estos archivos se 
almacenan fuera de la base de datos y solo se almacena una tabla con el path 
hacia el mismo.

Quiero ver la manera de ingresarlos a la base de datos, ya que es mas simple 
solo hacer backup de la base de datos, pero sobre todo no corren el riesgo de 
ser eliminados, lo cual al estar fuera es un riesgo potencial.

Sin embargo, anteriormente tenia un software el cual si ingresaba los archivos 
a la bd, en su mayoria fotografias pero habia algunas que eran mas de 5 megas y 
en mi funcion (programa desde java) yo hacia el insert por 1 mega y luego hacia 
updates de 1 mega tambien. Estoy seguro que no era la mejor manera de hacerlo 
puesto que que las tuplas muertas por el update no las eliminaba el vacuum 
normal, tenia que hacer un full vacuum lo que ocasionaba que se bloqueara la 
base de datos y aparte de todo se tardaba un buen rato en ello. En ese entonces 
decidí moverlos a fuera de la base de datos.

Hoy me veo en la necesidad de manejarlos mediante la bd, para ello estaba 
pensando en manejar dos tablas identicas, con la diferencia de que una manejara 
el contenido con el tipo de dato text para los archivos de texto y la otra con 
bytea para todos los demas tipos de archivo. De esta manera el vacuum no 
tardaria tanto (segun yo). Ademas de que los archivos de texto no sobrepasan 
los 100k y los binarios el mas grande que he visto es casi el mega. Ademas de 
que una vez insertado el archivo ya jamás se elimina y tampoco se insertan 
opciones tentativas, si no ya archivos finales aceptados, por lo que no habria 
funcion delete para ellos.

Alomejor estoy atacando de manera equivocada el problema debido a mi 
experiencia previa, es por eso que recurro a su ayuda, para ver cual seria la 
mejor manera de manejar los archivos binarios, estaba pensando tambien en 
manejar una sola tabla con columna text, y ahi insertar todos los archivos en 
formato hexadecimal convertida desde el software, ya que lo que quiero evitar 
al máximo es el bytea, que segun he leido el vacuum tiene algunos problemas con 
ella.

Alguna sugerencia?

Saludos
-- 
Lindolfo Iván Perales Mancinas
Solo existen 10 tipos de personas en el mundo, las que saben binario y las que 
no.
                                          

Responder a