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

NOMBRE

       hash - metodo de acceso a bases de datos dispersas (hash)

SINOPSIS

       #include <sys/types.h>
       #include <db.h>

DESCRIPCI'ON

       La  rutina  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  dispersos.  La descripcion general de los metodos de acceso a
       las bases de datos se encuentra en dbopen(3);  esta  pagina  de  manual
       describe solo informacion especifica sobre la dispersion.

       La  estructura de datos de dispersion es un esquema disperso dinamico y
       extensible.

       El estructura de datos especifica del metodo de acceso proporcionada  a
       dbopen se define en el fichero cabecera <db.h> como sigue:

       typedef struct {
              u_int bsize;
              u_int ffactor;
              u_int nelem;
              u_int cachesize;
              u_int32_t (*hash)(const void *, size_t);
              int lorder;
       } HASHINFO;

       Los elementos de esta estructura son de la siguiente manera:

       bsize  Bsize  define  el tamano de la cubeta de la tabla dispersa y es,
              por defecto, de 256 bytes. Puede ser preferible  incrementar  el
              tamano  de  pagina  para  tablas residentes en disco y tabla con
              grandes elementos de datos.

       ffactor
              Ffactor indica la densidad deseada dentro de la tabla  dispersa.
              Es una aproximacion del numero de claves que se permite acumular
              en cualquier cubeta, determinando cuando la tabla dispersa crece
              o se encoge.  El valor por defecto es 8.

       nelem  Nelem  es  una estimacion del tamano final de la tabla dispersa.
              Si no se configura o se le asigna un  valor  demasiado  pequeno,
              las  tablas  dispersas se expandiran de forma elegante cuando se
              introduzcan  claves,  aunque  se  puede  observar   una   ligera
              degradacion del rendimiento. El valor por defecto es 1.

       cachesize
              Tamano  maximo sugerido, en bytes, de la cache.  Este valor s'olo
              es consultivo ya que el metodo de acceso reservera  mas  memoria
              antes que fallar.

       hash   Hash  Es  una funcion de dispersion definida por el usuario.  Ya
              que ninguna funcion de dispersion funciona igualmente bien sobre
              todos  los  datos  posibles,  el  usuario puede encontrar que la
              funcion de dispersion ya incorporada funciona  de  manera  pobre
              sobre  un  conjunto  de  datos  particular.   Las  funciones  de
              dispersion  especificadas  por  el  usuario  deben   tomar   dos
              argumentos  (un  puntero a una cadena de bytes y una longitud) y
              devolver una cantidad  de  32  bits  para  usar  como  valor  de
              dispersion.

       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) deberia ser el  numero  4321.
              Si  lorder  es  cero (no se especifica un orden) se usa el orden
              del  anfitrion  actual.  Si  el  fichero  ya  existe,  el  valor
              especificado  se ignora y se usa el valor especificado cuando se
              creo la tabla.

       Si el fichero ya existe (y no se especifica  la  opcion  O_TRUNC),  los
       valores especificados por los parametros bsize, ffactor, lorder y nelem
       se ignoran y se usan los valores especificados cuando se creo la tabla.

       Si  se  especifica  una  funcion  de  dispersion,  hash_open  intentara
       determinar  si  la  funcion  de dispersion especificada es la misma que
       aquella con la que se creo la base de datos y fracasara si no lo es.

       Se  proporcionan  interfaces  compatibles  con  las  antiguas   rutinas
       descritas  en  dbm(3)  y  ndbm(3); sin embargo, estas inferfaces no son
       compatibles con los anteriores formatos de fichero.

ERRORES

       Las rutinas del metodo de acceso disperso pueden  fallar  y  asignar  a
       errno  cualquiera  de  los  errores  especificados  para  la  rutina de
       biblioteca dbopen(3).

V'EASE TAMBI'EN

       btree(3), dbopen(3), mpool(3), recno(3)

       Dynamic Hash Tables, Per-Ake Larson, Communications of the  ACM,  April
       1988.

       A  New Hash Package for UNIX, Margo Seltzer, USENIX Proceedings, Winter
       1991.

FALLOS

       Solo se soportan los ordenes de bytes ascendente (el byte de mayor peso
       el ultimo) y descendente (el byte de menor peso el ultimo).