Next: DBI/DBD
Up: Pg
Previous: La estructura PGresult
  Índice General
  Índice de Materias
Objetos grandes
En PostgreSQL, el tamaño máximo de una tupla coincide con el del tamaño de
página, de 8K, y dado que una tupla no puede ser almacenada en más de
una página, la única manera de almacenar objetos más grandes que este
tamaño es por medio de la intarfase de objetos grandes.
Dicho de manera escueta, los objetos grandes son almacenados por
partes en tuplas (en el sentido interno de PostgreSQL) y se emplean indices
B-tree para acelerar el acceso a cada una de las partes que conforman
un objeto grande.
Internamente PostgreSQL emplea una interfase semejante a la del manejo de
archivos de Unix. Hacia el programador, por medio de libpq,
provee de funciones de alto nivel y la implementación para Perl,
proveé de métodos adecuados. Estos métodos proveen acceso orientado
por archivo para objetos de gran tamaño, con analogías a las funciones
de sistema open, close, read, write, lseek y tell. Para ser consistentes, se les añade el prefijo
lo_ al ser llamadas.
Para usar la interfase de objetos grandes, es necesario encerrar las
operaciones en un bloque de transacciones14.4.
To use the large object (lo) interface, it is necessary to enclose it
within a transaction block.
- $lobj_fd = $conn->lo_open($lobjId, $mode)
- Abre un
objeto grande y regresa un OID. El modo de apertura se fija con
la variable $mode igual que en el método lo_create. Regresa -1 en caso de error.
- $ret = $conn->lo_close($lobj_fd)
- Cierra un objeto
grande. Regresa 0 en caso de éxito, -1 en caso de error.
- $nbytes = $conn->lo_read($lobj_fd, $buf, $len)
- Lee
$len carácteres en la variable $buf del objeto grande
definido por $lobj_fd. Regresa el número de bytes leidos o
-1 en caso de error.
- $nbytes = $conn->lo_write($lobj_fd, $buf, $len)
- Escribe $len bytes de la variable $buf en el objeto
grande definido por $lobj_fd. Regresa el número de bytes
escritos o -1 en caso de error.
- $ret = $conn->lo_lseek($lobj_fd, $offset, $whence)
- Cambia de posición el punto de lectura o escritura dentro del objeto
grande definido por $obj_id. Actualmente, $whence sólo
puede valer 0 (L_SET).
- $lobjId = $conn->lo_creat($mode)
- Crea un objeto
grande. $mode es una máscara de bits que describe los
diferentes atributos del objeto. Utiliza las siguientes constantes:
98#98
Estas banderas pueden ser combinadas con OR, como en
el caso de abrir para lectura y escritura. En caso de error, regresa
el valor definido por la constante PGRES_InvalidOid.
- $location = $conn->lo_tell($lobj_fd)
- Regresa la
posición de lectura o escritura en el objeto grande definido por $lobj_fd.
- $ret = $conn->lo_unlink($lobjId)
- Borra un objeto
grande. Regresa -1 en caso de error.
- $lobjId = $conn->lo_import($filename)
- Importa un
archivo Unix como un objeto grande y regresa el OID del nuevo
objeto.
- $ret = $conn->lo_export($lobjId, $filename)
- Exporta
un objeto grande a un archivo Unix. Regresa -1 en caso de error,
1 en caso de éxito.
Next: DBI/DBD
Up: Pg
Previous: La estructura PGresult
  Índice General
  Índice de Materias
Ismael Olea
2001-04-21