Man page - dbopen(3)

Packages contains this manual

Available languages:

en fr pt_BR es pl ja ru

Manual

dbopen

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
Paires clé/données
ERREURS
BOGUES
VOIR AUSSI
TRADUCTION

NOM

dbopen - MĂ©thodes d’accĂšs aux bases de donnĂ©es

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

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

DB *dbopen(const char * file , int flags , int mode , DBTYPE type ,
const void *
openinfo );

DESCRIPTION

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 .

dbopen () est l’interface de bibliothĂšque pour les fichiers de bases de donnĂ©es. Les formats de fichiers pris en charge sont les arbres binaires (btree), les fichiers hachĂ©s et les fichiers UNIX. L’arbre binaire est une reprĂ©sentation d’une structure Ă©quilibrĂ©e et triĂ©e. Les fichiers hachĂ©s reprĂ©sentent des tables de hachage extensibles et dynamiques. Le format de fichier UNIX est un flux d’octets avec des enregistrements de longueur fixe ou variable. Les formats et les informations spĂ©cifiques aux fichiers sont fournis en dĂ©tail dans les pages de manuel respectives de btree (3), hash (3) et recno (3).

dbopen () ouvre le fichier file en lecture et/ou en Ă©criture. Les fichiers qui n’ont en aucun cas besoin d’ĂȘtre sauvegardĂ©s sur le disque peuvent ĂȘtre créés avec le paramĂštre file Ă  NULL.

Les arguments flags et mode doivent ĂȘtre spĂ©cifiĂ©s Ă  la routine open (2). Toutefois, seuls les attributs O_CREAT , O_EXCL , O_EXLOCK , O_NONBLOCK , O_RDONLY , O_RDWR , O_SHLOCK et O_TRUNC ont un sens (veuillez noter que l’ouverture d’un fichier d’une base de donnĂ©es en mode O_WRONLY n’est pas possible).

L’argument type est du type DBTYPE (dĂ©fini dans le fichier d’en-tĂȘte <db.h> ) et peut prendre les valeurs DB_BTREE , DB_HASH ou DB_RECNO .

L’argument openinfo est un pointeur vers une structure spĂ©cifique Ă  la mĂ©thode d’accĂšs dĂ©crite dans la page de manuel de cette mĂ©thode d’accĂšs. Si openinfo est NULL, chaque mĂ©thode d’accĂšs utilisera un comportement par dĂ©faut appropriĂ© pour le systĂšme et le type de base de donnĂ©es.

dbopen () renvoie un pointeur sur une structure DB si elle rĂ©ussit, ou NULL en cas d’erreur. La structure DB est dĂ©finie dans le fichier d’en-tĂȘte <db.h> et contient, au moins, les champs suivants :

typedef struct {
DBTYPE type;
int (*close)(const DB *db);
int (*del)(const DB *db, const DBT *key, unsigned int flags);
int (*fd)(const DB *db);
int (*get)(const DB *db, DBT *key, DBT *data,
unsigned int flags);
int (*put)(const DB *db, DBT *key, const DBT *data,
unsigned int flags);
int (*sync)(const DB *db, unsigned int flags);
int (*seq)(const DB *db, DBT *key, DBT *data,
unsigned int flags);
} DB;

Ces Ă©lĂ©ments dĂ©crivent un type de base de donnĂ©es et un jeu de fonctions effectuant diverses actions. Ces fonctions reçoivent un pointeur sur une structure semblable Ă  celle renvoyĂ©e par dbopen (), et parfois un ou plusieurs pointeurs sur des structures clĂ©s/donnĂ©es et une valeur d’attribut.

type

Le type de mĂ©thode d’accĂšs sous-jacent (et le type de fichier).

close

Un pointeur sur une routine qui vide vers le disque toutes les informations en cache, libĂšre les ressources allouĂ©es, et ferme le(s) fichier(s). Comme les paires clĂ©s/donnĂ©es peuvent ĂȘtre cachĂ©es en mĂ©moire, l’oubli de synchronisation du fichier avec les fonctions close () ou sync () peut avoir pour consĂ©quence des donnĂ©es incohĂ©rentes ou perdues. La routine close () renvoie -1 en cas d’erreur (et remplit errno ) et 0 si elle rĂ©ussit.

del

Un pointeur vers une routine permettant de supprimer des paires clés/données de la base de données.

Le paramùtre flag peut prendre l’une des valeurs suivantes :
R_CURSOR

Supprimer l’enregistrement rĂ©fĂ©rencĂ© par le curseur. Ce curseur doit bien entendu avoir Ă©tĂ© prĂ©cĂ©demment initialisĂ©.

La routine delete () renvoie 0 si elle rĂ©ussit, -1 en cas d’erreur (et dĂ©finit errno ), ou 1 si la clĂ© key indiquĂ©e n’a pas Ă©tĂ© trouvĂ©e dans le fichier.

fd

Un pointeur vers une routine qui renvoie le descripteur du fichier reprĂ©sentant la base de donnĂ©es. Le mĂȘme descripteur de fichier doit ĂȘtre fourni Ă  tous les processus qui invoquent dbopen () avec le mĂȘme nom file . Ce descripteur de fichier doit pouvoir servir d’argument aux fonctions de verrouillage fcntl (2) et flock (2). Le descripteur de fichier n’est pas nĂ©cessairement associĂ© avec l’un des fichiers sous-jacents utilisĂ©s par les mĂ©thodes d’accĂšs. Aucun descripteur n’est disponible pour les bases de donnĂ©es en mĂ©moire. La routine fd renvoie -1 en cas d’erreur (et dĂ©finit errno ), et le descripteur de fichiers en cas de succĂšs.

get

Un pointeur vers la routine d’interface de recherche assistĂ©e d’une clĂ© dans la base de donnĂ©es. L’adresse et la longueur des donnĂ©es associĂ©es avec la clĂ© key indiquĂ©e sont fournies dans une structure rĂ©fĂ©rencĂ©e par l’argument data . La routine get () renvoie -1 en cas d’erreur (et remplit errno ), 0 en cas de rĂ©ussite, ou 1 si la clĂ© key n’a pas Ă©tĂ© trouvĂ©e dans le fichier.

put

Un pointeur vers une routine permettant de stocker les paires clés/données dans la base de données.

Le paramùtre flag peut prendre l’une des valeurs suivantes :
R_CURSOR

Remplacer la paire clé/donnée référencée par le curseur. Ce curseur doit avoir été positionné précédemment.

R_IAFTER

Ajouter les donnĂ©es immĂ©diatement aprĂšs les donnĂ©es rĂ©fĂ©rencĂ©es par la clĂ© key , crĂ©ant ainsi une nouvelle paire clĂ©/donnĂ©e. Le numĂ©ro d’enregistrement de la paire ajoutĂ©e est renvoyĂ© dans la structure key (utilisable uniquement avec la mĂ©thode d’accĂšs DB_RECNO ).

R_IBEFORE

Ajouter les donnĂ©es immĂ©diatement avant les donnĂ©es rĂ©fĂ©rencĂ©es par key , crĂ©ant ainsi une nouvelle paire clĂ©/donnĂ©e. Le numĂ©ro d’enregistrement de la paire insĂ©rĂ©e est renvoyĂ© dans la structure key (utilisable uniquement avec la mĂ©thode d’accĂšs DB_RECNO ).

R_NOOVERWRITE

N’ajouter la paire clĂ©/donnĂ©e que si la clĂ© n’existe pas prĂ©cĂ©demment.

R_SETCURSOR

Enregistrer la paire clĂ©/donnĂ©e, en positionnant ou initialisant la position du curseur pour la rĂ©fĂ©rencer (utilisable uniquement avec les mĂ©thodes d’accĂšs DB_RECNO et DB_TREE ).

R_SETCURSOR n’est disponible que pour les mĂ©thodes DB_BTREE et DB_RECNO car cela implique que les clĂ©s ont un ordre inhĂ©rent immuable.

R_IAFTER et R_IBEFORE ne sont disponibles qu’avec la mĂ©thode DB_RECNO car ils impliquent que la mĂ©thode d’accĂšs soit capable de crĂ©er de nouvelles clĂ©s. Cela n’est vrai que si les clĂ©s sont ordonnĂ©es et indĂ©pendantes, comme des numĂ©ros d’enregistrement.

Le comportement par défaut de la routine put est de stocker une nouvelle paire clé/donnée, en remplaçant toute clé existant précédemment.

Les routines put () renvoient -1 en cas d’erreur (et remplissent errno ), 0 en cas de succĂšs, ou 1 si l’attribut R_NOOVERWRITE a Ă©tĂ© indiquĂ© dans flag , et si la clĂ© existait dĂ©jĂ  dans le fichier.

seq

Un pointeur vers la routine d’interface pour la recherche sĂ©quentielle dans la base de donnĂ©es. L’adresse et la longueur de la clĂ© sont renvoyĂ©es dans une structure rĂ©fĂ©rencĂ©e par key , et l’adresse et la longueur des donnĂ©es dans une structure rĂ©fĂ©rencĂ©e par data .

La rechercher sĂ©quentielle de paire clĂ©/donnĂ©e peut avoir lieu Ă  tout moment, et la position du « curseur » n’est pas affectĂ©e par les routine del (), get (), put (), ou sync (). Les modifications de la base de donnĂ©es durant un balayage sĂ©quentiel seront visibles par le balayage, c’est-Ă -dire que les enregistrements insĂ©rĂ©s avant le curseur ne seront pas vus, mais les enregistrements insĂ©rĂ©s aprĂšs le curseur seront renvoyĂ©s.

La valeur de flags doit ĂȘtre l’une des valeurs suivantes :
R_CURSOR

La routine renvoie les donnĂ©es associĂ©es avec la clĂ© indiquĂ©e. C’est diffĂ©rent du comportement de la routine get () car le curseur est Ă©galement positionnĂ© ou initialisĂ©. (Veuillez noter que pour la mĂ©thode d’accĂšs DB_BTREE , la clĂ© renvoyĂ©e ne correspond pas nĂ©cessairement Ă  la clĂ© indiquĂ©e. On retourne la plus petite clĂ© supĂ©rieure ou Ă©gale Ă  celle indiquĂ©e, ce qui permet des correspondances partielles ou des recherches d’intervalles).

R_FIRST

On renvoie la premiÚre paire clé/donnée de la base, et le curseur est initialisé ou positionné pour la référencer.

R_LAST

On renvoie la derniÚre paire clé/donnée de la base, et le curseur est initialisé ou positionné pour la référencer. (Disponible uniquement pour les méthodes DB_BTREE et DB_RECNO ).

R_NEXT

Renvoyer la paire clĂ©/donnĂ©e immĂ©diatement aprĂšs le curseur. Si le curseur n’est pas positionnĂ©, le comportement est le mĂȘme que R_FIRST .

R_PREV

Renvoyer la paire clĂ©/donnĂ©e immĂ©diatement avant le curseur. Si le curseur n’est pas positionnĂ©, le comportement est le mĂȘme que R_LAST . (Disponible uniquement pour les mĂ©thodes DB_BTREE et DB_RECNO ).

R_LAST et R_PREV ne sont disponibles que pour les méthodes DB_BTREE et DB_RECNO car ils impliquent que les clés aient un ordre inhérent immuable.

