Académique Documents
Professionnel Documents
Culture Documents
1- INTRODUCTION
Aujourdhui, les entreprises tendent de plus en plus vouloir utiliser les postes
Dos/Windows prsents dans
les bureaux pour faire tourner les applicatifs en plus des logiciels bureautiques. La premire
tape consister installer sur les micros des mulations permettant au micro de
fonctionner comme un terminal classique de lordinateur central (gros systme, AS400, Unix
ou autre).
Les concepts prsents ici sont suffisamment gnraux pour tre communs tous les
serveurs de donnes actuels du march : Oracle, Microsoft SQL Server, Sybase, SQL
Anywhere, ...
2.1.1 Dfinition
Si lon sen tient la dfinition toute machine peut tre client ou serveur ou les deux la fois
ou alternativement lun puis lautre.
2
Sur ce schma, le trait horizontal reprsente le rseau et les flches entre client et serveur,
le trafic rseau gnr par la conversation entre client et serveur.
Dans une architecture deux tiers, encore appele client-serveur de premire gnration ou
client-serveur de donnes, le poste client se contente de dlguer la gestion des donnes
un service spcialis. Le cas typique de cette architecture est l'application de gestion
fonctionnant sous Ms-Windows et exploitant un SGBD centralis.
La gestion des donnes est prise en charge par un SGBD centralis, s'excutant le plus
souvent sur un serveur ddi. Ce dernier est interrog en utilisant un langage de requte
qui, le plus souvent, est SQL...
Le dialogue entre client et serveur se rsume donc l'envoi de requtes et au retour des
donnes correspondant aux requtes. Ce dialogue ncessite l'instauration d'une
communication entre client et serveur.
5
Cet change de messages transite travers le rseau reliant les deux machines. Il met en
uvre des mcanismes relativement complexes qui sont, en gnral, pris en charge par un
middleware.
Il est lcoute des requtes provenant des clients. Il y rpond en faisant appel aux
fonctions dun S.G.B.D. classique.
Langage de Description de Donnes (L.D.D.)
Ce langage permet de dcrire les donnes (Type, Longueur, Nature ...), les relations entre
les donnes, les rgles de gestion, les domaines de valeur, etc... En langage SQL cest par
exemple linstruction CREATE .
Langage de Manipulation de Donnes (L.M.D.)
Ce langage sert excuter les oprations dajout, suppression, modification des donnes. Il
permet galement linterrogation des donnes. Cest en gnral le langage utilis dans les
requtes. En langage SQL cest par exemple linstruction SELECT .
6
Gestion du stockage
Le S.G.B.D organise le stockage des donnes sur disque. Cette organisation interne est
transparente pour lutilisateur et le programmeur. Il offre une vue logique des donnes.
Partage des donnes
Dans ce contexte multi-utilisateurs, cest le S.G.B.D. qui gre le partage des donnes entre
les diffrents utilisateurs (ou clients) Cest lui qui en sappuyant en gnral, sur le systme
dexploitation vite les situations de conflit et les situations dinterblocage ou treinte
fatale.
Confidentialit
Le S.G.B.D. assure la confidentialit des donnes : il contrle les droits daccs des
utilisateurs. Cest dire dans ce contexte des applications clientes lorsquelles demandent la
connexion. (Voir 3.1.2)
Scurit, fiabilit, cohrence
Le S.G.B.D. assure la scurit des donnes. Cest dire quil doit veiller ce que les donnes
restent cohrentes. Par exemple il doit faire en sorte quune commande ne puisse pas tre
cre tant que toutes les lignes de commande ne sont pas cres, ou quun client ne soit pas
supprim sans avoir au pralable supprim toutes les commandes attaches ce client.
Dans les deux cas ci -dessus (cration dune commande ou suppression dun client) il y a
plusieurs actions conscutives excuter dans la base de donnes. Pour que la base de
donnes reste cohrente, il faut que ces actions soient toutes excutes ou alors aucunes.
Si une interruption intervient au cours dune transaction, le systme remet les donnes dans
ltat o elles taient avant le dbut de la transaction.
Sauvegarde et restauration
La sauvegarde et la restauration sont deux outils du S.G.B.D permettant de mmoriser puis
de retrouver une base de donnes dans un tat cohrent.
Contrle dintgrit
La plupart des S.G.B.D offrent la possibilit de dcrire les rgles de gestion du systme
informations de lentreprise. Par exemple, si un client nexiste pas, on ne peut pas lui
associer de facture.
Une fois toutes les rgles dcrites, le S.G.B.D vrifie que les mises jour effectues sur les
donnes respectent ces rgles. Ainsi, il refusera la cration de la facture tant que le client ne
sera pas cr.
7
La plupart des SGBD actuels offrent un SQL procdural. Cest dire que lon peut faire
excuter par le serveur une partie des traitements qui taient jusque-l effectus sur le
client :
Vrification des rgles de gestion (cohrence des informations entre plusieurs tables)
Conversion (ou remplissage) automatique de certains champs avant linsertion
Transactions particulires indpendantes des applicatifs
etc...
Ces procdures et triggers sont dclenchs par les applications qui tournent sur les postes
clients, mais elles sont excutes par le processeur du serveur.
Ce sont des points dentre auxquels on peut accrocher du code SQL. Ces points dentre
sont propres chaque table et permettent dagir trois moments :
linsertion dun enregistrement
la suppression dun enregistrement
la modification dun enregistrement
Exemples dutilisation :
Si solde <> 0
Alors annuler linsertion
Sinon valider linsertion
FSI
Soit en SQL
suppressions en cascade
On souhaite lorsque lon supprime un client supprimer toutes les informations qui lui sont
attaches (commande, facture, rglements)
Les commandes tant attaches aux lignes de commande on est oblig dajouter un autre
trigger sur la table commande
Ces procdures sont crites en SQL Procdural et sont alors excutes par le processeur du
serveur.
Dfinition
Exemples de middleware
4.2 - ODBC
4.2.1 Principe
Le client envoie une requte au serveur de donnes.
Cette requte concerne une source de donnes dfinie par loutil de configuration
ODBC
lAPI ODBC recherche sa dfinition dans la base ODBC (quel type de SGBD, quel
serveur, quelle database, ...) et la formate en trames compatibles avec le SGBD et la
couche transport
la requte est vhicule par le rseau jusquau serveur concern
Sur le serveur lopration inverse est effectue :
recomposition de la requte partir des trames reues (FAP)
le SGBD interprte la requte et lexcute Le rsultat de la requte prend ensuite le
chemin inverse.
4.2.2 Concrtement
ODBC est un produit de Windows qui comporte plusieurs parties :
un outil de configuration
des drivers (DLL) fournis par les S.G.B.D. cibles
une API sous forme de DLL
Par lintermdiaire de loutil de configuration, on installe les drivers des S.G.B.D. qui sont
appels pilotes.
Ensuite on dfinit des sources de donnes.
Une source de donnes dfinit laccs une base de donnes sur un serveur de donnes.
Pour cela on choisit un pilote et en fonction de celui -ci on entre les caractristiques voulues.
4.3.1 connexion
Pour accder une base de donnes distante, lapplication doit se connecter. Il faut songer
que pour le SGBD cible, lopration de connexion est coteuse en ressource mmoire
(cration dun contexte, vrification des droits)
4.3.2 Requtes
Chaque requte sur les donnes est envoye au serveur, donc elle transite par le rseau. Par
consquent elle est coteuse, il faudra donc essayer den minimiser le nombre et la
frquence.
4.3.3 Transactions
Il faut toutefois tre conscient que le temps de rponse varie dun instant lautre, que lon
ne peut pas toujours amliorer significativement les choses, que lamlioration des
performances ne doit pas se faire au dtriment de la maintenabilit, quil suffit parfois de
changer la conception de linterface graphique pour que lutilisateur ait limpression que les
choses vont mieux, bref que la tche nest pas simple !
Pour cela, ds la conception on peut isoler les formulaires qui risquent a priori dtre
coteux en temps de rponse et faire les tests cits plus haut.
On pourra galement avant de faire un choix tester les performances respectives des outils
de dveloppement et du middleware sur un mme exemple.
En particulier, le choix dODBC qui est plus lent ne se justifie pas si lapplication accde un
seul serveur et quil nest pas prvu de la porter dans un autre environnement.
Lorsque lon a constat que le problme vient de la puissance du serveur, il faut encore
dterminer plus prcisment au niveau du serveur do vie nt ce problme.
Le problme peut provenir du systme dexploitation : trop de tches en cours par rapport
ce quil est capable de grer. La solution consiste en gnral soit agrandir lespace de
swapping (mmoire virtuelle) et/ou rajouter de la mmoire vive. Certains systmes
permettent de configurer la machine de manire ce quelle privilgie le multitche par
rapport ses autres activits.
Ce peut tre le SGBDR qui est en cause. Est-il configur au mieux ? La base de donnes
laquelle mon application accde est-elle optimise ? La rpartition des donnes sur disque
est-elle satisfaisante (disque morcel ou trop plein) ? Les ressources systmes ncessaires au
SGBDR sontelles disponibles (recommandations de lditeur du SGBDR) ? Ny a-t-il pas des
tches inutiles en cours ?
Se souvenir quune connexion dune application cliente au serveur peut, suivant les
systmes, consommer beaucoup de ressources au niveau du systme dexploitation.
Lavantage est que dans les deux ca s, le code SQL correspondant est dj compil.
Exemple1 :
On veut, dans une application, mettre jour le champ CA (chiffre daffaire) dans la table
client chaque fois quune commande est ajoute pour ce client.
Cela conduit :
requtes sur le rseau
pour chacune : analyse syntaxique, compilation, vrification des droits, excution
Cela conduit :
On peut donc penser que la meilleure solution est la 3me. Cependant il faut considrer que
dans ce cas, les oprations envisages ont pour but de maintenir la cohrence dans la base
de donnes.
16
En effet, il faut comprendre que la mise jour du CA doit tre galement effectue lors de la
suppression ou de la modification du montant dune commande.
Si le montant de la commande partir des lignes de commandes est calcul par un trigger,
loption 3 conduirait crire 3 procdures.
On aboutirait :
- 1 trigger sur insert, delete, update de lignes de commande. Il lance lupdate du montant de
la commande et du CA du client
Exemple2 :
On suppose quune entreprise souhaite faire une remise de 5% tous les clients dont les
commandes en cours ont un retard de livraison de plus de 2 jours.
Dans ce cas, on peut soit :
lancer une requte qui recherche les commandes ayant un retard de livraison et
calculer la remise et lancer la mise jour dans lapplication cliente
crire une procdure stocke pour faire ce travail
La meilleure solution sera alors la procdure.
Conclusion :
Il ny a pas a priori de bonne ou de mauvaise solution. Chaque problme pos doit tre
tudi avec prcision
La faon dont sont conus les formulaires et en particulier les contrles de saisie influe
galement sur le temps de rponse de lapplication.
Dans le 1er cas, la requte (SELECT * from CLIENT) est excute chaque cration de
commande avec une recherche sur cl primaire.
Dans le 2me cas, la requte (SELECT * from CLIENT) est excute une seule fois
louverture du formulaire (et chaque nouveau client) mais elle renvoit plus de donnes.
Dans le 2me cas, la requte (SELECT * from CLIENT, commande, lignes_cde,produit) est
excute une seule fois louverture du formulaire de saisie des commandes mais elle
renvoit plus de donnes que dans le 1er cas.
On prfrera la 2me solution car elle sollicite moins le rseau et le serveur, condition que
le poste client ne soit pas trop juste en mmoire.
Conclusion
On pourrait multiplier les exemples, lobjectif de ce chapitre est de comprendre que la tche
doptimisation dune application client/serveur est complexe car il y a beaucoup de
paramtres prendre en compte.