SGBDs Parallèles et Distribués : Concepts clés
SGBDs Parallèles et Distribués : Concepts clés
N. Le Thanh
-1-
I- INTRODUCTION
- Notion de SGBDs parallèles
- Problèmes à étudier dans les SGBDs parallèles
- Notion de SGBDs distribués
- Problèmes à étudier dans les SGBDs distribués
- Notion de SGBDs hybrides
III- ORAWEB: Une approche pratique de programmation distribuée avec les SGBDs
- Environnement de web
- Programmation client/serveur avec le SGBD ORACLE
- Prinicipes et architechture de ORAWEB
- Extension de PLSQL pour web
- Perspectives : programmation dynamique avec les SGBDs
-2-
Page 1
I- INTRODUCTION
-3-
I- INTRODUCTION
SGBD parallèle
Réseau d'interconnexion
Mémoires
vives
Mémoires
persistantes
Procésseurs
-4-
Page 2
I- INTRODUCTION
jointure requêtes
déductives
ordonnacement
-5-
I- INTRODUCTION
SGBD Distribué
SGBD local SGBD local
Processeur Processeur
Mémoire Mémoire
Mémoire Mémoire
persistante persistante
Processeur Processeur
Mémoire Mémoire
Mémoire Mémoire
persistante persistante
Réseau
-6-
Page 3
I- INTRODUCTION
Architecture Algorithmique
Interopérabilité
Echange de traitement
-7-
I- INTRODUCTION
SGBD Hybride
SGBD // local SGBD // local
Processeur Processeur
Mémoire Mémoire
Mémoire Mémoire
persistante persistante
Processeur Processeur
Mémoire Mémoire
Mémoire Mémoire
persistante Réseau persistante
-8-
Page 4
II- SGBDs PARALLELES
-9-
- 10 -
Page 5
II- SGBDs PARALLELES
* Inconvenients
Disque - taille limitée (10 à 20 processeurs)
Mémoire - accéssibilité aux données limitée
- prix est un peu élévé
- 11 -
- 12 -
Page 6
II- SGBDs PARALLELES
- 13 -
Performance
nombre de processeurs
10 100 1000
- 14 -
Page 7
II- SGBDs PARALLELES
- Requêtes déductives
- grain moyen
- déduction ou contraintes d'intégrité
- banc d'essai TCP-C
- Requêtes navigationnelles
- grain fin
- recherche et mise à jour courte 5CAO / FAO)
- banc d'essai 001 et 007
- 15 -
- Transaction :
Une transaction est un ensemble de tâches à exécuter qui respecte les propriété
suivantes :
- Atomicité : soit toites les tâche sont bien exécutées soit rien n'est
exécutée
- Cohérence : l'exécution d'une transaction respecte toutes les contraintes
d'intégrité
- Isolation : les résultats intermédiaires d'un transaction ne sont pas
visibles pour les autres transactions
- Durabilité : Les résultats d'une transaction validée est persistant
- Transaction parallèle :
Une transaction parallèle est une transaction dont les tâches sont exécutées en
parallèle
- 16 -
Page 8
II- SGBDs PARALLELES
Analyseur de requêtes
Optimiseur
Dictionnaire de données
- Optimisation logique
- Optimisation physique
- Parallélisation
- Ordonancement
Evaluateur de coûts
Générateur de code
Exécuteur
- Placement
- Exécuteion décentralisée
Moniteur transactionnel
- 17 -
- les volumes de données traitées par chaque tâche et la taille de leur résultat
- 18 -
Page 9
II- SGBDs PARALLELES
b) Les synchronisations :
PIPE
SIMUL SEQ
PAR
Parallélisable Séquentielisable
SIMUL : les tâches coopératives
- 19 -
- 20 -
Page 10
II- SGBDs PARALLELES
- 21 -
- 22 -
Page 11
II- SGBDs PARALLELES
téco
²
topt
- 23 -
e) Types de communication ::
a - b- c a
- 24 -
Page 12
II- SGBDs PARALLELES
Jointure par
produit cartésien
Requêtes
récursives Placement
- 25 -
3- Parallélisation intra-tâche
3.1- Algorithmes de jointure
a) Jointure par produit cartésien
R³S
PIPE PIPE
Union Union
END END
- 26 -
Page 13
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.1- Algorithmes de jointure
b) Jointure partri-fusion
R³S
SIMUL PIPE
Fusion Union
END END
- 27 -
3- Parallélisation intra-tâche
3.1- Algorithmes de jointure
c) Jointure par hachage simple
R³S
START START
Distribution R Distribution S
même clé même clé
Scan R
R1³S1 R2³S2 Ri³Si Rn³Sn
Build PIPE
SEQ
Union
END
END
- 28 -
Page 14
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.1- Algorithmes de jointure
c) Jointure par Grace hash-join
R³S Distribution R Distribution S
en n paquets en n paquets
START
R1 R1 P1 sur m disques sur m disques
même clé même clé
PIPE
Partition des paquets R et S par la même
fonction de hachage sur l'attribut de
jointure en n paquets, dont chacun sur m
disques Union
- 29 -
3- Parallélisation intra-tâche
3.1- Algorithmes de jointure
c) Jointure par Hachage Hybide
R³S Distribution R Distribution S
en n paquets en n paquets
START
R1 R1 P1 sur m disques sur m disques
même clé même clé
END
Grace hash join pour les paquets restant
- 30 -
Page 15
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
a) Notions
- Règle de déduction : formule logique de la forme : P(X0) <-- Q1(X1), Q2(X2),...,Qn(Xn)
- P est la tête de règle- Qi est un littéral du corps de la règle
- Xi est un vecteur de variables - , est le symbole de conjonction logique
- Un prédicat P dépend directement de Q s'il existe une règle r où P apparaît dans l'entête
de r et Q dans le corps de r
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
a) Notions
- Un programme P est un ensemble de règles
- La sortie O(I,P) d'un programme P respectant I est un ensemble fini de faits (tuples)
R x1 R+
x1, x2 x1, x2
x2, x3 x2 x2, x3
x2,x4 x2,x4
x1,x3
x3 x4 x1,x4
- 32 -
Page 16
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
a) Notions
- 33 -
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des programmes
Algorithme de Fermeture Transitive Itérative (FTI)
- 34 -
Page 17
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des programmes
Algorithme de Fermeture Transitive de relation Fermées Transitivement (FTRFT)
(Valduriez 88)
R+ = (R1+ ∪ R2+)+
- 35 -
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des programmes
Algorithme de Fermeture Transitive de relation Fermées Transitivement (FTRFT)
(Valduriez 88)
- 36 -
Page 18
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des programmes
Algorithme de Fermeture Transitive avec les programmes parallèles (FTPP)
(Valduriez 88)
FTRFT(R1+,R2+,T1) FTRFT(R3+,R4+,T2)
FTRFT(T1,T2,T)
- 37 -
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des programmes
Algorithme de Fermeture Transitive avec les programmes parallèles (FTPP)
(Valduriez 88)
- 38 -
Page 19
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des des opération relationnelles
Algorithme de Fermeture Transitive avec les opérations parallèles (FTOP)
(Valduriez 88)
- Principe :
- dans l'algorithme FTI, la fermeture transitive est caculer par l'ittération de
2 opérations relationnelles : jointure et union.
- On peut donc envisager de parallélisation de ces deux opérations en
partitionant la relation opérande en n sous-ensembles disjoints.
- L'algorithme s'exécute en deux phases :
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
b) Parallélisation des des opération relationnelles
Algorithme de Fermeture Transitive avec les opérations parallèles (FTOP)
procédure FTOP (R:opérande, T:résultat)
début
distribuer (R, h(Y));
pour chaque noeud i (i:1..d) faire
début
Ti := Ri := recevoir;
Di := Ri;
fin pour d
tanque que ∩ Di ° ∅
début i=1
distribuer (D,h(X));
pour chaque noeud i (i=1..d) faire
début
Di := recevour;
Di := Ri ⊗ Di;
Ti := Ti ∪ Di;
fin pour
fin tant que
fin
- 40 -
Page 20
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
c) Fermeture Transitive s'appuyant sur la matrice d'adjacence
(Wharshall - Agrawal et Jagadish 88)
- Principe :
- un graphe comportant n noeud est représenté par une matrices binaire
d'adjacence n*n: s'il existe un arc entre le noeud i et le noeud j alors aij=1
sinon aij=0.
- L'algorithme conste à traiter tous les éléments de la matrice ligne par ligne de
gauche à droite et de haut en bas.
- Chaque élément aij est traité de la manière suivante :
- si aij = 1 alors tous les successeurs de j sont marqués sucesseurs
de i
- Ce traitement doit respecter les deux contraintes suivantes :
- C1 : Dans une ligne i, le traitement aik précède le traitement de aij
si et seulement si k < j
-C 2 : Pour tous les éléments aij dans la ligne i, le traitement de
l'élement ajk précède le traitement de aij si et seulement si k < j
- 41 -
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
c) Fermeture Transitive s'appuyant sur la matrice d'adjacence
(Wharshall - Agrawal et Jagadish 88)
- Principe de parallélisation:
- 42 -
Page 21
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
c) Fermeture Transitive s'appuyant sur la matrice d'adjacence
(Wharshall - Agrawal et Jagadish 88)
- Entre temps, quand procésseur 1 termine de traiter la région I1, il passe à traiter la région
II1 III1
- Ainsi les élément de II2 sont calculés en parallèle avec ceux de I1
- Après le traitement des éléments de la région III2, le processeur 2 traite les lignes de I2
puis II2
- 43 -
3- Parallélisation intra-tâche
3.2- Parralélisation des requêtes récursives
c) Fermeture Transitive s'appuyant sur la matrice d'adjacence (Agrawal et Jagadish 88)
procédure FMA (Algorithme à exercuter sur un processeur p)
début (avec m partitions pour m processeurs)
pour q:=1 à m faire
si p=q alors /*partition pour le processeur p*/
début
pour i:=bp à ep faire /*on traite les éléments au dessous de la diagonale*/
début
pour j:=bp à i-1faire traiter(aij);
copier (sucesseur(i), copie(i));
montrer(tous, copie(i));
fin
pour i:=bp à ep faire /*on traite les éléments au dessus de la diagonale*/
pour j:=i+1 à ep faire traiter (aij);
fin
sinon pour j:=bq à eq faire
début
récupérer(copie(j));
pour i:=bp à ep faire traiter(aij);
fin
fin
- 44 -
Page 22
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
a) Forme canonique des règles récursives
Ri <-- Ci
Q<-- R1
où
- Aij et Ci (1ŠiŠm, 1ŠjŠn) sont des ensembles (qui peuvent être vides) de conjonctions
de prédicats de base
- Rij est un prédicat dans le corps d'une règle. Il corespond à un Rk prise à partir de
l'ensemble des prédicats récursifs
- 45 -
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
b)Mise en forme normale et Ordonancement des prédicats
- Etape 1 : Simplifier la requête par remplacer les prédicats non récursifs et déduits par
sa définition et par le regroupement tous les prédicats de base en un seul
4. Si p1 et p2 sont deux prédicats de base dans Aij ou Ci, p1 est évalué avant
p2 (p1 est à la gauche de p2) si l'évaluation de p1 produit des variables liées
pour p2
- 46 -
Page 23
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
c) Evaluation des requêtes en forme normale par pipeline
Evaluateur
- Evaluateur :
exécution un ensemble d'opérations relationnelles sur l'ensemble des relations de base
qu'il possède et envoi le résutat E(O) à l'Unifieur
- Unifieur :
Unification des résultats reçus des éluateurs et génération du résutat final de la requête
- 47 -
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
c) Evaluation des requêtes en forme normale par pipeline
Evaluateur :
- Principe de calcul :
1. La conjontion de deux prédicats est calculée par la jointure des relations de
base correspondantes
- 48 -
Page 24
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
c) Evaluation des requêtes en forme normale par pipeline
Unifieur :
Chaque Mi est un entier non négatif. Mi=j signifie que la valeur dans le ième
argument d'une relation Instance doit être liées avec jième argument de la
relation R
- 49 -
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
c) Evaluation des requêtes en forme normale par pipeline
Unifieur : Principe de calcul
- Etape 2 : Calcul des conjonctions
- Initialisation :
New_Instance := {constantes données
Join(Temp_Instance, Old_Answer);
dans la requête};
Join(Old_Instance, Temp_Answer);
New_Answer := ;
Join(Temps_Instance, Temp_Answer);
Old_Instance := ;
Old_Answer := ; Résultat est envoyé à A12.
Page 25
II- SGBDs PARALLELES
3- Parallélisation intra-tâche
3.3- Evaluation en pipeline des requêtes récursives (Bell 91)
c) Evaluation des requêtes en forme normale par pipeline
Requêtes déductives non-linéaires
Soit une requête récursive non- linéaire (sous forme canonique stable)
A12 R A12
A11 R
C1 C1
- 51 -
4- Parallélisation inter-tâche
4.1- Objectifs et principes
Objectifs :
STRATÉGIES
- 52 -
Page 26
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
1) Modélisation de l'espace de recherche
L'espace de recherche est modélisé par une arbre de jointure
Jointure Jointure
Jointure
R4 Jointure Jointure
Jointure R1 Jointure
R3
R1 R2 R3 R4
Jointure R2 Jointure
Arbre bushy
- 53 -
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
Résultat
2) Algorithme jointure par hachage (DEW84)
Table de Probe
hachage
Résultat
SEQ PIPE
jointure
Build
Scan
R1 R2
PIPE R2
R1
- 54 -
Page 27
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
3) Stratégie basé sur jointure par hachage (Schneider 90) Résultat
(Arbre linéaire gauche)
Bi : Buildi Bn Pn
Résultat Pi : Probei
Si : Scani
jointure Rn
Sn
Rn-1 B2 P2
jointure
S3
B1 P1
jointure R3
S1 S2
R1 R2
- 55 -
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
3) Stratégie basé sur jointure par hachage (Schneider 90)
(Arbre linéaire gauche)
Seq
End_Seq
- 56 -
Page 28
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
3) Stratégie basé sur jointure par hachage (Schneider 90)
(Arbre linéaire droite) Résultat
Résultat
Bn Pn
jointure
Sn+1
Bn-1 Pn-1
Rn jointure
Sn
B2 P2
Rn-1
jointure
S3
R3 jointure B1 P1
R1 R2 S2 S1
- 57 -
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
3) Stratégie basé sur jointure par hachage (Schneider 90)
(Arbre linéaire droite)
Seq
Par
Pipe Scan2 - Build1 End_Pipe ;
End_Par
End_Seq
- 58 -
Page 29
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
3) Stratégie basé sur jointure par hachage (Schneider 90)
(Arbre linéaire droite : optmisation de mémoire)
Static right-deep scheduling
Seq
Par
Pipe Scan2 - Build1 End_Pipe ;
Pipe Scan3 - Build2 End_Pipe;
End_Par
Pipe Scan1 - Probe1 - Probe2 End_Pipe;
Par
Pipe Scan4 - Build3 End_Pipe ;
Pipe Scan5 - Build4 End_Pipe;
End_Par
Pipe Probe3 - Probe4 End_Pipe;
End_Seq
- 59 -
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
4) Stratégie basé sur jointure par Tri-fusion (Schneider 90)
(Décomposition de la jointure par tri-fusion) Résultat
Fusion
Résultat
SEQ
jointure
Tri Tri
R1 R2
PIPE PIPE
Scan Scan
R1 R2
- 60 -
Page 30
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
4) Stratégie basé sur jointure par Tri-fusion (Schneider 90)
(Arbre linéaire gauche ou droite)
Fn Fn
S1 S2 S2 S1
- 61 -
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
4) Stratégie basé sur jointure par Tri-fusion (Schneider 90)
(Arbre linéaire gauche )
Seq
Par
Pipe Scan1 - Tri11 End_Pipe ;
Pipe Scan2 - Tri21 End_Pipe;
End_Par
Par
Pipe Fusion1 - Tri12 End_Pipe ;
Pipe Scan3 - Tri22 End_Pipe;
End_Par
Par
Pipe Fusionn-1 - Tri1n End_Pipe ;
Pipe Scann+1 - Tri2n End_Pipe;
End_Par
Fusionn;
End_Seq
- 62 -
Page 31
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
4) Stratégie basé sur jointure par Tri-fusion (Schneider 90)
(Arbre Bushy )
F7
T17 T27
F5 F6
F1 F1 F3 F4
S1 S2 S3 S4 S5 S6 S7 S8
- 63 -
4- Parallélisation inter-tâche
4.2- Stratégies déterministes
4) Stratégie basé sur jointure par Tri-fusion (Schneider 90)
(Arbre Bushy)
Seq
Par Par
Pipe Scan1 - Tri11 End_Pipe ; Pipe Fusion1 - Tri15 End_Pipe ;
Pipe Scan2 - Tri21 End_Pipe; Pipe Fusion2 - Tri25 End_Pipe;
Pipe Scan3 - Tri12 End_Pipe; Pipe Fusion3 - Tri16 End_Pipe ;
Pipe Scan4 - Tri22 End_Pipe; Pipe Fusion4 - Tri26 End_Pipe;
Pipe Scan5 - Tri13 End_Pipe; End_Par;
Pipe Scan6 - Tri23 End_Pipe;
Pipe Scan7 - Tri14 End_Pipe; Par
Pipe Scan8 - Tri24 End_Pipe; Pipe Fusion5 - Tri17 End_Pipe ;
End_Par; Pipe Fusion6 - Tri27 End_Pipe;
End_Par;
Fusion8;
End_Seq
- 64 -
Page 32
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.3- Stratégies indéterministes
1) Ordonnancement - un problème NP-Complexe
• Rappels :
- Un problème P0 appartient à NP s'il est accepté par une machine Turing non
déterminste en un temps polynomial
- Voyage de commerce
- Circuit hamiltonien
- 65 -
4- Parallélisation inter-tâche
4.3- Stratégies indéterministes
1) Ordonnancement - un problème NP-Complexe
Conséquence :
Solution :
- 66 -
Page 33
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.3- Stratégies indéterministes
2) Classification des méthodes
- Exemple : Trouver toutes les solutions pour placerr n tâches indépendantes sur 2
processeurs
- Avec un processeur Alpha de 300 Mips et supposons qu'il peut évaluer 100
millions solutions différentes par seconde
- Or 259 = 5,76 x 1017. Il faut donc près 2 siècles pour évaluer toutes les
solutions de placer 60 tâches sur 2 processeurs !!!
- 67 -
4- Parallélisation inter-tâche
4.3- Stratégies indéterministes
2) Classification des Méthodes
Méthodes déterministes :
Emposer une méthode déterministe pour rechercher un ordonnancement
raisonnable
Méthodes itératives :
- Recherche d'une solution satisfaisante en transformant itérativement une
solution initiale dans une bonne direction
(problème : Miinimums locaux à éviter)
Méthodes de liste :
- basée sur la composition de certaines heuristiques on définit un ordre totale
entre les tâches. On ordonnance des tâches par la stratégie glouton :
l'exécution d'une tâche s'effectue dès que possible, dans l'ordre de la liste et
sans attente, si les contraintes de précédence la permettre
- 68 -
Page 34
II- SGBDs PARALLELES
4- Parallélisation inter-tâche
4.3- Stratégies indéterministes
3) Principe des algorithmes de liste
• Les heuristiques
»LP (Longest Path ) : Donne la priorité à la tâche origine du plus long chemin.
»longueur du chemin fait référence aux temps d'exécution des tâches. La
»longueur d'une tâche s'obtient par un calcul récursif
»HL (Highest Level ) : Donne la priorité à la tâche qui est de niveau le plus
»haut dans le graphe de tâches. Le niveau 0 est celui des tâches terminales.
- 69 -
4- Parallélisation inter-tâche
4.3- Stratégies indéterministes
3) Principe des algorithmes de liste
• Principe
Page 35
III- ORAWEB
- Environnement de web
- Programmation client/serveur avec le SGBD ORACLE
- Prinicipes et architechture de ORAWEB
- Extension de PLSQL pour web
- Perspectives : programmation dynamique avec les SGBDs
- 71 -
III- ORAWEB
1- Environnement de web
1.1- Principaux composants
Documents
Statiques
Browser (HTML)
HTTP
server
Browser
CGI
HTTP
server
Browser Documents
HTTP dynamiques
server (HTML)
- 72 -
Page 36
III- ORAWEB
1- Environnement de web
1.2- Protocole HTTP
Principe d'une transaction
- Une transaction de travail consiste en
- HTTP est un demon qui travaille sur le port 80 par défaut. On peut utiliser un autre port
à préciser au lancement de HTTP
- 73 -
III- ORAWEB
1- Environnement de web
1.2- Protocole HTTP
Utilisation et configuration
- Lancement :
Options :
- HTTP est un demon qui travaille sur le port 80 par défaut. On peut utiliser un autre port
à préciser au lancement de HTTP
- 74 -
Page 37
III- ORAWEB
1- Environnement de web
1.2- Protocole HTTP
Interface CGI (Common Gateway Interface)
- Technique standard utilisée par le serveur HTTP pour exécuter un programme qui
génère des sorties HTML (HTML dynamique)
- 75 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
- Quatre fonctions :
- structuration
- présentation
- cheminement
- saisie et activation des traitements
- 76 -
Page 38
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Structure du document
<HTML>
<HEAD>
<TITLE> Titre du document </TITLE>
</HEAD>
<BODY>
<H1>
<H2>
...
<H6>
.....
</H6>
</H2>
</H1>
</BODY>
</HTML>
- 77 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les Basic HTML tags
- 78 -
Page 39
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les List tags
- Liste ordonée : Les rubriques sont numérotées
Exemple : <DL>
<DT> HTML :
<DD> HyperText Markup Language
<DT> HTTP :
<DD> HyperText Transport Protocol
</DL>
- 79 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags de style
- Macro & :
- accents : è è
à à
...
Tag ADDRESS
- Les caractères réservés :
< < <ADDRESS>
> > adresse_de_l'auteur
& & </ADDRESS>
" "
- 80 -
Page 40
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les liens d'Hypertexte
- method protocole d'accès : file (local) - http- ftp - mailto (sans //) ...
- 81 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les liens à l'intérieur d'un document
- Création des marqueurs (référence muette) pour marquer la première ligne des
sections à référencer :
Exemple :
- marqueur :
<H2> <A NAME="intro"> Introduction aux SGBDs </A> </H2>
- lien :
<A HREF="#intro"> Les SGBDs </A>
- 82 -
Page 41
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags graphiques
<IMG SRC="URL"
ALT="text"
ALIGN={"top" | "middle" | "bottom" | "texttop"}
ISMAP >
- ALIGN le placement du bloc de texte qui suit l'image, par défaut le texte est placé
à droite de l'image par le browser
- 83 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags basics pour les tableaux
- 84 -
Page 42
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags basics pour les tableaux
<TABLE BORDER> <CAPTION ALIGN=bottom> Table n°1 </CAPTION>
<TR> <TD ROWSPAN=2> </TD> <TH COLSPAN=2> Average </TH> </TR>
<TR> <TH>Height</TH> <TH> Weight </TH> </TR>
<TR> <TD>Males</TD> <TD ALIGN=center> 69 </TD>
<TD ALIGN=center> 150 </TD></TR>
<TR> <TD>Females</TD> <TD ALIGN=center> 64 </TD>
<TD ALIGN=center> 130 </TD></TR>
Average
Height Weight
Males 69 150
Females 64 130
- 85 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags basics pour les forms
- Les forms sont utilisés pour la saisie des données et l'activation des traitements
adéquats sur le serveur depuis un poste client
- ACTION : indique l'URL demandée par le formulaire. Cet URL pointe sur un CGI script
qui organise le traitement des données venant du formulaire
- 86 -
Page 43
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags basics pour les forms : zones de saisie
<TEXTAREA
NAME= "nom_de_la_zone"
Zone de saisie de texte
ROWS= largueur en caractères de TEXTAREA
ASCCI TEXTAREA tag
COLS= longueur en caractères de TEXTAREA>
Texte_defaut
</TEXTAREA>
<INPUT
NAME= "nom_de_la_zone_de_saisie"
CHECKED mode de saisie "checkbox" ou "bouton radio"
MAXLENGTH= largueur max en caractères de la ligne (défaut 20)
SIZE= largueur de la fenêtre de saisie (peut-être < MAXLENGTH)
SRC= URL spécifiant une image (si TYPE=IMAGE)
TYPE= CHECKBOX / HIDDEN / IMAGE / PASSWORD / RADIO / RESET / SUBMIT / TEXT
VALUE= valeur_par_defaut
</INPUT>
- 87 -
III- ORAWEB
1- Environnement de web
1.3- Langage HTML
Les tags basics pour les forms : Menus de sélection
SELECT tag : afficher 1ère option par défaut - bouton d'afficher les autres options,
une seule peut-être sélectionnée
SELECT SINGLE tag : les options sont affichées dans une fenêtre avec scroll bar,
une seule peut être sélectionnée (3 options sont affichiées par défaut)
SELECT SINGLE tag : les options sont affichées dans une fenêtre avec scroll bar,
mais on peut selectionner plusieurs options *
* dans certains browsers, il faut taper CTRL + SHIFT pour une sélection multiple
- 88 -
Page 44
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Introduction
- Origine : 1er langage de programmation pour web - SUN - version bêta
- 89 -
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Composants principaux sur une plate-forme
Browsers
Prog. Texte
- HOTJAVA
- 90 -
Page 45
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Options :
classpath path instanciation de la var. CLASSPATH
-d répertoire répertoire stockant la classe compilée
-g exécution pas à pas (n° de ligne et des variables)
-o optimisation
-v | -verbose afficher les messages de compilation
Syntaxe : path1:path2:...:pathn
- 91 -
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Exécutiond'une classe prinicpale (la classe contenant la méthode main())
(interprete de pseudo-code) :
java [options] nom_de_classe .class <args>
- 92 -
Page 46
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Debugger de Java : jdb
Méthode 1 : Utilisation locale
jdb nom_de_classe .class <args>
jdb -classpath path nom_de_classe .class <args>
Méthode 2 : Utilisation à distance sur réseaux
jdb -host <hostname> -password <password>
- 93 -
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Générateur de source en C: javah
Utilisation :
générer les sources en C pour implanter les méthodes "natives" en C d'une
classe java
Syntaxe :
javah [option] nom_de_classe .class
Options :
- 94 -
Page 47
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Déassemblteur des fichier compilé par java : javap
Utilisation :
déassembler les fichiers compilés par java et afficher une représentation du
pseudo-code
Syntaxe :
javap [options] nom_de_classe .class
Options :
- 95 -
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Générateur de document d'API en format HTML : javadoc
Utilisation :
analyser les déclarations et les commentaires des fichiers sources en java et
créer des documents d'explication en format HTML. Javadoc tient compte
des classes, interfaces, méthodes et variables
Syntaxe :
javadoc [options] package | nom_de_fichier.java
Options :
- 96 -
Page 48
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
Survol de la syntaxe du langage java
- Les commentaires :
// texte une ligne de commentaire
/* texte */ une ou plusieurs lignes de commentaires
/** texte */ le commentaire sera analysé par javadoc
- 97 -
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
- Les littéraux :
- les entiers : quatre classes : byte, short, int et long
- les flottants : deux classes : float et double
- les booléens : deux valeurs : true et false
- les caractères : de classe char
- les chaînes de caractères : classe String (° tableau de cars en C)
- les tableux : création dynamique par new: (ex. char s[] = new char[20]), pas de
tableaux multidimentionnels, l'index doit-être entier, la longueur est calculée par
la méthode length
- les classes :
[commentaires_javadoc] [spécificateurs] class Nom_de_Classe
[extends Nom_de_superClase]
[implements Interfaces] {corps_de_la_classe}
Spécificateurs = abstract | final
- 98 -
Page 49
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
- Les méthodes :
[Commentaires_javadoc] [Spécificateurs]
Type_de_retour Nom_méthode(paramettres)
{corps_de_la_méthode}
Spécificateurs = public | private | protected | threadsafe | native \ synchronized
- 99 -
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
- Les structures :
if (boolean) déclarations else déclarations;
switch (e1) { case e2 : déclarations
...
defaut : déclarations};
break [label] :
continue [label] ;
return e1;
for ([e1] ; [e2] ; [e3] ) déclarations while (boolean) déclarations;
do déclarations while (boolean);
label déclarations;
- les tableux : création dynamique par new: (ex. char s[] = new char[20]), pas de
tableaux multidimentionnels, l'index doit-être entier, la longueur est calculée par
la méthode length
- 100 -
Page 50
III- ORAWEB
1- Environnement de web
1.4- Langage JAVA
Utilisation
- Une classe qui définit d'un applet peut être surchargée quatre méthodes de la
classe java.applet.Applet :
- init() qui l'initialise à chaque chergement
- start() qui lance l'exécution de l'applet
- stop() qui définit son arrêt lorsque l'utilisateur quite la page contenant
l'applet ou quite le browser
- destroy() qui nettoye la page de l'applet
- 101 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Introduction
- langage script basé sur java et utilisé dans un document HTML (Netscape+Sun)
- le JavaScript
- connaît les objets d'un document HTML
- gére un ensemble des évènements sur ces objets
- gére un ensemble de fonctions, écrirtes en javascript ou applet java, et
attachées à un document
- peut activer des fonctions quand un évenèment s'introduit sur un objet
Evènement
Objet
Fonction
- 102 -
Page 51
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Objets de JavaScript
Objet Window
Objet Location
Objet History
Objet Document
Objet Form
Objet Form Eléments
text fields
Objet links
text areas
Objet anchors checkboxes
radio button
Objet plug-ins (pas encore implanté)
selections
Objet applets (pas encore implanté) buttons
Objet elements (pas encore implanté)
- 103 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les évènements
- Events sont des actions qui s'introduissent comme le résultat une action de
l'utilisateur (Exemple : "click" est un évènement sur un bouton)
- 104 -
Page 52
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- propriétés :
- frames[index] tableau de frame wildows fils (dans l'ordre défini)
- frames.length nombre de frames fils définis
- self le window courant
- parent le window père
- top le window origin
- Méthodes
- alert("string") afficher la fenêtre d'alert avec le message
- confirm("string") afficher la fenêtre de confimation avec le message
(avec OK / CANCEL)
- open("URL", "name")
ouvrir une nouvelle fenêtre client avec nom, charger
l'URL dans cette fenêtre
- close() close la fenêtre
- 105 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- propriétés :
- href l'URL entier comme un JavaScript String
- protocol la sous-chaine de protocole (y comprise le ":")
- host la partie hostname:port
- hostname le hostname
- port le port
- path le chemin
- hash le chemin CGI après #
- search le chemin CGI après ?
- post (pas encore implanté)
- Méthodes
- tostring() returner location.href
- assign() charger location.href
- 106 -
Page 53
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- History : contenant les information sur les URLs étant visités par le client. Les
informations sont stockées dans un history list et accessible par menu Go
- propriétés :
- back URL précedent
- forward URL suivant
-current URL de la page courante
- length Longueur de la liste de historique
- Méthodes
- go(delta) delta est un nombre entier. Si delta > 0 charger l' URL
courent + delta, si < 0, charger l' URLcourant - delta
- go("string") charger 'URL cité
- toString() retourner une chaine contenant un tableau HTML de
tous les liens dans la liste de historique
- 107 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- propriétés :
- title titre du document
- location URL complet du document
- lastmodified date de la dernière modification (string)
- loadedDate pas encore implanté
- referer pas encore implanté
- bgcolor valeur RGB de la couleur de fond (background)
- fgcolor valeur RGB de la couleur de texte (foreground)
- linkcolor valeur RGB de la couleur des hyperlinks
- vlinkcolor valeur RGB de la couleur des hyperlinks visités
- alinkcolor valeur RGB de la couleur des liens actifs (boutons )
- forms[index] tableau des objets form dans l'ordre d'apparition
- forms.length nombre des objets form dans le documents
- links[index] tableau des HREF dans l'ordre d'apprition
- links.length nombre de liens dans le documents
- anchors[index] tableau des ancres (anchor tag) dans l'ordre
- anchors.length nombre des ancres dans le document
- 108 -
Page 54
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Document : (suite)
- Méthodes :
- write(arguments) afficher dans le document HTML des arguments
comme un texte HTML
- writeln(arguments) sauter la ligne et afficher dans le document HTML des
arguments comme un texte HTML
-clear() effacer la fenêtre
- open("MIME type") pas encore implanté
- close() pas encore implanté
- Exemple
document.write("<PRE>")
document.writeln ("Nom de rubrique :" + document.forms[0].num.name)
document.writeln ("Valeur de rubrique :" + document.forms[0].num.value)
document.write("</PRE>")
- 109 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Forms : Chaque form est un objet distinct. Il existe un tableau des objets forms
dans chaque document. Les forms sont référencés par leur numéro dans ce tableau
- Propriétés :
- name Valeur du l'attribut NAME
- method valeur de l'attribut METHOD (get ou post (0/1)
- action valeur de l'attribut ACTION
- target fenêtre de réponse
- Event Handlers
- onSubmit="fonction de JavaScript à exécuter"
- Méthodes
- submit() soumettre le form
- 110 -
Page 55
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Propriétés :
- name Valeur du l'attribut NAME
- value valeur du contenu de la zone
- defaultValue valeur par défaut de la zone
- Event Handlers
- onFocus="fonction de JavaScript à exécuter"
- onBlur="fonction de JavaScript à exécuter"
- onSelect="fonction de JavaScript à exécuter"
- onChange="fonction de JavaScript à exécuter"
- Méthodes
- focus() focaliser l'entrée de données sur l'objet
- blur() quitter l'entrée de données de l'objet
- select() sélectionner la valeur de l'objet
- 111 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Propriétés :
- name Valeur du l'attribut NAME
- value valeur du contenu de la zone : "on" ou "off"
-status boolée, false si not checked true si checked
- defaultStatus booléen qui indique si élément est sélectionné
par défaut par l'attribut CHECKED
- Event Handlers
- onClick="fonction de JavaScript à exécuter"
- Méthodes
- click() sélectionner le checkboxe s'il est sur "on"
- 112 -
Page 56
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Radio buttons : pour saisie d'une valeur parmi quelques unes
- Propriétés :
- name Valeur du l'attribut NAME
- value valeur del'attribut VALUE
- index Numéro de l'option (de 0)
-status booléen, false si not checked true si checked
- defaultStatus booléen qui indique si élément est sélectionné
par défaut par l'attribut CHECKED
- Event Handlers
- onClick="fonction de JavaScript à exécuter"
- Méthodes
- click() sélectionner un radio bouton
- Exemple :
<INPUT TYPE="radio" NAME="choix" VALUE="Cher"
onClick="catalog.value = "haut-de-gamme"> C'est une grande qualité
<INPUT TYPE="radio" NAME="choix" VALUE="Modest"
onClick="catalog.value = "milieu de gamme"> C'est une bonne qualité
<INPUT TYPE="radio" NAME="choix" VALUE="bon marché"
onClick="catalog.value = "bas-de-gamme"> C'est une mauvaise qualité
- 113 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Menu de sélection : pour saisie d'une option d'un menu
- Propriétés de chaque option :
- text text de l'option
- value valeur de l'attribut VALUE à envoyer au serveur
- index Numéro de l'option dans le menu(de 0)
-selected booléen, false si not selected true si selected
- defaultSelected booléen qui indique si élément est sélectionné
par défaut par l'attribut SELECTED
- Event Handlers
- onFocus="fonction de JavaScript à exécuter"
- onFlur="fonction de JavaScript à exécuter"
- onChange="fonction de JavaScript à exécuter"
- Méthodes
- click() sélectionner une option
- Exemple : <SELECT NAME="select1" onChange="update(this.form)"
<OPTION> rouge
<OPTION> verte
<OPTION SELECTED> bleue
</SELECT>
- 114 -
Page 57
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Les objets pré-définis de JavaScript
- Boutons : trois types de boutons : bouton submit - bouton reset - bouton custom
- Event Handlers
- onClick="fonction de JavaScript à exécuter"
- Méthodes
- click() sélectionner le bouton
- Exemple :
<INPUT TYPE="submit" NAME="submit Buttom" VALUE="Submit Query">
- 115 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Objets, propriétés, tableaux et méthodes de JavaScript
objet.nom_méthode(paramètres)
- 116 -
Page 58
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Syntaxe du langage
- Noms : suite des lettres des caractères "_" et des chiffres qui commence par une lettre
ou la caractère "_"
- 117 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Syntaxe du langage
- Opérateurs d'assignement : (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=)
x += y x = x+y
- Opérateurs :
- arthrimétiques : +, -, *, /, % (modulo)
- logiques sur des bits : AND &, OR |, XOR ¨, << >> et >>> (scanne)
- logiques : && (et), || (ou), ! (non)
- comparaison : ==, >, >=, <, <=, !=
- Incrément : ++ (++x ou x++)
- Décrément : -- (--x ou x--)
- négation : - (-x)
- chaînes : + (concarténation)
- 118 -
Page 59
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Syntaxe du langage
Instructions
- Mots réservés utilisés :
- 119 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Syntaxe du langage
Instructions
- Continue : terminaison d'une itération dans une boucle, recommence une nouvelle
- For Loop :
- 120 -
Page 60
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Syntaxe du langage
Instructions
- FOR .. IN
- FUNCTION
- IL ... ELSE
RETURN
return expression
- 121 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Syntaxe du langage
Instructions
This.propriété | méthode
- WHILE
- 122 -
Page 61
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Utilisation dans le document HTML
- Script tag
<!-- debut de la partie invisible pour les anciens browses
<SCRIPT
LANGUAGE="langage" langage : LiveScript, Java, ...
SRC="URL"> fichier de programme (.ls pour JavaScript)
[Script text]
</SCRIPT>
// fin de la partie invisible
- Exemple : <HTML>
<HEAD>
<SCRIPT LANGUAGE="LiveScript">
document.write("Hello net.")
</SCRIPT>
</HEAD>
<BODY> That's all, folks. </BODY>
</HTML>
- 123 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Utilisation dans le document HTML
<HTML>
<HEAD>
<SCRIPT LANGUAGE="LiveScript">
<!-- debut de la partie invisible pour les anciens browses
function carre(i)
{
document.write("Vous donnez "), i, " a la fonction.", "<BR>")
return i * i
}
document.write("Lafonction retourne : "), square(5), ".")
// fin de la partie invisible
</SCRIPT>
</HEAD>
<BODY> <BR> Tout fait. </BODY>
</HTML>
- 124 -
Page 62
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Utilisation dans le document HTML
- EXEMPLE 3 : un script avec form simple
<HTML>
<HEAD>
<SCRIPT LANGUAGE="LiveScript">
functioncacul(form) {if confirm("etes-vous sur ?"))
form.resut.value = eval(form.expr.value)
else alert("refaire s'il vous plait")
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
Entrer une expression :
<INPUT TYPE="text" NAME="expr" SIZE=30>
<INPUT TYPE="button" VALUE="Calculateur" ONCLICK="calcul(this.form)"> <BR>
Resultat :
<INPUT TYPE="text" NAME="result" SIZE=25> <BR>
</FORM> </BODY> </HTML>
- 125 -
III- ORAWEB
1- Environnement de web
1.5- Le langage JavaScript
Utilisation dans le document HTML
- EXEMPLE 4 : un script avec form
<HTML> <HEAD> <SCRIPT LANGUAGE="LiveScript">
function testenum(str, min max)
{if str=="") { alert ("Entrer un nombre s'il vous plait.")
return false }
for (var i = 0; i < str.length; i++) {
var ch = str.substring(i, i+1)
if (ch < "0" || ch > "0") { alert("rentrer un numéro s'il vous plait")
return false } }
return true }
function merci() { alert("Merci pour votre test") }
</SCRIPT> </HEAD>
<BODY> <FORM>
Entrer une nombre entre 1 et 1000 :
<INPUT NAME="num" SIZE=15 ONCHANGE="if (testenum(this.value, 1, 1000))
{ this.focus(); this.select();} else {merci()} VALUE="0"> </FORM>
<SCRIPT LANGUAGE="LiveScript"> document.write("<PRE>")
document.writeln("Nom de rubrique : " + document.form[0]num.name)
document.writeln("Valeur de rubrique : " + document.form[0]num.value)
document.write("<PRE>") </SCRIPT> </BODY> </HTML>
- 126 -
Page 63
III- ORAWEB
2- Environnement de oraweb
2.1- Principe et architecture
- 127 -
Page 64