Provided by:
manpages-es_1.55-10_all 
NOMBRE
recno - metodo de acceso a bases de datos con registros numerados
SINOPSIS
#include <sys/types.h>
#include <db.h>
DESCRIPCI'ON
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
descripcion general de los metodos de acceso a bases de datos se
encuentra en la pagina de manual de dbopen(3); esta pagina de manual
solo describe informacion especifica de regnum.
La estructura de datos de registros numerados esta formada por
registros de longitud o fija o variable almacenados en un formato de
fichero plano, accedido por el numero logico de registro. La
existencia del registro numero cinco implica la existencia de los
registros del 1 al 5, y la eliminacion del registro numero 1 hace que
el registro numero 5 sea renumerado al registro numero 4, de la misma
manera que el cursor se desplazara un registro hacia abajo si se
encuentra posicionado despues del registro numero 1.
La estructura de datos especifica del metodo 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 operacion O-
logica 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 caracter de relleno. Todos los registros,
insertados en la base de datos, cuya longitud es mas
pequena que reclen bytes, se completan automaticamente
con el caracter bval.
R_NOKEY
En la interfaz especificada por dbopen, la recuperacion
secuencial de registros rellena tanto la clave del
invocador como las estructuras de datos. Si se
especifica la opcion R_NOKEY, no se necesitaran 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 opcion exige que se tome una instantanea del fichero
cuando se llame a dbopen, en lugar de permitir que
cualquier registro sin modificar sea leido del fichero
original.
cachesize
Tamano maximo sugerido, en bytes, de la memoria cache. Este
valor s'olo es consultivo y el metodo de acceso reservara mas
memoria antes que fallar. Si cachesize es 0 (no se especifica
un tamano) se usa una cache por defecto.
psize El metodo de acceso regnum almacena las copias residentes en
memoria de sus registros en un arbolB (btree). Este valor es el
tamano (en bytes) de las paginas usadas para nodos del arbol.
Si psize es 0 (no se especifica un tamano de pagina) se
selecciona un tamano de pagina basado en el tamano de bloque de
E/S del sistema de ficheros subyacente. Vease btree(3) para mas
informacion.
lorder El orden de los bytes para los enteros de los metadatos
almacenados en la base de datos. El numero deberia representar
el orden como un entero; por ejemplo, el orden `el byte de mayor
peso el ultimo' (orden ascendente) seria el numero 4321. Si
lorder es 0 (no se especifica un orden) se utiliza el orden del
anfitrion actual.
reclen El tamano de un registro de tamano fijo.
bval El byte delimitador a usar para marcar el final de un registro
para los registros de tamano variable, y el caracter de relleno
para los registros de tamano fijo. Si no se especifica un
valor, se utilizan caracteres `nueva linea' (``\n'') para marcar
el final de los registros de longitud variable y los registros
de longitud fija se completan con espacios.
bfname El metodo de acceso regnum almacena las copias residentes en
memoria de sus registros en un arbolB. Si bfname no es NULL,
especifica el nombre de un fichero arbolB, como si se
especificara el nombre de fichero para una llamadada a dbopen de
un fichero arbolB.
La parte de datos del par clave/datos usado por el metodo de acceso
regnum es la misma que la de los otros metodos de acceso. La clave es
diferente. El campo data de la clave deberia ser un puntero a una
posicion 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 mas grande disponible para la implementacion. El campo size de
la clave deberia ser el tamano de ese tipo.
Ya que puede no haber ningun metadato asociado con los ficheros
subyacentes del metodo de acceso regnum, cualquier cambio realizado a
los valores por defecto (por ejemplo, a la longitud de los registros de
tamano fijo o al valor del separador de bytes) se debe especificar
explicitamente cada vez que se abra el fichero.
En la interfaz especificada por dbopen, el uso de la interfaz put para
crear un nuevo registro provocara la creacion de varios registros
vacios si el numero de registro es mayor, en mas de uno, que el numero
del mayor registro actualmente en la base de datos.
ERRORES
Las rutinas del metodo 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 anadir un registro a una base de datos de
registros de tamano fijo que s demasiado grande para caber.
V'EASE TAMBI'EN
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
Solo se soportan los ordenes de bytes ascedente (el byte de mayor peso
el ultimo) y descendente (el byte de menor peso el ultimo).