Loading

NOM

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

SYNOPSIS

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

       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 table 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.
                 Ceci  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.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       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> ».