RECNO(3)           Manuel du programmeur Linux           RECNO(3)


NOM
       recno  - Méthodes d'accès aux bases de données avec enreg­
       istrements numérotés.

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

DESCRIPTION
       La routine dbopen 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  ds  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  enreg­
       istrements  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 enreg­
       istrements  numérotés,  et  que l'on transmet à dbopen est
       définie dans <db.h> ainsi :

       typedef struct {
              u_long flags;
              u_int cachesize;
              u_int psize;
              int lorder;
              size_t reclen;
              u_char bval;
              char *bfname;
       } RECNOINFO;

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

       flags  La valeur de  ce  champ  est  calculé  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'enreg­
                     istrement, et le champ bval contient le car­
                     actère  à  utiliser  pour  les  remplissages
                     éventuels.  Tout enregistrement, inséré dans
                     la  base  de  données, ayant moins de reclen



Linux                      11 Mai 1999                          1





RECNO(3)           Manuel du programmeur Linux           RECNO(3)


                     octets de long sera automatiquement  alongé.

              R_NOKEY
                     Avec  l'interface  spécifiée  par dbopen, 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é.  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  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'information.

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

       reclen La longueur des enregistrements de taille fixe.

       bval   L'octet de marquage servant à délimiter les  enreg­
              istrements  de  longueurs  variables, et l'octet de
              remplissage  pour  les  enregistrements  de  taille
              fixe.   Si  aucune  valeur  n'est indiquée, le car­
              actère fin-de-lignes  (``\n'')  est  utilisé  comma
              délimiteur  et les enregistrements de tailles fixes
              sont complétés avec des espaces.




Linux                      11 Mai 1999                          2





RECNO(3)           Manuel du programmeur Linux           RECNO(3)


       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.

       La  partie  ``donnée''  des paires clés/donnéees utilisées
       par les méthodes 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, ainsi 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, 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  au  enregistrements
       numérotés  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.

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.


BUGS
       Seuls  les  ordres  d'octets  big-endian  et little-endian
       fonctionnent.


TRADUCTION
       Christophe Blaess, 1999



Linux                      11 Mai 1999                          3