Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       hash - Méthodes d'accès aux bases de données avec tables de hachage

SYNOPSIS

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

DESCRIPTION

       NOTE:  cette  page  décrit  des  interfaces  fournies  par la glibc jusque dans sa version 2.1. Depuis la
       version 2.2, la glibc ne fournit plus  ces  interfaces.  Veuillez  consulter  les  API  fournies  par  la
       bibliothèque libdb.

       La routine dbopen(3) est l'interface de bibliothèque des fichiers de base de données. L'un des formats de
       fichier  supportés  est  la  table de hachage. La description générale des méthodes d'accès à une base de
       données est fournie dans la page de manuel dbopen(3). La page présente ne  décrit  que  les  informations
       spécifiques aux tables de hachage.

       Les structures de hachage représentent un schéma de base de données dynamique et extensible.

       La  structure  de données spécifique aux tables de hachage que l'on transmet à dbopen(3) est définie dans
       <db.h> 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 éléments de cette structure sont les suivants :

       bsize     défini la taille des cases de la table (bucket size), et vaut, par défaut, 256 octets.  Il  est
                 préférable  d'augmenter la taille de page pour les tables situées sur disque ayant des éléments
                 avec beaucoup de données.

       ffactor   indique une densité désirée au sein de la table. Il s'agit d'une  approximation  du  nombre  de
                 clés  pouvant  s'accumuler  dans  une  seule  case, ce qui détermine le moment où la table doit
                 s'agrandir ou se rétrécir. La valeur par défaut est 8.

       nelem     est une estimation de la taille finale de la table de hachage. S'il  n'est  pas  configuré,  ou
                 s'il est configuré trop bas, la table s'agrandira quand même correctement au fur et à mesure de
                 l'entrée  des  clés,  bien  qu'une légère dégradation des performances puisse être observée. La
                 valeur par défaut est 1.

       cachesize est la taille maximale suggérée de mémoire cache, en octets. Cela n'a qu'une valeur indicative,
                 et les méthodes d'accès alloueront plus de mémoire plutôt que d'échouer.

       hash      est une fonction définie par l'utilisateur. Comme aucune fonction de  hachage  ne  se  comporte
                 parfaitement  bien  sur  tout  type  de  données,  il peut arriver que la fonction interne soit
                 particulièrement mauvaise sur un jeu particulier de données. La fonction de hachage fournie par
                 l'utilisateur doit prendre deux arguments (un pointeur sur une chaîne 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 stockés  dans  la  base  de  données.  Ce  nombre  doit
                 représenter  l'ordre  sous  forme  d'entier.  Par  exemple l'ordre poids faible-poids fort (big
                 endian) est représenté par le nombre 4321. Si lorder vaut 0 (pas d'ordre indiqué),  on  utilise
                 l'ordre des octets du système hôte.

       Si  le  fichier  existe  déjà  (et si le drapeau O_TRUNC n'est pas spécifié), les valeurs spécifiées dans
       bsize, ffactor, lorder et nelem sont ignorés et les valeurs spécifiées lors de  la  création  de  l'arbre
       sont utilisées à la place.

       SI une fonction de hachage est indiquée, hash_open essayera de déterminer s'il s'agit de la même fonction
       que celle indiquée lors de la création de la base de données, et échouera si ce n'est pas le cas.

       Des  interfaces  pour  les  routines décrites dans dbm(3), et ndbm(3) sont fournies pour la compatibilité
       ascendante, toutefois ces interfaces ne sont pas compatibles avec les anciens formats de fichier.

ERREURS

       Les routines d'accès aux tables de hachage peuvent échouer et remplir errno avec n'importe quelle  erreur
       indiquée 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.

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe  francophone de traduction de
       Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org>  ou  par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

4.4 Berkeley Distribution                         23 avril 2012                                          HASH(3)