hash(3) Library Functions Manual hash(3) NOMBRE hash - metodo de acceso a bases de datos dispersas (hash) BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #include #include DESCRIPCION Note well: This page documents interfaces provided up until glibc 2.1. Since glibc 2.2, glibc no longer provides these interfaces. Probably, you are looking for the APIs provided by the libdb library instead. La rutina dbopen(3) 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 como sigue: typedef struct { unsigned int bsize; unsigned int ffactor; unsigned int nelem; unsigned int cachesize; uint32_t (*hash)(const void *, size_t); int lorder; } HASHINFO; Los elementos de esta estructura son de la siguiente manera: 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 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 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 is the suggested maximum size, in bytes, of the memory cache. This value is only advisory, and the access method will allocate more memory rather than fail. 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-bit para usar como valor de dispersion. lorder es 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 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). ERRORES Solo se soportan los ordenes de bytes ascendente (el byte de mayor peso el ultimo) y descendente (el byte de menor peso el ultimo). VEASE TAMBIEN 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. TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Juan Piernas Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . 4.4 Berkeley Distribution 31 Octubre 2023 hash(3)