[Pgsql-ayuda] =?iso-8859-1?Q?Re:_=5BPgsql-ayuda=5D_Dato_para_im=E1genes?=

=?iso-8859-1?Q?Vladimir_G=F3mez?= vlad@fotoregis.com
Fri, 7 Sep 2001 13:42:04 -0600


El mail que envia Maigualdia resulta ser muy interesante, pero alguien sa=
be
como se podria accesar a los BLOBs desde windows? (via ODBC o lo que sea).

Saludos.

Vlad.

----- Original Message -----
From: "Maigualida Mart=EDnez" <maix25@yahoo.es>
To: "Ricardo Arratia Joglar" <rarratia@udelmar.cl>;
<Pgsql-ayuda@tlali.iztacala.unam.mx>
Sent: Thursday, September 06, 2001 2:19 PM
Subject: Re: [Pgsql-ayuda] Dato para im=E1genes


> Ricardo:
>     Encontre esta explicacion a tu duda, espero te sirva, aunque yo no =
lo
he
> probado, confio en la sabiduria de Ernesto :=3D):
>
> > Otro punto: Quiero almacenar archivos *.jpg de varios centenares de
kbyte
> > cada uno en una base de datos Postgres. Qual sera el tipo de data mas
> > apropiado; quizas "varchar" ?
>
> Para almacenar archivos binarios en general (im=E1genes, audio, video)
> en una base de datos es sumamente ineficiente emplear columnas CHAR,
> VARCHAR o TEXT, pues todas est=E1n sujetas a interpretaciones derivadas
> de considerar a lo que almacenan como "legible" o "no binario". Los
> objetos binarios grandes se denominan BLOBs (por Binary Large OBjects,
> muy original :-) y se almacenan de forma especial en PostgreSQL y en
> cualquier otra base de datos relacional decente.
>
> Los BLOBs se almacenan empleando _referencias_. En la tabla colocas
> una columna de tipo 'oid' (Object IDentifier) y empleas rutinas especia=
les
> provistas por PostgreSQL para alimentar el objeto; el manejador almacen=
a
> el objeto donde le parece mejor, en espacio contig=FCo y _fuera_ de la
> tabla, colocando un apuntador a dicho espacio dentro de la tabla. De es=
e
> modo, los objetos grandes no se convierten en una molestia para el
> manejo relacional (como ocurre en Oracle y en el manejador de archivos
> con SQL conocido como MySQL) y es mucho m=E1s eficiente manejar
> transacciones.
>
> Por ejemplo,
>
> create table music (
>   name varchar(30),
>   mp3  oid
> );
>
> insert into music
> values ( 'Marillion - Tux On', lo_import('/tmp/marillion-tux-on.mp3') )=
;
>
> select lo_export(music.mp3, '/tmp/t.mp3')
> from music where name =3D 'Marillion - Tux On';
>
> Tanto el m=F3dulo Pg como el m=F3dulo DBD::Pg, ambos para Perl, tienen
> encapsuladas las funciones lo_import y lo_export para poder utilizarlas
> en tus aplicaciones. Revisa man Pg, man DBD::Pg para los detalles.
>
> Como notas interesantes de comparaci=F3n, Oracle solamente permite _una=
_
> columna BLOB por tabla y almacena el objeto _con_ la tabla; es
nausaeabundo
> lo que ocurre cuando hay transacciones porque los BLOBs van a parar al
> log de transacciones consumiendo espacio de forma obscena. Con Informix=
 se
> pueden tener varias columnas BLOB en la tabla o expl=EDcitamente en un
espacio
> destinado para BLOBs y cuyo tama=F1o de p=E1gina est=E1 optimizado seg=FA=
n el
> administrador crea necesario; cuando se usan referencias, los BLOBs no =
se
> copian en el log de transacciones. PostgreSQL permite tener todos los
> BLOBs por tabla que se necesiten, siempre usa apuntadores, almacena los
> objetos empleando espacio contig=FCo sin necesidad de describir el tama=
=F1o
> de p=E1gina pero exige que todos los accesos (incluso SELECT) sean hech=
os
> en una transacci=F3n.
> --
> Ernesto Hern=E1ndez-Novich -
>
> Ricardo Arratia Joglar wrote:
>
> > =BFAlguien sabe que tipo de datos se usa en postgre para almacenar
im=E1genes en
> > el motor?
> > Soy nuevo en Postgre y quisiera si alguien me puede responder.
> > Gracias
> >
> > _______________________________________________
> >
>
> Maigualida. :=3D)
>
>
>
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda