Académique Documents
Professionnel Documents
Culture Documents
ET PROGRAMMATION WEB
ALGÉBRE RELATIONNELLE
& OPTIMISATION
Nicolas Lumineau
nicolas.lumineau@univ-lyon1.fr
TRAITEMENT D’UNE REQUÊTE
BD BD’
R
A B C D E
SA B C D E
R S
A B C D E A B C D E
tuples
tuples
Q Requête Q : Q
SELECT R.A, S.C
FROM R,S
WHERE R.B=S.B;
Exécutée Exécutée
en 5 ms en 105 ms BDW1
3
TRAITEMENT DE REQUÊTES
Validation de la syntaxe
de la requête
Requête SQL
Traduction de la requête
Analyse en arbre algébrique
Compilation
Recherche de l’arbre
Optimisation algébrique optimal
Exécution du programme
Exécution correspondant à l’arbre
algébrique optimal
Langages « théoriques »
Objectif : étudier le modèle relationnel, prouver des
propriétés et obtenir une mise en œuvre efficace
Langage procédural (approche algébrique)
Algèbre Relationnelle
Calcul Relationnel
5
ALGEBRE RELATIONNELLE
BDW1
6
ALGÈBRE RELATIONNELLE
Définition
Une algèbre relationnelle est un ensemble
d’opérations agissant sur des relations et produisant
des relations
Principe :
combiner des relations à travers des opérateurs pour
formuler une requête
7
LES OPÉRATEURS
Opérateurs de base :
Cinq opérateurs de base : sélection, projection, union,
différence et produit.
Un opérateur syntaxique: le renommage, qui ne fait
que modifier le schéma et pas les n-uplets.
Opérateurs déduits :
Raccourcis syntaxiques pratiques:
intersection, -jointure, semi-jointure et division.
On peut les regrouper en deux catégories :
opérateurs ensemblistes : union, intersection,
différence, produit cartésien
opérateurs spécifiques BD : sélection, projection, BDW1
9
EXEMPLE D’UNION
Artiste = Acteur Réalisateur
Acteur
Nom Prénom Nationalité Nom Prénom Nationalité
Villeret Jacques FR
Villeret Jacques FR
Downey Robert
Downey Robert UK
UK
Almodovar Pedro ESP
Allen Woody USA
où
R et S sont deux relations compatibles pour l'union, , t
est une variable n-uplet .
11
EXEMPLE D’INTERSECTION
Acteur
Nom Prénom Nationalité
Villeret Jacques FR
ActeurRéalisateur = Acteur Réalisateur
Lhermite Thierry FR
Nom Prénom Nationalité
Downey Robert UK
Allen Woody USA
Allen Woody USA
Réalisateur
Nom Prénom Pays
Almodovar Pedro ESP
Allen Woody USA
BDW1
Veber Francis FR
Favreau John USA
12
DIFFÉRENCE R – S OU R / S
Attention : R – S S – R
BDW1
Question : Que représente R – ( R – S ) ?
13
EXEMPLE DE DIFFÉRENCE
Acteur
Nom Prénom Nationalité
Villeret Jacques FR
ActeurNonRéal = Acteur - Réalisateur
Lhermite Thierry FR
BDW1
15
EXEMPLE DE PRODUIT CARTÉSIEN
Acteur
Nom Prénom Nationalité
…. … … … … ….
Pays
Downey Robert UK ESP Espagne Espagnol
Code NomPays Nat.
Downey Robert UK FR France Français
ESP Espagne Espagnol
FR France Français Downey Robert UK USA Etats-Unis Américain
BDW1
USA Etats-Unis Américain Downey Robert UK UK Royaume- Anglais
UK Royaume-Uni Anglais Uni
16
RENOMMAGE (RHO)
Renommage d’un sous-ensemble de la relation :
A1/B1,…An/Bn (R)={t tR et A1 renommé en B1, …
An renommé en Bn }
où :
R (A1, … An) est une relation,
BDW1
17
EXEMPLE DE RENOMMAGE
ActeurBis =
Acteur Nom/NomA , Prénom/PrénomA, Nationalité/Pays (Acteur)
Nom Prénom Nationalité
Nom A PrénomA Pays
Cruz Penelope ESP
Cruz Penelope ESP
Maura Carmen ESP
Maura Carmen ESP
Johansson Scarlett USA
Johansson Scarlett USA
Villeret Jacques FR
Villeret Jacques FR
Lhermite Thierry FR
Lhermite Thierry FR
Downey Robert UK
Downey Robert UK
Allen Woody USA
Allen Woody USA
Réalisateur RealBis=
Nom/NomR , Prénom/PrénomR, (Réalisateur)
Nom Prénom Pays
Almodovar Pedro ESP NomR PrénomR Pays
Allen Woody USA Almodovar Pedro ESP
Allen Woody USA BDW1
Veber Francis FR
Favreau John USA Veber Francis FR
Favreau John USA 18
SÉLECTION (SIGMA)
Sélection d’un sous-ensemble de la relation opérande :
F(R)={t tR et F(t) est vrai}
où
R est une relation, t est un n-uplet variable
F est une formule logique sans quantificateur
composée de :
opérandes: constantes et attributs
opérateurs de comparaison :<,>,=,,,
opérateurs logiques : , , ¬
BDW1
19
EXEMPLE DE SÉLECTION
Acteur
Nom Prénom Nationalité ActeurFrancais = Nationalité=‘FR’ (Acteur)
Cruz Penelope ESP
Nom Prénom Nationalité
Maura Carmen ESP
Villeret Jacques FR
Johansson Scarlett USA
Lhermite Thierry FR
Villeret Jacques FR
Lhermite Thierry FR
Downey Robert UK
où
R est une relation, t est une variable n-uplet
{A1,…, An} est un sous-ensemble des attributs de R
Remarque :
la projection élimine les n-uplets doublons.
Les SGBD relationnels (et SQL) permettent
projection (pure)
projection sans élimination des doublons
BDW1
21
EXEMPLE DE PROJECTION
Acteur
Nom Prénom Nationalité NomActeur = Nom , Prenom (Acteur)
Cruz Penelope ESP Nom Prénom
Johansson Scarlett
Villeret Jacques FR
Allen Woody
Réalisateur
Nom Prénom Pays PaysReal= Pays (Réalisateur)
Almodovar Pedro ESP
Pays
Allen Woody USA
ESP BDW1
Veber Francis FR
USA
Favreau John USA
FR
22
JOINTURE (-JOINTURE)
-Jointure entre les attributs de deux relations
R FS = {t.A1…AnB1…Bm
t.A1…AnR et t.B1…BmS et F est vrai}
où
R et S sont des relations
t est une variable n-uplet
F est une formule logique composée d’atomes de la forme Ai Bj
où {<,>,=,,,}.
BDW1
23
EXEMPLE DE JOINTURE
Acteur
Nom Prénom Nationalité
BDW1
25
SEMI-JOINTURE
Semi-Jointure entre les attributs de deux relations
R FS = {t.A1…An
t.A1…AnR et F est vrai pour B1, … Bn S }
où
R et S sont des relations
t est une variable n-uplet
F est une formule logique composée d’atomes de la forme Ai Bj où
{<,>,=,,,}.
BDW1
26
EXEMPLE DE SEMI-JOINTURE
Acteur
Nom Prénom Nationalité
27
DIVISION
Soient les relations R et S tels que le schéma de S
contient tous les attributs de R, alors on peut
réordonner les attributs de R tel que :
R(A1,…,Ak,Ak+1,…,Ak+n) est de degré k+n et
S(A1,…,Ak) de degré k.
La division de R par S :
T(Ak+1,…,Ak+n)= R ÷ S
est une relation de degré n qui contient tous les n-
uplets t tels que {t} S R.
BDW1
28
EXEMPLE DE DIVISION
Acteur
Nom Prénom Titre
Film
Titre
Volver
Bandidas
BDW1
Fanfan la Tulipe
29
REPRÉSENTATION ALGÉBRIQUE
Soit R( A, B ,C) et S(C, D, E)
Arbre algébrique
B,E
C
BDW1
A=a1 D=d1
30
R S
EXERCICE
Soit les relations
ACTEUR(numA, nom, prenom, anneeN)
FILM(numF, titre, duree, anneeS)
ROLE (numF, numA, nomRole)
numF
numA
FILM
ACTEUR ROLE BDW1
31
REMARQUE
Question :
Quelle différence entre les deux requêtes suivantes ?
nom, prenom
numA numF
FILM
ACTEUR ROLE numF
numA
anneeS>1989
anneeN>1969 numA, numF
FILM
nomRole=‘François Pignon’
ACTEUR
BDW1
ROLE
AUCUNE en terme de résultat retourné, mais les temps de
traitements seront différents 32
RETOUR À LA NOTION D’OPTIMISATION
BDW1
33
TRAITEMENT DE REQUÊTES
Validation de la syntaxe
de la requête
Requête SQL
Traduction de la requête
Analyse en arbre algébrique
Compilation
Recherche de l’arbre
Optimisation algébrique optimal
Exécution du programme
Exécution correspondant à l’arbre
algébrique optimal
optimisation
Election du
A,C plan optimal
A,C
B
B
A,B B,C
A,B B,C
R S
R S
Choix des
algorithmes
35
Prog. exécution Résultats
ANALYSE
Décomposition en requêtes/sous-requêtes
BDW1
COMPILATION
BDW1
37
OPTIMISATION
Optimiser c’est trouver le plan d’exécution d’une
requête dont le coût soit minimal (i.e. le temps de
réponse à la requête soit le plus rapide possible)
BDW1
Optimisation algébrique
CHOIX ALGORITHMIQUES
Chaque opérateur peut être implémenté de
différentes façons.
La complexité de l’algorithme a un impact sur le
temps de traitement de la requêtes
BDW1
Optimisation physique 40
EXÉCUTION
Application pour chaque opération du plan
d ’exécution des programmes associés
MySQL, Postgres : C, C++
HSQL : JAVA
…
BDW1
41
ILLUSTRATION DES PLANS D’EXÉCUTION
Requête :
« le nom et le titre des employés qui travaillent dans des
projets avec un budget > 250 »
BDW1
REPRÉSENTATION GRAPHIQUE
T4
Enom, Titre
T3
T2
Employe
T1
Budget>250
Travaux
Projet
UN AUTRE PLAN D'EXÉCUTION POSSIBLE
BDW1
REPRÉSENTATION GRAPHIQUE
T4
Enom, Titre
T3
Budget>250
T2
T1
Projet
Travaux Employe
QUELLE DIFFÉRENCE ENTRE LES DEUX
PLANS D’EXÉCUTION ?
T3 T4
Budget>250
T2 T3
Employe T1
T1 T2
Budget>250
Travaux Projet
Projet Travaux Employe
47
COMMENT OPTIMISER?
Réécriture des compositions de projections et/ou
sélections
48
RÉÉCRITURE DES COMPOSITIONS DE PROJECTIONS
ET/OU DE SÉLECTIONS
Exemple :
Enom
SELECT Enom
FROM Employe E, Travaux T, Durée=2 Durée=4
Projet P
WHERE E.Eid = T.Eid Pnom=“LinkAnnot”
AND T.Pid = P.Pid
AND Enom !=‘Toto’ Enom!=“toto”
AND Pnom = ‘Linkannot’
AND (Durée=2 OR Durée=4)
Pid
Eid
BDW1
Projet Travaux Employe
RÉÉCRITURE DES COMPOSITIONS DE PROJECTIONS
ET/OU DE SÉLECTIONS
Enom
Pid
Eid
BDW1
OPTIMISATION ALGÉBRIQUE
Principe:
Réduction au plus tôt du nombre et de la taille des
tuples manipulés
Manipulation algébrique
Exploitation des règles de transformation de certains
opérateurs
commutativité
associativité
51
RÈGLES DE TRANSFORMATION
BDW1
53
RÈGLES DE TRANSFORMATION
Budget>250
Employe
Budget>250
Travaux
Projet
Travaux Employe Projet
55
COMMENT PASSER DE L’UN À L’AUTRE?
Associativité de la jointure
Enom, Titre
( Projet Travaux ) Employe
Budget>250
Projet
Travaux Employe
56
COMMENT PASSER DE L’UN À L’AUTRE?
Associativité de la jointure
Enom, Titre
( Projet Travaux ) Employe
Budget>250
Projet Employe
Travaux Employe
Projet Travaux 57
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure
Budget>250 ( E (P T) )
Enom, Titre
(E Budget>250 ( P T) )
Budget>250
Projet Employe
Travaux Employe
Projet Travaux 58
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure
Budget>250 ( E (P T) )
Enom, Titre
(E Budget>250 ( P T) )
Budget>250 Employe
Projet Travaux
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure
(E Budget>250 ( P T) )
Enom, Titre
(E (Budget>250 (P) T) )
Budget>250 Employe
Projet Travaux
COMMENT PASSER DE L’UN À L’AUTRE?
Commutativité de la
sélection et de la jointure
(E Budget>250 ( P T) )
Enom, Titre
(E (Budget>250 (P) T) )
Employe
Budget>250
Travaux
Projet
ARBRES DE JOINTURES
SELECT * E
FROM E, T, P
WHERE E.Eid=T.Eid P T
AND T.Pid=P.Pid
T
BDW1
P E
RAPPEL
Exemple :
Enom
SELECT Enom
FROM Employe E, Travaux T, Durée=2 Durée=4
Projet P
WHERE E.Eid = T.Eid Pnom=“LinkAnnot”
AND T.Pid = P.Pid
AND Enom !=‘Toto’ Enom!=“toto”
AND Pnom = ‘Linkannot’
AND (Durée=2 OR Durée=4)
Pid
Eid
BDW1
Projet Travaux Employe
AUTRE PLAN ÉQUIVALENTE
Enom
Pid,Enom
BDW1
Projet Travaux Employe
STRATÉGIE DE RECHERCHE
Déterministe :
part des relations de base et construit les plans en
ajoutant une relation à chaque étape
programmation dynamique: largeur-d'abord
excellent jusqu'à 5-6 relations
Aléatoire :
recherche de l'optimalité autour d'un point de départ
aléatoire
réduit le temps d'optimisation (au profit du temps
d'exécution)
meilleur avec > 5-6 relations
recuit simulé
amélioration itérative
STRATÉGIES DE RECHERCHE
Déterministe
R4
R3 R3
R1 R2 R1 R2 R1 R2
Aléatoire
R3 R2
R1 R2 R1 R3
ALGORITHMES DE RECHERCHE
R4
R3
R1 R2 R1 R2 R3 R4
LES ALGORITHMES DE JOINTURES
Exemple :
On considère la jointure R⋈A S avec R(A,B) et S(A,C)
68
JOINTURE PAR BOUCLE IMBRIQUÉE
Algorithme le plus simple pour évaluer la jointure
Principe:
compare chaque nuplet de la relation R à tous les nuplets de la
relation S,
concaténer les nuplets pour lesquels la condition de jointure est vérifiée
ajouter le nouveau tuple au résultat.
T = {};
Pour chaque tuple r de R faire
Pour chaque tuple s de S faire
Si r.A==s.A Alors T = T (r.A, r.B, s.C)
FinPour
FinPour
BDW1
71
COMMENT OPTIMISER ?
72
ESTIMER LE COÛT D’UN PLAN
La fonction de coût donne les temps I/O et CPU
nombre d’instructions et d’accès disques (écriture/lecture)
BDW1
ESTIMATION DE LA TAILLE DES RÉSULTATS
INTERMÉDIAIRES : STATISTIQUES
Relation R:
cardinalité : card(R)
taille d'un tuple : largeur de R
fraction de tuples participant une jointure
…
Attribut A:
domaine : max(A), min(A), …
nombre de valeurs distinctes
distribution des valeurs (histogrammes)
Hypothèses :
indépendance entre différentes valeurs d'attributs
distribution uniforme des valeurs d'attribut dans leur
domaine
BDW1
TAILLES DES RELATIONS INTERMÉDIAIRES
Sélection :
taille(R) = card(R) largeur(R)
card(F (R)) = SF (F) card(R)
Projection
card(A(R)) <=card(R) (égalité si A est unique)
Produit cartésien
card(R S) = card(R) card(S)
Union
borne sup. : card(R S) = card(R) + card(S)
borne inf. : card(R S) = max{card(R), card(S)}
Différence
borne sup. : card(R–S) = card(R)
borne inf. : 0
BDW1
TAILLES DES RELATIONS INTERMÉDIAIRES
Jointure :
cas particulier: A est clé de R et B est clé étrangère de S :
card(R A=B S) = card(S)
plus généralement
card(R S) = SF A=B card(R) card(S)
BDW1
CONCLUSION
BDW1
78