Transcript Formation
Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique
Cours BD/WEB - INT Evry 1
Programme du séminaire
Jour 1 : (salle E405) » objectifs du séminaire » rappels sur les SGBD relationnels » rappels sur Internet/web » principes des passerelles Jour 2 : (salle E405) » quelques solutions industrielles » démonstration/programmation de différentes solutions 2 Cours BD/WEB - INT Evry
Intervenants
Bruno Defude (jour 1) : enseignant/chercheur au dept INF depuis 1992, docteur informatique INPGrenoble, enseigne les BD depuis 1986 Claire Carpentier (Jour 2) : enseignant/chercheur au dept INF depuis 1998, docteur informatique Univ. Evry, enseigne les BD depuis 1995 3 Cours BD/WEB - INT Evry
Objectifs du cours
Présenter les problèmes de couplage entre le Web et les SGBD classifier les différentes approches utilisées pour le couplage présenter différentes solutions industrielles Cours BD/WEB - INT Evry 4
Plan du cours
Les SGBD relationnels Le système World Wide Web Les interfaces entre le Web et les BD » principes » solutions Microsoft (IDC, ASP) » L'approche Java (servlet, JSP) Evolution du Web : XML 5 Cours BD/WEB - INT Evry
Cours BD/WEB - INT Evry 6
Bases de données relationnelles
Cours BD/WEB - INT Evry 7
Les SGBD relationnels
Fonctionnalités Modèles de données langages de requêtes » SQL transactions et contrôle de concurrence Cours BD/WEB - INT Evry 8
Fonctionnalités d'un SGBD
permettre de représenter des informations (modèle de données) permettre un accès facile aux informations stockées via des langages de requêtes déclaratifs Stocker de l'information de manière fiable, efficace, évolutive et répartie (transactions, contrôle de concurrence, middleware) offrir différentes interfaces de programmation (langage de requêtes,
Les modèles pour les bases de données
Modèle orienté conception : Entité/Association Modèle orienté implantation : modèle relationnel Cours BD/WEB - INT Evry 10
Modèle Entité/Association [Chen 77]
Exemple de modèle Eleve Code_elev Nom_Elev 1,1 Appartient Salle 1,n Classe 1,n 1,n Notation Note 0,n Matiere 0,n Prof Code_prof Nomprof Code_categ Nom_Categ 1,n Code_Matiere 1,n Fait cours No_Classe 11 Cours BD/WEB - INT Evry
Modèle Entité/Association
Critique du modèle Entité/Association
Avantages
Inconvénients
Sémantique riche un modèle de Uniquement Extension aux de données concepts objets (héritage, ...) de lg de manipulation associé description Pas 12 Pas de SGBD E/A
Modèle relationnel
[CODD 70] « A Relational Model for Large Shared Data Banks » Exemple » Employé(NoSs, Nom, Adresse, Age, salaire) » Projet(NoProjet , Libellé, ChefProjet) » Travaille_sur(NoSs, NoProjet) 13 Cours BD/WEB - INT Evry
Exemples de relations
Elève Num 1 2 3 Nom Bélaïd Millot Meunier Adresse Maisel CROUS Maisel Age 20 20 21 Inscrit NumElève CodeUV Note 2 1 2 3 BD BD IO IO 10 20 17 18 14 Cours BD/WEB - INT Evry
Modèle relationnel (suite)
Schéma BD » Structure de relation BD » Ensemble d’enregistrements reliés par des valeurs (clés étrangères) Langage de manipulation » Ensembliste » Déclaratif » Standard international [ SQL 8, 89] Cours BD/WEB - INT Evry 15
Modèle relationnel (suite)
Prototypes de recherche » System/R chez IBM (197) » Ingres à Berkeley (197) Systèmes commerciaux » SQL/DS et DB2 d’IBM (1982) » Oracle (1983) » Ingres (1983) » Informix (1981) » Sybase (1984) 16 Cours BD/WEB - INT Evry
Modèle relationnel (suite)
Avantages » Indépendance logique/physique » Langage de manipulation simple » Basé sur une théorie mathématique solide » Standard Cours BD/WEB - INT Evry 17
Langages associés au modèle relationnel
Langages de Définition de Données (LDD) : » Définition /mise à jour des schémas des relations Langages de manipulation de données (LMD) : » » Interrogation : recherche de données Mises à jour : insertion, suppression, modification SQL 18 Cours BD/WEB - INT Evry
Exemples de requêtes en algèbre relationnelle
Base de données exemple : les vins Vins(num, cru, annee, degre) Recoltes(nvin, nprod, quantite) Producteurs(num, nom, prenom, region) Buveurs(num, nom, prenom, ville) Commandes(ncde, date, nb, nvin, qte) Livraisons(ncde, no_ordre, qteLivree) V R P B C L 19 Cours BD/WEB - INT Evry
Modèle E/A de la BD des vins
Vins num cru degré annee 0,n recoltes quantite 0,n Producteurs num nom prenom region 0,n concerne Buveurs num nom prenom ville 0,n Passer 1,1 1,1 Commandes ncde qté date 0,n Donner_lieu (1,1) Livraisons No_ordre qteLivrée date Cours BD/WEB - INT Evry 20
Introduction
Présentation de SQL
Fonctionnalités : » » définition et manipulation de données au format relationnel contrôle des données Le langage de manipulation » » non procédural emprunté à l'algèbre relationnelle et au calcul relationnel de tuples Puissance du langage de manipulation Algèbre Relationnelle + Fonctions Agrégats + Tri
Une requête SQL (sans fonctions et tri) Suite d'opérations de l'algèbre relationnelle
Cours BD/WEB - INT Evry 21
Introduction
Présentation de SQL (2)
Origine » » langage SEQUEL du prototype de SGBD relationnel SYSTEM/R (74-76) laboratoire de recherche IBM à San José Normalisation ISO » » » norme SQL1 (1986, 1989) norme SQL2 (1992) nouvelle norme en préparation SQL3 Langage de requêtes des SGBD relationnels » » » » ORACLE (Oracle Corporation - 1977) INGRES (Ingres Technology - 1980) DB2 (IBM - 1984) INFORMIX (Informix Inc - 1981) » SYBASE (Sybase Inc - 1984) » MySQL (1995) Cours BD/WEB - INT Evry 22
Définition des données
Schéma d’une relation
Création CREATE TABLE Vins ( num Integer, cru Char(20), annee Integer) Mise à jour – Ajout d'un attribut (norme SQL2 !) ALTER TABLE Vins ADD COLUMN degre Integer Suppression (norme SQL2 !) DROP TABLE Vins Cours BD/WEB - INT Evry 23
Définition des données
Contraintes d’intégrité
règle qui définit la cohérence d'une donnée ou d'un ensemble de données de la BD » » » » » » Contraintes définies en SQL non nullité des valeurs d'un attribut unicité de la valeur d'un attribut ou d'un groupe d'attributs valeur par défaut pour un attribut contrainte de domaine clé primaire (un attribut ou un groupe) intégrité référentielle "minimale" CREATE TABLE Vins ( num cru annee integer PRIMARY KEY, char (40) NOT NULL, integer CONSTRAINT Cannee CHECK (annee between 1970 and 2010), degre number(4,2) CONSTRAINT Cdegre CHECK (degre between 9.0 and 15.0)) Cours BD/WEB - INT Evry 24
Syntaxe générale de recherche
Syntaxe Comment remplir les clauses ?
SELECT
FROM
[WHERE
Cours BD/WEB - INT Evry 25
Projection
"Donner tous les vins"
SELECT * FROM Vins
"Donner la liste de tous les crus, avec élimination des doublons"
SELECT DISTINCT cru FROM Vins 26 Cours BD/WEB - INT Evry
Restriction et tri
"Donner les vins dont le cru commence par p ou P"
SELECT * FROM Vins WHERE cru LIKE ‘p%’ OR cru LIKE ‘P%’
"Donner les crus des vins de millésime 1995 et de degré 12, triés par ordre croissant"
SELECT cru FROM Vins WHERE annee=1995 AND degre = 12 ORDER BY cru Cours BD/WEB - INT Evry 27
Recherche des données
Jointure
"Donner les noms des producteurs de Pommard"
Produit cartésien SELECT nom FROM Vins V, Recoltes R, Producteurs P WHERE V.num = R.nvin
AND R.nprod=P.num
AND cru = ‘Pommard’ Conditions de jointures Nom d’attribut non ambigü Cours BD/WEB - INT Evry 28
Exemples avec fonctions
"Donner la moyenne des degrés de tous les vins" SELECT Avg(degre) FROM Vins "Donner la quantité totale commandée par le buveur Bac" SELECT Sum (qte) FROM Commandes, Buveurs WHERE Buveurs.nom= 'Bac' AND Buveurs.num=Commandes.nb Cours BD/WEB - INT Evry 29
Exemples de partitionnement
" Donner, pour chaque cru, la moyenne des degrés des vins de ce cru …"
SELECT cru, AVG(degre) FROM Vins GROUP BY cru
" … avec un tri par degré décroissant"
SELECT cru, AVG(degre) FROM Vins GROUP BY cru ORDER BY 2 DESC
" … uniquement si ce cru concerne plus de 3 vins"
SELECT cru, AVG(degre) FROM Vins GROUP BY cru HAVING COUNT(*)>=3 ORDER BY 2 DESC 30 Cours BD/WEB - INT Evry
Calcul de la partition
cru Vins Pommard initiale Trier la relation selon les attributs de groupement Créer une sous-relation pour chaque paquet ayant même valeur sur l'attribut sur l'ensemble des attributs de groupement, ici « cru » Appliquer la clause SELECT sur chaque partition (dans notre exemple la valeur de cru et la moyenne des degrés sur la partition Unifier les résultats Appliquer la restriction du HAVING et et Vins Vins Tavel Pommard Tavel Tavel cru Pommard Pommard Tavel Tavel Tavel cru Pommard Tavel 31 Cours BD/WEB - INT Evry degr 11 13 12 13 degr 13 11 12 13 degr 12
Synthèse
3 4 6 1 2 5 SELECT FROM WHERE GROUP BY HAVING ORDER BY
Synthèse (2)
Condition de recherche : » WHERE (sélection de tuples), HAVING (sélection de groupes) » » Compositions de conditions élémentaires (AND, OR, NOT) Évaluée à Vrai ou 33 Condition élémentaire : » » Évaluée à Vrai ou Faux Prédicat : – Comparaison : =, <, <=, >, >=, <> Attribut/valeur Attribut/attribut – Intervalle :BETWEEN – Chaîne : LIKE – Nullité : IS NULL – Appartenance : IN – Quantification : EXISTS, ANY, ALL
Exemple complet
"Donnez par ordre croissant le nom et la somme des quantités commandées par des buveurs bordelais, uniquement si chaque commande est d'une quantité strictement supérieure à 20 litres."
SELECT B.nom, Sum(C.qte) FROM Buveurs B, Commandes C WHERE B.num=C.nb AND B.ville = 'Bordeaux' GROUP BY B.num, B.nom HAVING MIN(C.qte) > 20 ORDER BY B.nom
Cours BD/WEB - INT Evry 34
Insertion Suppression Modification
Mise à jour
Cours BD/WEB - INT Evry 35
Insertion
Insertion d’un seul tuple INSERT INTO Vins VALUES (100, 'Jurançon', 1979, 12) INSERT INTO Vins (num, cru) VALUES (200, 'Gamay') Insertion d’un ensemble de tuples CREATE TABLE BORDEAUX(num Integer, annee Integer, degre number(4,2)) INSERT INTO BORDEAUX SELECT num, annee, degre FROM Vins WHERE cru = 'Bordeaux' CREATE TABLE BORDEAUX AS SELECT num, annee, degre FROM Vins WHERE cru = 'Bordeaux' Cours BD/WEB - INT Evry 36
Suppression
"Supprimer tous les tuples de Vins"
DELETE FROM Vins ou TRUNCATE TABLE Vins
"Supprimer le vin de numéro 150"
DELETE FROM Vins WHERE num = 150
"Supprimer les vins de degré <9 ou >12"
DELETE FROM Vins WHERE degre < 9 OR degre > 12
"Supprimer les commandes passées par Belaïd"
DELETE FROM Commandes WHERE nb IN ( SELECT num FROM Buveurs WHERE nom= ‘Belaïd') Cours BD/WEB - INT Evry 37
Modification
« Le producteur 150 habite dans le sud ouest » UPDATE Producteurs SET region = ‘Sud Ouest' WHERE num = 150 « Les degrés des Gamays augmentent de 10 % » UPDATE Vins SET degre = degre * 1.1
WHERE cru = 'Gamay' « Le buveur ‘Bac’ augmente ses commandes de 10 unités » UPDATE Commandes SET qte = qte + 10 WHERE nb IN ( SELECT num Cours BD/WEB - INT Evry FROM Buveurs WHERE nom='Bac') 38
Vues relationnelles
Objectifs : » Indépendance logique » Adaptation aux applications » Intégration des applications existantes » Dynamique du schéma de la base » Confidentialité et sécurité » Décentralisation de l’administration d’une BD » Hétérogénéité des modèles Cours BD/WEB - INT Evry 39
Vues relationnelles
Relation virtuelle » Ensemble de tuples n physiquement ’existe pas » Calculable à l ’exécution Définie par une requête SQL Utilisable comme une relation Utilisable pour définir une autre vue 40 Cours BD/WEB - INT Evry
Exemples
Create view crus (nom) as select distinct cru from vins; Create view buveurs_beaujolais_paris (num, nom, qté_cdée) as select B. nb, B.nom, sum(qté) from buveurs B, cdes C, Vins V where B. nb = C.nb and C.nv=V.nv
and V.cru = ‘ Beaujolais’ and B.ville = ‘Paris’ group by B. nb, B.nom; 41 Cours BD/WEB - INT Evry
Manipulation de la BD au travers des vues
Consultation » Toujours possible » Nom de la vue dans la clause from SELECT * FROM vins_beaujolais; Mises à jour : » Rarement possible 42 Cours BD/WEB - INT Evry
Transactions
Ensemble logique d'opérations élémentaires sur une BD (unité de traitements séquentiels).
Une transaction fait passer la BD d'un état cohérent à un autre état cohérent Cours BD/WEB - INT Evry 43
Exemple de transaction
T1: virement d'une somme N.
T2: dépôt d'une somme M.
Transaction T1 DEBUT A := Lire(X) A := A - N Transaction T2 B := Lire(X) B := B + M X := Ecrire(B) X := Ecrire(A) A := Lire(Y) A := A + N Y := Ecrire (B) FIN FIN Cours BD/WEB - INT Evry 44
Propriétés d'une transaction (assurées par le SGBD)
A C I D Atomicity Consistency Isolation Durability Cours BD/WEB - INT Evry 45
Atomicity
Une transaction est un ensemble de traitement qui doit être effectué dans sa totalité ou pas du tout (principe du tout ou rien).
Mécanisme de validation (commit), système de reprise après panne.
46 Cours BD/WEB - INT Evry
Consistency
Une transaction doit faire passer la BD d'un état cohérent à un autre état cohérent (respect des CI).
Développeurs d'application.
Cours BD/WEB - INT Evry 47
Isolation
Une transaction ne doit pas laisser voir ses modifications à une autre transaction tant qu'elle n'est pas validée (COMMIT).
Contrôle de concurrence, sérialisation, verrouillage 48 Cours BD/WEB - INT Evry
Durability
Les modifications réalisées par une transaction ne doivent pas être perdues une fois celle ci validée.
La fin de transaction est un point de non retour, mécanisme de reprise.
Cours BD/WEB - INT Evry 49
Cours BD/WEB - INT Evry 50
Le WWW
Cours BD/WEB - INT Evry 51
Le système WWW
architecture de base les standards du Web le stockage des documents la protection des documents extensibilité du Web synthèse 52 Cours BD/WEB - INT Evry
Vocabulaire Système
programme exécutable processus "classique" processus "multi-thread" Cours BD/WEB - INT Evry 53
Vocabulaire Système Programme exécutable
un programme exécutable est un objet inerte qui est le résultat d’une compilation suivie d’une édition de liens Cours BD/WEB - INT Evry 54
Vocabulaire Système Processus "classique"
objet dynamique correspondant à l’exécution d’un programme exécutable un processus comporte: » le code du programme » les données du programme » le contexte d'exécution chaque processus possède son propre espace d’adressage 55 Cours BD/WEB - INT Evry
Vocabulaire Système Processus "multi-thread"
un processus définit un ensemble de ressources système un thread est une activité correspondant à un flot d’exécution dans le contexte d’un processus plusieurs thread peuvent s'exécuter en parallèle dans le contexte d'un processus, en partageant ses ressources 56 Cours BD/WEB - INT Evry
Vocabulaire Système Critique des thread
avantages » limite le nombre de processus » optimise l'utilisation des ressources » autorise le parallélisme inconvénients » synchronisation des différents thread » risque de "corruption" d'un thread par un autre thread 57 Cours BD/WEB - INT Evry
Utilisation des threads
Implantation efficace d requêtes ’un serveur de un thread pour servir une requête et non pas un processus pour éviter le coût de lancement d ’un thread/processus on peut gérer un pool 58 Cours BD/WEB - INT Evry
WWW - Architecture de base
HTTP Client W3 Serveur W3 page HTML affichée Cours BD/WEB - INT Evry chaque page possède un URL pages HTML système de fichiers 59
WWW - Le client W3
logiciel de consultation hypertexte » interprète et affiche le texte HTML » affiche le texte plat sans interprétation » visualise les images fixes gif, jpeg et x-bitmap contient des plug-in ou des visualiseurs externes spécialisés pour divers formats » son, image animée, Postcript, ..
60 Cours BD/WEB - INT Evry
WWW - Le serveur W3
fonctions assurées » gère les connexions des clients W3 » assure la protection des documents statiques (HTML, images, ..) » vérifie la validité des requêtes et les droits des clients » exécute les requêtes des clients – renvoyer un document statique – exécuter un programme externe 61 Cours BD/WEB - INT Evry
WWW - Le protocole HTTP
HTTP est un protocole simple (GET, EXEC, HEAD, ...) HTTP est un protocole sans session » la nouvelle version HTTP 1.1 permet de maintenir une connexion persistante HTTP est un protocole peu sécurisé » évolution avec S-HTTP (Secure) du NCSA ou SSL (Secure Socket Layer) de Netscape 62 Cours BD/WEB - INT Evry
WWW - Stockage des documents
système de fichiers de la machine serveur arborescence de fichiers » par défaut, à partir du serveur W3 avec un répertoire racine fixé par l'administrateur » à partir d’un compte utilisateur avec le répertoire racine /public_html un fichier de l’espace de stockage W3 doit être en lecture pour tous 63 Cours BD/WEB - INT Evry
WWW - Protection documents
protections standard du système d’exploitation protections propres au système Web pour accéder un document » accès avec un nom utilisateur et un mot de passe » accès à partir d’un domaine IP » accès depuis une machine particulière 64 Cours BD/WEB - INT Evry
WWW - Architecture étendue
client W3 HTTP serveur W3 CGI script CGI protocole dédié appli externe form W3 page W3 système de fichiers
Pages HTML statiques
BD ou système de fichiers
Pages HTML dynamiques
Cours BD/WEB - INT Evry 65
WWW - Les formulaires HTML
un formulaire autorise l’interactivité entre le client et le serveur un formulaire contient: » des zones de saisie avec des boutons, des listes de choix, ..
» un attribut action qui définit l'URL d'un programme exécutable sur le serveur » un attribut method qui définit le mode de transfert des données vers le programme 66 Cours BD/WEB - INT Evry
Exemple de formulaire
Cours BD/WEB - INT Evry 67Programme CGI
Interface CGI définit le moyen de passer des informations du client vers le prog. CGI et retour un prog. CGI reçoit un seul argument de type chaine de caractères cette chaine se décompose en couples attributs-valeurs deux modes de transmission GET et POST Cours BD/WEB - INT Evry 68
Programmation CGI (suite)
Programme CGI doit décoder la chaine pour extraire les paramètres il renvoie son résultat sur sa sortie standard en ayant préalablement déclaré le type (content-type: text/html par exemple) langages utilisés : Perl souvent, mais on peut choisir n'importe lequel 69 Cours BD/WEB - INT Evry
Exemple de CGI en Perl
#!/usr/bin/perl -w use CGI qw (:standard); $ior = param('IOR'); print header; print "
\n"; print "IOR décodé
"; print "
\n"; open(FILE, "-|") || exec "/inf/QOS_CORBA/Olivier/bin/iordump", "-f", $ior; while ($LIG=
\n"; } print "
\n"; close(FILE); print "\n"; print "