Chapitre 53 : Web et bases de données


Dernière mise à jour  22 avril 1997  Auteur Gilles Maire
Serveur  http://www.imaginet.fr/ime/webbd1.htm Adresse Gilles.Maire@UNGI.com

53.1 - Introduction

Le monde du Web ne permet un véritable échange d'informations structurées et facilement contrôlables que si ces informations sont structurées en base de données. En effet, les bases de données d'aujourd'hui offrent un certain nombre d'avantages indéniables :

On comprend bien l'intérêt d'une base de données quand on utilise des logiciels de réservation de billet de train, qu'on utilise le Minitel pour rechercher un correspondant ou même lorsqu'on utilise la base Four11 sur Internet.

Mais ceci ne doit pas nous faire croire que l'utilisation d'une base de données sur le Web, limite son utilisation à la saisie de formulaires et à la restitution de données présentes dans la base. Il faut en effet garder présent à l'esprit que les Web que vous visitez tous les jours sont pour certains d'entre eux gérés par une base de données et que vous ne vous en apercevez pas nécessairement.

Par contre, il est évident qu'il est un peu plus complexe de mettre en jeu une base de données que de faire des pages Web de façon manuelle, quoique les solutions actuelles dont nous parlerons plus loin permettent cette mise en œuvre sans connaissance informatique très poussée.

Enfin, il est bien sûr impossible de couvrir toutes les solutions de connexion base de données, vu que chaque base possède ses propres outils et que chaque architecture guide ses propres choix.
Il existe également un grand nombre d'outils, d'AGL, de passerelles permettant de connecter les bases.

Il est donc impératif de consulter les principales ressources suivantes pour connaître les spécifications de chaque produit :

Un peu de vocabulaire

Un SGBD est un Système de Gestion de Base de Données, il en existe plusieurs dans le commerce et le plus connu d'entre eux est Oracle qui existe sur un grand nombre de plates-formes dont  UNIX et Windows NT, ensuite vient Sybase aussi présent sur les deux plate-formes. On commence à parler de SQL serveur de Microsoft, qui est un produit dérivé de Sybase et qui n'existe pas sur plate-forme UNIX. Nous parlerons moins d'Informix, de DB2 ou d'Ingres, sachant que cette dernière base est disponible dans les distributions Linux. Dans le futur nous risquons d'entendre parler d'Illustra et autres nouveaux concepts de bases de données.

Les SGBD actuels sont dit relationnels et  peuvent donc  être accédés par un langage d'interrogation ou de traitement  : le SQL.

SQL (Structured Query Language) est un langage standard (ISO 9075) pour manipuler et accéder aux données d'une base de données relationnelle. Il se compose de trois grands types de requêtes :

Mentionnons les pré-compilateurs  SQL  qui permettent d'intégrer des commandes SQL au sein des langages Colbol, Ada, C, PL/1.

Pour continuer avec les définitions, vous entendrez parler de traitements transactionnels ou de transactions et vous devez connaître de quoi il s'agit, vu que les accès Web ne le sont pas de base. Qu'est-ce qu'un traitement transactionnel ?

Tout simplement une transaction est une série d'échanges et d'interactions entre un client et une base de données quand le contexte est gardé entre chacune des connexions résultantes. En pratique, lorsque vous vous connectez, depuis une page HTML comportant un formulaire sur un serveur qui vous envoi une réponse, aucune mémoire de votre connexion n'est conservée. Ce qui veut dire que si vous vous connectez plus tard, pour poser une question suivante ou une question différente, le serveur HTTP ne fait pas de différence entre votre connexion et celle d'un autre connecté. Cela, et nous le verrons, n'est pas sans poser quelques problèmes car dans une application complexe, il est nécessaire de garder d'un écran à l'autre les différentes valeurs.

La tendance actuelle est d'utiliser des connexions asynchrones non stables et non transactionnelles, et nous en étudierons les effets et les contraintes plus loin dans ce chapitre.

Parlons de la technologie ODBC (Open DataBase Connectivity) de Microsoft qui est inclus dans l'architecture WOSA (Windows Open Service Architecture). ODBC connaît un succès car il définit une API de connexion standard du marché. Nous aborderons la technologie ODBC par un  exemple.

