El evitar el bytea era por que en otro sistema lo maneje pero ahi si habia muchos inserts, deletes y updates, lo que ocasionaba broncas a largo plazo, como por ejemplo que vacuum no eliminara las tuplas muertas de los updates o deletes y con el tiempo la base llegara a incrementarse muchos mas gigas del tamaño real, y un vacuum full diario no era viable ya que hacia lentisimo el sistema por alrededor de hora y media, en ese entonces se opto por mensualmente programar un mantenimiento donde bajabamos el sistema, haciamos un dump, recreabamos la base y cargabamos la info.
Pero esta vez no habran updates ni deletes (y si los hay seran uno o dos por cada mil) así que creo que puedo manejar el bytea sin tanta preocupación. Estube haciendo comparacion entre guardarlo como bytea o como text y en este segundo me incrementaria en mas del 30% el tamaño del archivo tan solo por convertir los bytes a texto. Así que le daré una oportunidad a bytea. Saludos y gracias por tu comentario. 2014-10-13 19:28 GMT-05:00 Edwin Quijada <[email protected]>: > 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: [email protected] > To: [email protected] > > > 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. > -- Lindolfo Iván Perales Mancinas Solo existen 10 tipos de personas en el mundo, las que saben binario y las que no.
