Provided by:
manpages-es_1.55-10_all 
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).