Quelques exemples SQL

Cette partie donne un résumé des principales commandes SQL que tout honnête homme doit connaître.

Prenons deux tables l'une client et l'autre société 

client

code-client    nom    prenom    fonction    tel    code_societe

societe

code_societe    societe    adresse    code_postal    ville     activite

Nous allons bâtir des requêtes SQL simples  pour  manipuler ces bases de données.

  1. Insertion du client Dupont

  2. INSERT INTO client VALUES (100,'DUPONT','Jean','Directeur','0149484948',150);
  3. Insertion du client Dupont

  4. INSERT INTO client (nom,prenom,fonction,code_client,tel)VALUES ('DUPONT','Jean','Directeur',100,'0149484948') ;
  5. Modifier le numéro de téléphone de Dupont

  6. UPDATE client SET tel='0140110101' WHERE code_client = 100 ;
  7. Détruire un client de code 100

  8. DELETE FROM client WHERE code_client = 100 ;
  9. Détuire tous les clients

  10. DELETE FROM client ;
  11. Lister tous les clients

  12. SELECT * from client
  13. Lister les noms et prénoms de tous les clients

  14. SELECT nom, prenom  FROM client
  15. Lister les clients dont la fonction est Directeur

  16. SELECT * FROM client WHERE fonction = 'Directeur'
  17. Lister les sociétés dont l'activité est SSII et situées à Paris

  18. SELECT * FROM societe WHERE activite='SSII' AND ville='PARIS'

Une jointure permet de mettre en relation des données stockées dans plusieurs tables

  1. Lister le prénom, le nom, la société et l'adresse de tous les clients

  2. SELECT prenom,nom,societe,adresse FROM client,societe WHERE client.code_societe=societe.code_societe
  3. Lister le prénom, le nom la société et l'adresse de tous les directeurs de toutes les banques

  4. SELECT prenom,nom,societe,adresse,code_postal,ville FROM client, societe WHERE client.code_societe=societe.code_societe AND client.fonction='Directeur' AND societe.activite='BANQUE'

Les architectures de bases de données orientées Web

Il existe plusieurs modèles de d'architecture Web couplé aux bases de données :

53.2 - En pratique

Nous allons maintenant étudier quelques façons de procéder en prenant en compte des exemples tirés des différents modèles présentés précédemment. Nous donnerons un avis sur chacune des méthodes, sachant que nous ne pouvons pas couvrir l'ensemble des  outils mais donner autant que faire se peut un exemple de chaque grande méthode.

Web Oracle Web (WOW)

Wow est constitué de quatre modules fonctionnant sous UNIX :

Exemple : 

Prenons l'appel de l'URL : http://www.ungi.com/cgi-bin/wow/afficher?texte=maire 

Tout lecteur d'UNGI normalement constitué aura compris, que nous étions en présence de l'appel d'un script wow/ungi1 avec le paramètre nom=maire.

Ainsi le serveur HTTP demande l'éxécution du script wow qui transmet les paramètres ungi1?nom=maire au module wowstub. Wowstub transforme le tout en requête 

 begin

afficher('maire')

end;

ainsi la procédure afficher est envoyée au serveur Oracle qui l'exécute après avoir transformé la procédure affiche en ordre d'impression, puis la renvoi au navigateur qui était en attente.

Comme mentionné plus haut, il est possible de développer un programme PL/SQL dans le paquettage ht.sql

htp.htmlOpen
htp.headOpen
htp.title('mon programme')
htp.headClose
htp.bodyOpen
htp.header (1,'Titre de niveau 1')
htp.line
htp.bold ('Ceci est un texte en gras')
htp.bodyClose
htp.hmlClose

Ceci générera le code HTML que vous pouvez facilement déduire.

Il est aussi facile d'écrire des ordres SQL au moyen de dbms_sql.sql

 
Avantages et inconvénients 

Simple

Développement dans un langage lié à Oracle - Utilisation d'un mécanisme CGI un peu rustique - pas de persistance des informations entre deux sessions - consommation en ressource du serveur HTTP

Oracle WebServer 2

