<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_dbd

Langues Disponibles:  en  |  fr 

Description:Gestion des connexions � une base de donn�es SQL
Statut:Extension
Identificateur�de�Module:dbd_module
Fichier�Source:mod_dbd.c
Compatibilit�:Versions 2.1 and sup�rieures

Sommaire

Le module mod_dbd g�re les connexions � une base de donn�es SQL via APR. Il permet aux modules qui requi�rent des fonctions li�es aux bases de donn�es SQL de se connecter � une base de donn�es � la demande, et s'efforce de conf�rer aux bases de donn�es une efficacit� et une �volutivit� optimales pour les MPMs thread�s ou non thread�s. Pour plus de d�tails, voir le site web APR, ainsi que cette vue d'ensemble de l'environnement de d�veloppement d'Apache DBD par son d�veloppeur initial.

Directives

Sujets

Voir aussi

top

Regroupement des connexions

Ce module g�re de mani�re optimis�e en fonction de la plate-forme les connexions aux bases de donn�es. Sur les plates-formes non thread�es, il maintient une connexion persistente � la mani�re d'un LAMP classique (Linux, Apache, Mysql, Perl/PHP/Python). Sur les plates-formes thread�es, il maintient un groupe de connexions � la fois plus �volutif et plus efficace, comme d�crit dans cet article d'ApacheTutor. Notez que mod_dbd remplace les modules pr�sent�s dans cet article.

top

API DBD d'Apache

mod_dbd exporte cinq fonctions que d'autres modules pourront utiliser. L'API se pr�sente comme suit :

typedef struct {
    apr_dbd_t *handle;
    apr_dbd_driver_t *driver;
    apr_hash_t *prepared;
} ap_dbd_t;

/* Fonctions export�es pour acc�der � la base de donn�es */

/* ouvre une connexion qui DOIT avoir �t� explicitement ferm�e.
 * Renvoie NULL en cas d'erreur
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_open(apr_pool_t*, server_rec*);

/* ferme une connexion ouverte avec ap_dbd_open */
AP_DECLARE(void) ap_dbd_close(server_rec*, ap_dbd_t*);

/* acquiert une connexion qui aura la dur�e de vie de la requ�te et qui
 * NE DOIT PAS avoir �t� explicitement ferm�e. Renvoie NULL en cas
 * d'erreur. C'est la fonction recommand�e pour la plupart des
 * applications.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_acquire(request_rec*);

/* acquiert une connexion qui aura la dur�e de vie d'une connexion et
 * qui NE DOIT PAS avoir �t� explicitement ferm�e. Renvoie NULL en cas
 * d'erreur.
 */
AP_DECLARE(ap_dbd_t*) ap_dbd_cacquire(conn_rec*);

/* Pr�pare une requ�te qu'un module client pourra utiliser */
AP_DECLARE(void) ap_dbd_prepare(server_rec*, const char*, const char*);

