Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
hash - Methodes d'acces aux bases de donnees avec tables de hachage
SYNOPSIS
#include <sys/types.h>
#include <db.h>
DESCRIPTION
La routine dbopen(3) est l'interface de bibliotheque des fichiers de
base de donnees. L'un des formats de fichier supportes 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 <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 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.
Ceci 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 (et si le drapeau O_TRUNC n'est pas
specifie), les valeurs specifiees dans bsize, ffactor, lorder et nelem
sont ignores 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 essayera de
determiner s'il s'agit de la meme fonction que celle indiquee lors de
la creation de la base de donnees, et echouera 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.
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin
Duneau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.
4.4 Berkeley Distribution 18 aout 1994 HASH(3)