Provided by: manpages-fr-dev_4.15.0-9_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.13 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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.