Provided by: manpages-fr-dev_4.13-4_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  pris  en charge 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à, la valeur spécifiée est ignorée
                 et la valeur spécifiée lors de la création de l'arbre est utilisée.

       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ées 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 essaie 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 échoue 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 5.10 du projet man-pages Linux. Une description du projet et des
       instructions  pour  signaler  des  anomalies et la dernière version de cette page peuvent être trouvées à
       l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier   <barbier@debian.org>   et    David    Prévot
       <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,  veuillez  envoyer  un  message  à
       debian-l10n-french@lists.debian.org.

4.4 Berkeley Distribution                       15 septembre 2017                                        HASH(3)