RECNO
Section: C Library Functions (3)
Updated: 18 Agosto 1994
Index Return to Main
Contents
NOMBRE
recno - método de acceso a bases de datos con registros numerados
SINOPSIS
#include <sys/types.h>
#include <db.h>
DESCRIPCIÓN
La ruinta dbopen es la interfaz de biblioteca para los
ficheros de bases de datos. Uno de los formatos de fichero
soportados es el de los ficheros con registros numerados (que
llamaremos regnum). La descripción general de los métodos de acceso
a bases de datos se encuentra en la página de manual de dbopen(3);
esta página de manual sólo describe información específica de
regnum.
La estructura de datos de registros numerados está formada por
registros de longitud o fija o variable almacenados en un formato
de fichero plano, accedido por el número lógico de registro. La
existencia del registro número cinco implica la existencia de los
registros del 1 al 5, y la eliminación del registro número 1 hace
que el registro número 5 sea renumerado al registro número 4, de la
misma manera que el cursor se desplazará un registro hacia abajo si
se encuentra posicionado después del registro número 1.
La estructura de datos específica del método de acceso regnum
proporcionada a dbopen se define en el fichero cabecera
<db.h> como sigue:
typedef struct {
- u_long flags;
u_int cachesize;
u_int psize;
int lorder;
size_t reclen;
u_char bval;
char *bfname;
} RECNOINFO;
Los elementos de esta estructura se definen de la siguiente
manera:
- flags
- El valor de las opciones se especifica mediante una operación
O-lógica de cualquiera de los siguientes valores:
-
- R_FIXEDLEN
- Los registros son de longitud fija, no delimitados por bytes.
El elemento reclen de la estructura especifica la longitud
del registro y el elemento bval de la estructura se usa como
carácter de relleno. Todos los registros, insertados en la base de
datos, cuya longitud es más pequeña que reclen bytes, se
completan automáticamente con el carácter bval.
- R_NOKEY
- En la interfaz especificada por dbopen, la recuperación
secuencial de registros rellena tanto la clave del invocador como
las estructuras de datos. Si se especifica la opción R_NOKEY, no se
necesitarán las rutinas con cursor para rellenar la
estructura de la clave. Esto permite a las aplicaciones recuperar
registros al final de los ficheros sin leer todos los registros que
intervienen.
- R_SNAPSHOT
- Esta opción exige que se tome una instantanea del fichero
cuando se llame a dbopen, en lugar de permitir que cualquier
registro sin modificar sea leído del fichero original.
- cachesize
- Tamaño máximo sugerido, en bytes, de la memoria caché. Este
valor sólo es consultivo y el método de acceso reservará más
memoria antes que fallar. Si cachesize es 0 (no se
especifica un tamaño) se usa una caché por defecto.
- psize
- El método de acceso regnum almacena las copias residentes en
memoria de sus registros en un árbolB (btree). Este valor es el
tamaño (en bytes) de las páginas usadas para nodos del árbol. Si
psize es 0 (no se especifica un tamaño de página) se
selecciona un tamaño de página basado en el tamaño de bloque de E/S
del sistema de ficheros subyacente. Véase btree(3)
para más información.
- lorder
- El orden de los bytes para los enteros de los metadatos
almacenados en la base de datos. El número debería representar el
orden como un entero; por ejemplo, el orden `el byte de mayor peso
el último' (orden ascendente) sería el número 4321. Si
lorder es 0 (no se especifica un orden) se utiliza el orden
del anfitrión actual.
- reclen
- El tamaño de un registro de tamaño fijo.
- bval
- El byte delimitador a usar para marcar el final de un registro
para los registros de tamaño variable, y el carácter de relleno
para los registros de tamaño fijo. Si no se especifica un valor, se
utilizan caracteres `nueva línea' (``\n'') para marcar el final de
los registros de longitud variable y los registros de longitud fija
se completan con espacios.
- bfname
- El método de acceso regnum almacena las copias residentes en
memoria de sus registros en un árbolB. Si bfname no es NULL,
especifica el nombre de un fichero árbolB, como si se especificara
el nombre de fichero para una llamadada a dbopen de un fichero
árbolB.
La parte de datos del par clave/datos usado por el método de
acceso regnum es la misma que la de los otros métodos de acceso. La
clave es diferente. El campo data de la clave debería ser un
puntero a una posición de memoria del tipo recno_t, tal y
como se define en el fichero cabecera <db.h>. Normalmente, este tipo
es el tipo entero sin signo más grande disponible para la
implementación. El campo size de la clave debería ser el
tamaño de ese tipo.
Ya que puede no haber ningún metadato asociado con los ficheros
subyacentes del método de acceso regnum, cualquier cambio realizado
a los valores por defecto (por ejemplo, a la longitud de los
registros de tamaño fijo o al valor del separador de bytes) se debe
especificar explícitamente cada vez que se abra el fichero.
En la interfaz especificada por dbopen, el uso de la
interfaz put para crear un nuevo registro provocará la
creación de varios registros vacíos si el número de registro es
mayor, en más de uno, que el número del mayor registro actualmente
en la base de datos.
ERRORES
Las rutinas del método de acceso regnum pueden fallar y
asignar a errno cualquiera de los errores especificados para
la rutina de biblioteca dbopen(3)
o el siguiente:
- [EINVAL]
- Se ha intentado añadir un registro a una base de datos de
registros de tamaño fijo que s demasiado grande para caber.
VÉASE TAMBIÉN
btree(3)
dbopen(3),
hash(3),
mpool(3),
Document Processing in a Relational Database System,
Michael Stonebraker, Heidi Stettner, Joseph Kalash, Antonin
Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.
FALLOS
Sólo se soportan los órdenes de bytes ascedente (el byte de mayor
peso el último) y descendente (el byte de menor peso el último).
Index
- NOMBRE
- SINOPSIS
- DESCRIPCIÓN
- ERRORES
- VÉASE TAMBIÉN
- FALLOS
This document was created by man2html, using
the manual pages.
Time: 06:16:26 GMT, January 22, 2005