/* Exporte aussi ces fonctions � titre optionnel mour les modules qui
 * p�f�reraient les utiliser */
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_open, (apr_pool_t*, server_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_close, (server_rec*, ap_dbd_t*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_acquire, (request_rec*));
APR_DECLARE_OPTIONAL_FN(ap_dbd_t*, ap_dbd_cacquire, (conn_rec*));
APR_DECLARE_OPTIONAL_FN(void, ap_dbd_prepare, (server_rec*, const char*, const char*));
top

Requ�tes SQL pr�par�es

mod_dbd supporte les requ�tes SQL pr�par�es � destination des modules qui pourraient les utiliser. Chaque requ�te pr�par�e doit poss�der un nom (�tiquette), et est stock�e dans un condens� (hash) : les condens�s sont du type apr_dbd_prepared_t et s'utilisent dans toute requ�te SQL ou commande select pr�par�e par apr_dbd.

Il est du ressort des modules utilisateurs de dbd d'utiliser les requ�tes pr�par�es et de pr�ciser quelles requ�tes doivent �tre sp�cifi�es dans apache2.conf, ou de fournir leurs propres directives et d'utiliser ap_dbd_prepare.

Avertissement

Lorsqu'on utilise des requ�tes pr�par�es avec des bases de donn�es MySQL, il est pr�f�rable de d�finir reconnect � 0 dans la cha�ne de connexion, afin d'�viter des erreurs provoqu�es par un client MySQL qui se reconnecterait sans r�initialiser correctement les requ�tes pr�par�es. Si reconnect est d�fini � 1, toute connexion d�fectueuse sera sens�e �tre r�par�e, mais comme mod_dbd n'en est pas inform�, les requ�tes pr�par�es seront invalid�es.
top

AVERTISSEMENT DE SECURITE

Toute application web impliquant une base de donn�es doit se prot�ger elle-m�me contre les attaques de type injection SQL. Dans la plupart des cas Apache DBD est s�r, car les applications utilisent des requ�tes pr�par�es, et les entr�es non sures ne seront utilis�es qu'� titre de donn�es. Bien entendu, si vous l'utilisez via un module tiers, vous devez �tre au fait des pr�cautions � prendre.

Cependant, le pilote FreeTDS est non s�r de par sa nature-m�me. Comme la biblioth�que sous-jacente ne supporte pas les requ�tes pr�par�es, le pilote en effectue une �mulation, et les entr�es non s�res sont fusionn�es avec la requ�te SQL.

Il peut �tre s�curis� en d�contaminant toutes les entr�es : un processus inspir� de la recherche de contaminations (taint mode) de Perl. Chaque entr�e est compar�e � une expression rationnelle, et seules les entr�es qui correspondent sont utilis�es, en accord avec le langage Perl :

  $untrusted =~ /([a-z]+)/;
  $trusted = $1;

Pour utiliser ceci, les expressions rationnelles de d�contamination doivent �tre incluses dans les requ�tes pr�par�es. L'expression rationnelle doit se situer imm�diatement apr�s le caract�re % dans la requ�te pr�par�e, et doit �tre entour�e d'accolades {}. Par exemple, si votre application attend une entr�e alphanum�rique, vous pouvez utiliser :

"SELECT foo FROM bar WHERE input = %s"

avec d'autres pilotes, et ne risquer au pire qu'une requ�te �chou�e. Mais avec FreeTDS, vous devez utiliser :

"SELECT foo FROM bar WHERE input = %{([A-Za-z0-9]+)}s"

tout ce qui ne correspond pas � l'expression rationnelle est alors rejet�, et la requ�te est maintenant s�re.

Alternativement, vous pouvez utiliser le pilote ODBC tiers, qui offre la s�curit� des requ�tes pr�par�es authentiques.

top

DBDExptime Directive

Description:Dur�e de vie des connexions inactives
Syntaxe:DBDExptime dur�e en secondes
D�faut:DBDExptime 300
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Cette directive permet de d�finir la dur�e de vie des connexions inactives lorsque le nombre de connexions sp�cifi� par la directive DBDKeep a �t� d�pass� (plates-formes thread�es uniquement).

top

DBDInitSQL Directive

Description:Ex�cute une instruction SQL apr�s connexion � une base de donn�es
Syntaxe:DBDInitSQL "instruction SQL"
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Les modules qui le souhaitent peuvent ex�cuter une ou plusieurs instructions SQL apr�s connexion � une base de donn�es. Par exemple initialiser certaines valeurs, ou ajouter une entr�e dans le journal lors d'une nouvelle connexion � la base de donn�es.

top

DBDKeep Directive

Description:Nombre maximum de connexions maintenues
Syntaxe:DBDKeep nombre
D�faut:DBDKeep 2
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Cette directive permet de d�finir le nombre maximum de connexions � maintenir par processus, en dehors de celles servant � g�rer les pics de demandes (plates-formes thread�es uniquement).

top

DBDMax Directive

Description:Nombre maximum de connexions
Syntaxe:DBDMax nombre
D�faut:DBDMax 10
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Cette directive permet de d�finir le nombre maximum effectif de connexions par processus (plates-formes thread�es uniquement).

top

DBDMin Directive

Description:Nombre minimum de connexions
Syntaxe:DBDMin nombre
D�faut:DBDMin 1
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Cette directive permet de d�finir le nombre minimum de connexions par processus (plates-formes thread�es uniquement).

top

DBDParams Directive

Description:Param�tres de la connexion � la base de donn�es
Syntaxe:DBDParams param1=valeur1[,param2=valeur2]
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Cette directive permet de sp�cifier des param�tres selon les besoins du pilote concern�. En g�n�ral, les param�tres � passer concernent tout ce qui n'a pas de valeur par d�faut comme le nom d'utilisateur, le mot de passe, le nom de la base de donn�es, le nom d'h�te et le num�ro de port de la connexion.

Les param�tres de la cha�ne de connexion en fonction des diff�rents pilotes comprennent :

FreeTDS (pour MSSQL et SyBase)
username, password, appname, dbname, host, charset, lang, server
MySQL
host, port, user, pass, dbname, sock, flags, fldsz, group, reconnect
Oracle
user, pass, dbname, server
PostgreSQL
La cha�ne de connexion est pass�e directement � PQconnectdb
SQLite2
La cha�ne de connexion est scind�e avec comme s�parateur le caract�re ':', et partie1:partie2 est utilis� dans sqlite_open(partie1, atoi(partie2), NULL)
SQLite3
La cha�ne de connexion est pass�e directement � sqlite3_open
ODBC
datasource, user, password, connect, ctimeout, stimeout, access, txmode, bufsize
top

DBDPersist Directive

Description:Utiliser ou non des connexions persistentes
Syntaxe:DBDPersist On|Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Si cette directive est d�finie � Off, les connexions persistentes et les connexions group�es sont d�sactiv�es. � la demande d'un client, une nouvelle connexion � la base de donn�es est ouverte, et ferm�e imm�diatement � l'issue du traitement. Cette configuration ne doit �tre utilis�e qu'� des fins de d�bogage, ou sur des serveurs � charge faible.

Par d�faut, les groupes de connexions persistentes sont activ�s (ou une seule connexion persistente du style LAMP pour les serveurs non thread�s), et c'est la configuration qui devrait �tre utilis�e dans la plupart des cas sur un serveur en production.

Avant la version 2.2.2, cette directive n'acceptait que les valeurs 0 et 1 au lieu de Off et On, respectivement.

top

DBDPrepareSQL Directive

Description:D�finit une requ�te SQL pr�par�e
Syntaxe:DBDPrepareSQL "requ�te SQL" �tiquette
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Pour les modules tels que les modules d'authentification, qui utilisent de mani�re r�p�t�e la m�me requ�te SQL, on peut optimiser les performances en pr�parant la requ�te une fois pour toutes au d�marrage, plut�t qu'� chaque utilisation. Cette directive permet de pr�parer une requ�te SQL et de lui assigner une �tiquette.

top

DBDriver Directive

Description:Sp�cifie un pilote SQL
Syntaxe:DBDriver nom
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_dbd

Cette directive permet de sp�cifier un pilote apr_dbd par son nom. Le pilote doit �tre install� sur votre syst�me (sur la plupart des syst�mes, il s'agit d'un objet partag� ou d'une dll). Par exemple, DBDriver mysql va s�lectionner le pilote MySQL dans la biblioth�que apr_dbd_mysql.so.

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.