Dernière mise à jour | 22 avril 1997 | Auteur | Gilles Maire |
Serveur | http://www.imaginet.fr/ime/webbd1.htm | Adresse | Gilles.Maire@UNGI.com |
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 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.
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.
Une jointure permet de mettre en relation des données stockées dans plusieurs tables
Il existe plusieurs modèles de d'architecture Web couplé aux bases de données :
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.
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 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 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
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.