Oracle Web serveur est un serveur HTTP Oracle, lié à la base de données du même nom. Ceci permet de se dispenser de l'utilisation des CGI et d'appeler les requêtes SQL de noyau à noyau, c'est à dire du noyau du serveur HTTP au DBMS.

La partie HTTP d'Oracle Web Server est appelée Oracle Web Listener, il sait comme tout autre serveur HTTP renvoyer les pages HTML statiques ou les CGI classiques mais il est en outre capable de transmettre les requêtes destinées à la base au deuxième module appelé Web Request Broker.

Le Web Request Broker sait router les requêtes vers un module de traitement, soit les requêtes de type PL/SQL soit les requêtes JAVA le tout en mode API.

Avantages et inconvénients 

Rapide

Développement dans un langage lié à Oracle - Propriétaire - Le serveur HTTP Oracle est moins performant que les serveurs HTTP Apache, Interprise Serveur ou Commerce Serveur de Netscape.

Web.sql

Web.sql est une offre de connexion SYBASE. Cette offre est intéressante car elle peut être couplée avec les serveur HTTP en CGI ou bien à Netscape en mode NSAPI sur plate-forme Unix  ou sur plate-forme NT.

Pour web.sql les fichiers d'extenstion hts  placés dans le répertoire alloué à web.sql sur votre serveur HTTP suivront la logique suivante :

Bien sûr les CGI  ou pages HTML ne comprenant pas de balises SYB ne seront pas envoyées au RDMS.

En outre web.sql fournit une vingtaine de routines permettant de changer le content-type des données renvoyées, de se connecter à une base autre que celle par défaut etc..

Si le champ < INPUT NAME=NOM TYPE=TEXT> est utilisé dans un formulaire, on retrouve la valeur entrée par simple utilisation de la variable $NOM

 Exemple :
 

Ainsi l'affichage de tous les ' Maire' de la base

<HTML>
<HEAD>
</HEAD>
<BODY>
Ceci est en HTML classique
<SYB TYPE=PERL>
SELECT * FROM employes WHERE nom = 'maire'
</SYB>

 Cet exemple ne laisse pas apparaître ni le nom de la base ni un nom de login et  password, car par défaut ces  noms sont situés dans le répertoire web.sql dans le fichier .websql.pl

Internet Database Connector

Nous allons étudier brièvement ici l'offre de Miscrosoft liée à son serveur Internet Information Serveur. La solution proposée par Microsoft est appelée Internet Database Connector.

C'est une offre basée sur ODBC et permet donc une interface aisée avec toutes les bases de données offrant une interface ODBC.

La DLL (httpodbc.dll) chargée de l'interface avec les bases de données et appelée par le serveur HTTP IIS sait traiter deux types de fichier :

Exemple : 

Fichier exemple.idc :

Datasource: Exemple
Username : webuser
Template: Exemple.htx
SQLStatement: 
+ SELECT nom , prenom FROM utilisateur WHERE pays = 'France'

 

On le comprend : Datasource est la source ODBC que l'on veut atteindre, le nom d'utilisateur de la personne connectée est Username, Template est le nom du fichier pseudo HTML contenant le résultat. SQLStatement est la requête à envoyer au serveur.

Il vous faut déclarer une source de données ODBC afin de stocker les informations sur la base de données spécifiée. Pour cela, sous Windows NT ou 95 aller dans le panneau de configuration, puis ODBC 32 bits, 
puis DSN système, ajouter suivi du nom de votre système de base de données (Access par exemple). Ensuite  vous entrez le nom de la bases existante et une description :
Lecteurs
Database

Ensuite quitter l'installation ODBC.

Le fichier exemple. htx associé  aura par exemple la forme suivante :

<HTML>
<B><%nom%></B> <%prenom%>
</HTML>

On le comprend les informations entre les balises <% et %> sont interprétées et remplacées par les informations trouvées dans la base sous forme de listes.

Avantages et inconvénients 

Rapide - compatible Front Page

Lié à Windows NT et donc pas à UNIX.

 


Haut Haut Suivant Sommaire Recherche Fenêtre Glossaire Nouveau Bientôt Courrier Souscription Aide Copyright