Loading

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>

       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  donnes.  Si  l’argument
                     R_NOKEY est utilisé les routines de gestion du curseur ne
                     sont pas obligées  de  remplir  la  structure  clé.  Ceci
                     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. Ceci
              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 noeuds 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.  Voir  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.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       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> ».