Provided by: manpages-es_1.55-10_all bug

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).