hash(3) Library Functions Manual hash(3) NOM hash - Methodes d'acces aux bases de donnees avec tables de hachage BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include #include DESCRIPTION NOTE : cette page decrit des interfaces fournies jusqu'a la glibc 2.1. Depuis la glibc 2.2, la glibc ne fournit plus ces interfaces. Veuillez consulter les API fournies par la bibliotheque libdb. La routine dbopen(3) est l'interface de bibliotheque des fichiers de base de donnees. L'un des formats de fichier pris en charge est la table de hachage. La description generale des methodes d'acces a une base de donnees est fournie dans la page de manuel dbopen(3). La page presente ne decrit que les informations specifiques aux tables de hachage. Les structures de hachage representent un schema de base de donnees dynamique et extensible. La structure de donnees specifique aux tables de hachage que l'on transmet a dbopen(3) est definie dans ainsi : typedef struct { unsigned int bsize; unsigned int ffactor; unsigned int nelem; unsigned int cachesize; uint32_t (*hash)(const void *, size_t); int lorder; } HASHINFO; Les elements de cette structure sont les suivants : bsize defini la taille des cases de la table (bucket size), et vaut, par defaut, 256 octets. Il est preferable d'augmenter la taille de page pour les tables situees sur disque ayant des elements avec beaucoup de donnees. ffactor indique une densite desiree au sein de la table. Il s'agit d'une approximation du nombre de cles pouvant s'accumuler dans une seule case, ce qui determine le moment ou la table doit s'agrandir ou se retrecir. La valeur par defaut est 8. nelem est une estimation de la taille finale de la table de hachage. S'il n'est pas configure, ou s'il est configure trop bas, la table s'agrandira quand meme correctement au fur et a mesure de l'entree des cles, bien qu'une legere degradation des performances puisse etre observee. La valeur par defaut est 1. cachesize est la taille maximale suggeree de memoire cache, en octets. Cela n'a qu'une valeur indicative, et les methodes d'acces alloueront plus de memoire plutot que d'echouer. hash est une fonction definie par l'utilisateur. Comme aucune fonction de hachage ne se comporte parfaitement bien sur tout type de donnees, il peut arriver que la fonction interne soit particulierement mauvaise sur un jeu particulier de donnees. La fonction de hachage fournie par l'utilisateur doit prendre deux arguments (un pointeur sur une chaine d'octets et une longueur) et renvoyer une valeur sur 32 bits utilisable comme valeur de hachage. lorder est l'ordre des octets pour les entiers stockes dans la base de donnees. Ce nombre doit representer l'ordre sous forme d'entier. Par exemple l'ordre poids faible-poids fort (big endian) est represente par le nombre 4321. Si lorder vaut 0 (pas d'ordre indique), on utilise l'ordre des octets du systeme hote. Si le fichier existe deja, la valeur specifiee est ignoree et la valeur specifiee lors de la creation de l'arbre est utilisee. Si le fichier existe deja (et si le drapeau O_TRUNC n'est pas specifie), les valeurs specifiees dans bsize, ffactor, lorder et nelem sont ignorees et les valeurs specifiees lors de la creation de l'arbre sont utilisees a la place. Si une fonction de hachage est indiquee, hash_open essaie de determiner s'il s'agit de la meme fonction que celle indiquee lors de la creation de la base de donnees, et echoue si ce n'est pas le cas. Des interfaces pour les routines decrites dans dbm(3), et ndbm(3) sont fournies pour la compatibilite ascendante, toutefois ces interfaces ne sont pas compatibles avec les anciens formats de fichier. ERREURS Les routines d'acces aux tables de hachage peuvent echouer et remplir errno avec n'importe quelle erreur indiquee par la routine dbopen(3). BOGUES Seuls les ordres d'octets gros boutiste (big-endian) et petit boutiste (little-endian) fonctionnent. VOIR AUSSI 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. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier et David Prevot Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . 4.4 Berkeley Distribution 17 mai 2025 hash(3)