La routine seq () renvoie -1 en cas d’erreur (et remplit errno ), 0 en cas de succĂšs, et 1 s’il n’y a pas de paire clĂ©/donnĂ©e supĂ©rieure ou Ă©gale Ă  la clĂ© indiquĂ©e ou courante. Si on utilise la mĂ©thode DB_RECNO , si le fichier de base de donnĂ©es est un fichier spĂ©cial en mode caractĂšres, et si aucune paire clĂ©/donnĂ©e complĂšte n’est actuellement disponible, la routine seq renvoie 2.

sync

Un pointeur vers une routine permettant de vider sur disque toutes les informations en cache. Si la base de donnĂ©es est uniquement en mĂ©moire, la routine sync () n’a pas d’effet et rĂ©ussira toujours.

La valeur de flags peut ĂȘtre la suivante :
R_RECNOSYNC

Si on utilise la mĂ©thode DB_RECNO , ce drapeau oblige la synchronisation Ă  s’appliquer au fichier btree sous-jacent du fichier recno, et non pas Ă  ce dernier. (Consultez le champ bfname de la page de manuel recno (3) pour plus d’informations.)

La routine sync () renvoie -1 en cas d’erreur (et remplit errno ) ou 0 en cas de rĂ©ussite.

Paires clé/données

L’accĂšs Ă  tous les types de fichiers est basĂ© sur les paires clĂ©s/donnĂ©es. La structure de donnĂ©e suivante reprĂ©sente Ă  la fois les clĂ©s et les donnĂ©es.

typedef struct {
void *data;
size_t size;
} DBT;

Les éléments de la structure DBT sont définis ainsi :

data

Un pointeur vers une chaüne d’octets.

size

La longueur de la chaüne d’octets.

Les chaĂźnes d’octets des clĂ©s et des donnĂ©es peuvent avoir n’importe quelle longueur, avec la limitation que deux quelconques d’entre elles doivent pouvoir tenir simultanĂ©ment en mĂ©moire. Remarquez que les mĂ©thodes d’accĂšs ne fournissent aucune garantie en ce qui concerne les alignements des chaĂźnes d’octets.

ERREURS

La routine dbopen () peut Ă©chouer et placer dans errno n’importe laquelle des erreurs renvoyĂ©es par les routines open (2) et malloc (3) ou l’une des erreurs suivantes :

EFTYPE

Un fichier est mal formaté.

EINVAL

Un paramĂštre indiquĂ© (par exemple fonction de hachage) est incompatible avec les spĂ©cifications du fichier actuel, ou n’a pas de sens pour la fonction (par exemple utiliser le curseur sans initialisation prĂ©alable). Ou encore, il y a une incompatibilitĂ© dans les numĂ©ros de version du fichier et du logiciel.

Les routines close () peuvent Ă©chouer et dĂ©finir dans errno l’une des erreurs spĂ©cifiĂ©es par les routines de bibliothĂšque close (2), read (2), write (2), free (3), ou fsync (2).

Les routines del , get , put et seq peuvent Ă©chouer et dĂ©finir dans errno l’une des erreurs spĂ©cifiĂ©es par les routines de bibliothĂšque read (2), write (2), free (3) ou malloc (3).

Les routine fd peuvent échouer et définir errno à ENOENT pour les bases de données en mémoire.

Les routines sync peuvent Ă©chouer et dĂ©finir dans errno l’une des erreurs spĂ©cifiĂ©es par la routine de bibliothĂšque fsync (2).

BOGUES

Le typedef DBT est un mnĂ©monique pour « data base thang », qui a Ă©tĂ© choisi car personne n’arrivait Ă  trouver un nom raisonnable et pas encore utilisĂ©.

L’interface avec les descripteurs de fichier est une bidouille et sera supprimĂ©e dans les versions futures de l’interface.

Aucune mĂ©thode d’accĂšs ne fournit de transactions, de verrouillages ou d’accĂšs concurrents.

VOIR AUSSI

btree (3), hash (3), mpool (3), recno (3)

LIBTP: Portable, Modular Transactions for UNIX , Margo Seltzer, Michael Olson, USENIX proceedings, Winter 1992.

TRADUCTION

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 .