recno(3) | Library Functions Manual | recno(3) |
recno - Méthodes d'accès aux bases de données avec enregistrements numérotés
Bibliothèque C standard (libc, -lc)
#include <sys/types.h> #include <db.h>
NOTE : cette page décrit des interfaces fournies jusqu'à la glibc 2.1. Depuis la glibc 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 pris en charge 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 1 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 :
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.
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 :
Seuls les ordres d'octets gros boutiste (big-endian) et petit boutiste (little-endian) fonctionnent.
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.
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
4 décembre 2022 | 4.4 Berkeley Distribution |