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

NOM

       recno - Méthodes d'accès aux bases de données avec enregistrements numérotés

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 pour les fichiers de base de données.
       L'un des formats de  fichier  supportés  est  celui  avec  enregistrements  numérotés.  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
       enregistrements numérotés.

       La  structure  de  cette  base  de  données  est  une série d'enregistrements de longueurs
       variables ou fixes, stockés dans un fichier  linéaire,  et  auxquels  on  accède  par  les
       numéros  logiques  d'enregistrement.  L'existence  de  l'enregistrement  numéro 5 implique
       l'existence  des  enregistrements  1  à  4,  et  l'effacement  du   numéro   entraîne   la
       renumérotation  de  l'enregistrement 5 en 4, ainsi que le déplacement d'un cran du curseur
       s'il était positionné après l'enregistrement 1.

       La structure de données spécifique pour l'accès aux enregistrements numérotés, et que l'on
       transmet à dbopen(3) est définie dans <db.h> ainsi :

           typedef struct {
               unsigned long flags;
               unsigned int  cachesize;
               unsigned int  psize;
               int           lorder;
               size_t        reclen;
               unsigned char bval;
               char         *bfname;
           } RECNOINFO;

       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_FIXEDLEN
                     Les enregistrements ont une taille fixe, et  non  pas  délimités.  Le  champ
                     reclen  de la structure indique la longueur de l'enregistrement, et le champ
                     bval contient le caractère à utiliser pour les remplissages éventuels.  Tout
                     enregistrement, inséré dans la base de données, ayant moins de reclen octets
                     de long sera automatiquement allongé.

              R_NOKEY
                     Avec l'interface spécifiée par dbopen(3), le parcours séquentiel renseigne à
                     la  fois  la  structure  clé  de l'appelant, et la structure des données. Si
                     l'argument R_NOKEY est utilisé les routines de gestion du  curseur  ne  sont
                     pas  obligées  de  remplir  la  structure  clé. Cela permet aux applications
                     d'accéder à des enregistrements en fin de fichier sans avoir à  relire  tous
                     les enregistrements précédents.

              R_SNAPSHOT
                     Ce drapeau demande qu'une image du fichier soit saisie lorsque dbopen(3) est
                     ouvert, plutôt que de lire tout enregistrement non modifié dans  le  fichier
                     original.

       cachesize
              Une  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.  Si  cachesize vaut 0 (pas de taille indiquée) on utilise une valeur par
              défaut.

       psize  La méthode d'accès recno stocke les copies en mémoire de ses  enregistrements  dans
              un  arbre  B-tree. Cette valeur est la taille (en octets) des pages à utiliser pour
              les nœuds de cet arbre. Si psize vaut 0 (pas de taille  indiquée),  une  taille  de
              page  est  choisie  en  fonction des tailles de blocs d'entrée-sortie du système de
              fichiers sous-jacent. Consultez btree(3) pour plus d'informations.

       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.

       reclen La longueur des enregistrements de taille fixe.

       bval   L'octet de marquage servant à délimiter les enregistrements de longueurs variables,
              et l'octet de remplissage pour les enregistrements de taille fixe. Si aucune valeur
              n'est  indiquée,  le  caractère fin-de-ligne « \n » est utilisé comma délimiteur et
              les enregistrements de tailles fixes sont complétés avec des espaces.

       bfname La méthode d'accès recno stocke les copies en mémoire de ses  enregistrements  dans
              un  arbre  B-tree.  Si  bfname n'est pas NULL, il indique le nom du fichier B-tree,
              comme s'il s'agissait du nom du fichier pour un appel à dbopen(3).

       La partie « donnée » des paires clés/donnéees utilisées par la méthode d'accès  recno  est
       la  même  que pour les autres méthodes d'accès. La clé est différente. Le champ data de la
       clé doit être un pointeur sur un emplacement mémoire du type recno_t, tel qu'il est défini
       dans  le  fichier  d'en-tête  <db.h>.  Ce  type  est  normalement  le plus grand des types
       d'entiers non signés disponibles pour l'implémentation. Le champ  size  doit  contenir  la
       longueur de ce type de donnée.

       Comme  il  ne  peut  pas  y  avoir  de méta-données associées aux fichiers sous-jacent aux
       méthodes recno, tout changement par rapport aux valeurs par défaut (par  exemple  longueur
       des  enregistrements  fixes,  ou  caractère  séparateur) doit être indiqué explicitement à
       chaque fois que le fichier est ouvert.

       Avec l'interface indiquée par dbopen(3), l'utilisation de la routine  put  pour  créer  un
       nouvel  enregistrement causera la création de plusieurs enregistrements vides si le numéro
       d'enregistrement est supérieur de plus d'une unité au plus grand numéro déjà présent  dans
       la base de données.

ERREURS

       Les  routines  des  méthodes d'accès recno peuvent échouer et remplir errno avec n'importe
       quelle erreur indiquée par la routine dbopen(3) ou la suivante :

       EINVAL On a essayé d'ajouter un enregistrement trop grand dans une base  de  données  avec
              longueurs fixes.

BOGUES

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

VOIR AUSSI

       btree(3), dbopen(3), hash(3), mpool(3)

       Document Processing in a Relational Database System, Michael Stonebraker, Heidi  Stettner,
       Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.

COLOPHON

       Cette  page  fait partie de la publication 3.65 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). Nicolas  François  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> ».