RE: Mejor tipo de dato para almacenar archivos.

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: Ivan Perales M(dot) <ivan(dot)perales(at)gmail(dot)com>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Mejor tipo de dato para almacenar archivos.
Date: 2014-10-14 00:28:30
Message-ID: BAY168-W90E6C03E18B57B003DA702E3AD0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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(dot)perales(at)gmail(dot)com
To: pgsql-es-ayuda(at)postgresql(dot)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.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jaime soler 2014-10-14 08:08:49 Re: fecha de un registro en una tabla
Previous Message Edwin Quijada 2014-10-14 00:24:14 RE: Consulta sobre dblink a oracle