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

NOM

       btree - Méthodes d'accès à une base de données en arbre binaire

SYNOPSIS

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

DESCRIPTION

       NOTE:  cette  page  décrit  des  interfaces  founies  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 pour les fichiers de base de données. L'un des
       formats de fichier supportés est l'arbre binaire  de  fichiers.  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 présente page ne décrit
       que les informations spécifiques aux arbres binaires.

       Une telle structure de données est un arbre  équilibré,  trié,  mémorisant  les  paires  « clés-données »
       associées.

       La  structure de données spécifique aux méthodes d'accès aux arbres binaires que l'on fournit à dbopen(3)
       est définie dans le fichier d'en-tête <db.h> comme suit :

           typedef struct {
               unsigned long flags;
               unsigned int  cachesize;
               int           maxkeypage;
               int           minkeypage;
               unsigned int  psize;
               int         (*compare)(const DBT *key1, const DBT *key2);
               size_t      (*prefix)(const DBT *key1, const DBT *key2);
               int           lorder;
           } BTREEINFO;

       Les éléments de cette structure sont les suivants :

       flags  La valeur de ce champ est calculée avec un OU binaire sur certaines des constantes suivantes :

              R_DUP  Autoriser les clés dupliquées dans l'arbre, c'est-à-dire, permettre l'insertion même si  la
                     clé  existe déjà dans l'arbre. Le comportement par défaut, comme décrit dans dbopen(3), est
                     d'écraser une clé correspondante lors de l'insertion d'une nouvelle clé, ou d'échouer si le
                     drapeau  R_NOOVERWRITE  est  indiqué.  Le  drapeau  R_NOOVERWRITE a priorité sur le drapeau
                     R_DUP, et si R_NOOVERWRITE est spécifié, une tentative d'insertion d'une clé déjà existante
                     échouera.

                     Si  la  base  de  données  contient des clés dupliquées, l'ordre de récupération des paires
                     « clé-valeur » est indéfini si l'on utilise la routine get. Toutefois la routine  seq  avec
                     le  drapeau R_CURSOR positionné renvoie la clé « logiquement première » de chaque groupe de
                     clés dupliquées.

       cachesize
              Une suggestion de taille maximale (en  octets)  du  cache  mémoire.  Cette  valeur  est  seulement
              indicative,  et les méthodes d'accès alloueront plus de mémoire plutôt que d'échouer. Comme chaque
              recherche examine la page racine de l'arbre, le cache des  pages  les  plus  récemment  consultées
              améliore  les  temps  d'accès. De plus, les écritures physiques sont retardées aussi longtemps que
              possible, ainsi  un  cache,  même  modeste,  peut  réduire  sensiblement  le  nombre  d'opérations
              d'entrée-sortie.   Bien  sûr,  l'utilisation  d'un  cache  augmente  (et  seulement  augmente)  la
              probabilité de corruption ou de perte de données si le système plante alors  qu'un  arbre  est  en
              cours  de  modification.  Si  cachesize  vaut  0 (pas de taille indiquée) un cache est utilisé par
              défaut.

       maxkeypage
              Le nombre maximal de clés qui seront stockées sur une seule page. Pas encore implémenté.

       minkeypage
              Le nombre minimal de clés qui seront stockées sur la même page. Cette  valeur  est  utilisée  pour
              déterminer  quelles clés seront stockées sur des pages de débordement. Par exemple, lorsqu'une clé
              ou une donnée est plus grande que la taille de page divisée par le nombre minimal  de  clés,  elle
              est stockée sur des pages de débordement plutôt que sur la page elle-même. Si minkeypage est nulle
              (aucun nombre minimal de clés indiqué), une valeur de 2 est utilisé.

       psize  Taille (en octets) des pages utilisées pour les nœuds  de  l'arbre.  La  taille  minimale  est  de
              512 octets,  et  la taille maximale de 64 ko. Si psize vaut 0, (aucune taille indiquée), la taille
              de la page est choisie en fonction de la taille des blocs d'entrée-sortie du système  de  fichiers
              sous-jacent.

       compare
              Fonction  de  comparaison de clé. Elle doit renvoyer un entier inférieur, égal ou supérieur à zéro
              lorsque le premier argument est respectivement inférieur, égal ou supérieur  au  second.  La  même
              fonction  de comparaison doit toujours être utilisée pour un arbre donné pendant son ouverture. Si
              compare vaut NULL (aucune fonction indiquée), les clés sont comparées de manière lexicographique ;
              les clés les plus courtes sont considérées comme inférieures aux clés les plus longues.

       prefix Fonction de comparaison avec préfixe. Si elle est spécifiée, cette routine doit renvoyer le nombre
              d'octets du second argument (une clé) qui sont nécessaires pour déterminer s'il est  supérieur  au
              premier argument (une clé). Si les clés sont égales, la longueur de la clé devrait être retournée.
              Remarquez que l'utilité de cette routine dépend dans une très large  mesure  du  type  de  données
              manipulées,  mais  il  arrive  que cette routine fournisse des réductions significatives de taille
              d'arbre et de temps de recherche. Si prefix vaut NULL (aucune fonction  indiquée),  et  si  aucune
              fonction de comparaison n'est mentionnée, une routine de comparaison lexicographique est employée.
              Si prefix est NULL et si une routine de comparaison est spécifiée, aucune comparaison  de  préfixe
              n'est effectuée.

       lorder L'ordre des octets des 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 (gros boutiste)  est  représenté
              par  le  nombre  4321.  Si  lorder  vaut 0 (aucun 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  indiquées  par  les
       paramètres  flags,  lorder,  et  psize  sont ignorées, et remplacées par les valeurs utilisées lors de la
       création de l'arbre.

       Le balayage séquentiel de l'arbre vers l'avant se déroule de la plus petite clé vers la plus grande.

       L'espace libéré par la destruction des paires « clés-données » n'est jamais  récupéré,  bien  qu'il  soit
       théoriquement  disponible  pour  être réutilisé. Cela signifie qu'une base de données en arbre binaire ne
       fait que grandir. Il faut donc éviter les suppressions exagérées, ou reconstruire régulièrement un nouvel
       arbre depuis un balayage de l'ancien.

       Les recherches, les insertions et les suppressions dans un arbre binaire s'effectuent en O log base N, où
       base représente le facteur de remplissage moyen. Souvent, l'insertion de données déjà ordonnées  dans  un
       arbre  binaire  résulte en un facteur d'insertion faible. Cette implémentation a été modifiée pour rendre
       l'insertion d'éléments ordonnés encore plus profitable. Cela donne un facteur  de  remplissage  de  pages
       encore meilleur.

ERREURS

       Les  routines d'accès btree peuvent échouer et définir errno avec le code de toutes les erreurs indiquées
       pour les routines de la bibliothèque dbopen(3).

BOGUES

       Seuls les ordres d'octets gros boutiste (big-endian) et petit boutiste (little-endian) fonctionnent.

VOIR AUSSI

       dbopen(3), hash(3), mpool(3), recno(3)

       The Ubiquitous B-tree, Douglas Comer, ACM Comput. Surv. 11, 2 (June 1979), 121-138.

       Prefix B-trees, Bayer and Unterauer, ACM Transactions on Database Systems, Vol. 2, 1 (March 1977), 11-26.

       The Art of Computer Programming Vol. 3: Sorting and Searching, D.E. Knuth, 1968, pp 471-480.

COLOPHON

       Cette page fait partie de la publication 3.57 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> ».

                                                  23 avril 2012                                         BTREE(3)