Vous êtes sur la page 1sur 106

Prélude

Traitement de Requête

Multi Bases de Données


(Plusieurs Bases De Données)
Traitement de requêtes :
3 étapes

Intégration de Schéma Local 1 Schéma Local 2 Schéma Local 3

Schéma
Traducteur 1 Traducteur 2 Traducteur 3

InS1 InS2 InS3

Q1,1 Q1,2 Q1,3

INTEGRATEUR

Q1
SCG
Traitement de requêtes :
3 étapes
Traduction des requêtes
locales sur les bases de
données. Schéma Local 1 Schéma Local 2 Schéma Local 3

Q’1, Q’1,2 Q’1,3


1
Traducteur 1 Traducteur 2 Traducteur 3

InS1 InS2 InS3

Q1,1 Q1,2 Q1,3

Décomposition
requête INTEGRATEUR

Q1
GCS
Traitement de requêtes :
3 étapes
Combinaison des
résultats de requêtes
locales Local Schema 1 Local Schema 2 Local Schema 3

Q’1, Q’1,2 Q’1,3


1
Traducteur 1 Traducteur 2 Traducteur 3

InS1 InS2 InS3


Résultats
Combiner Q1,1 Q1,2 Q1,3

INTEGRATEUR

Q1
GCS
Construction résultats
Traitement de requêtes :
3 étapes
IntégrationSchéma

1. Requête Globale Local Schema 1 Local Schema 2 Local Schema 3

décomposée en
requêtes locales Translator 1 Translator 2 Translator 3

2. Requêtes locales InS1 InS2 InS3


traduites en requêtes
des bases de données
locales
INTEGRATEUR
3. Combinaison des
résultats locaux
GCS
Décomposition de
requête Requête Globale

Décomposition &
Optimisation Globale

SQ1 SQ2
... SQn PQ1 … PQn

Query
traducteur 1
Query
traducteur 2
… Query
traducteur n
SQi sous-requête (langage
global de requête)
TQi Requête Cible (sous-

TQ1 TQ2 ... TQn


requête locale) langage
local de requête
PQi requêtes post-traitement
pour combiner les
DB1 DB2 DBn résultats des sous-
requêtes locales
Transparence de Distribution &
Requêtes
Transparence de Distribution

 Exemple d ’application sur une relation


Saisir un “Numéro de fournisseur” et afficher “Le Nom”
correspondant
 Relation fournisseur (“Supplier”)
Supplier(SNum, Name, City)
 Fragments et allocation de la relation:
Supplier 1 =  City = ``SFO'' Supplier sur Site1
Supplier2 =  City != “SFO” Supplier sur Site2, Site3
Transparence de Distribution

Transparence de Fragmentation:
Supplier1 S1
read(terminal, $SNum);
Select Name into $Name
from Supplier Supplier2 S2
where SNum = $SNum;
write(terminal, $Name).
Supplier2 S3

DDBMS
DDBMS : Exécution de requête et accès aux données à la charge du système
Transparence de Distribution

Transparence de Localisation
read(terminal, $SNum);
Select Name into $Name Supplier1 S1
from Supplier1
where SNum = $SNum;
If not FOUND then S2
Supplier2
Select Name into $Name
from Supplier2
where SNum = $SNum; Supplier2 S3
write(terminal, $Name). DDBMS

Application indépendante des changements d’allocation de


fragments. Les changements de fragmentation ont un effet sur
l’application
Transparence de Distribution

Transparence de correspondance/mapping Local

read(terminal, $SNum);
Select Name into $Name Supplier1 S1
from Supplier1 @ S1
where SNum = $SNum;
If not FOUND then Supplier2 S2
Select Name into $Name
from Supplier2 @ S3
Supplier2 S3
where SNum = $SNum;
write(terminal, $Name). DDBMS
Application spécifie les fragments et les sites d’allocation.
Transparence de Distribution &
mise à jour
Fragments de EMP
Requête : EMP1 = ENum,Name,Sal,TaxDNum10 (EMP)
EMP2 = ENum,MNum,DNumDNum10 (EMP)
Update Dnum=15 EMP3 = ENum,Name,DNumDnum>10 (EMP)
for Employee with EMP4 = ENum,MNum,Sal,TaxDnum>10 (EMP)
Enum=100
EMP1 EMP2
EnumName Sal Tax EnumMnumDnum
• Envoi de mise à 100 Ann 100 10 100 20 3
jour à toutes les
copies
• Migration de
tuple si mise à EMP3 EMP4
jour d’attributs de
definition de EnumName Dnum EnumMnum Sal Tax
fragments 100 Ann 15 100 20 100 10
Application de mise à jour

Transparence de
UPDATE Emp
SET DNum = 15 Localisation
WHERE ENum = 100;
(1) Select Name, Tax, Sal into $Name, $Sal, $Tax
From EMP 1
Where ENum = 100;
Transparence de (2) Select MNum into $MNum
Fragmentation From Emp 2
Where ENum = 100;
(3) Insert into EMP 3 (ENum, Name, DNum)
(100, $Name, 15);
(4) Insert into EMP 4 (ENum, Sal, Tax, MNum)
(100, $Sal, $Tax, $MNum);
(5) Delete EMP 1 where ENum = 100;
(6) Delete EMP 2 where ENum = 100;
Traitement et Optimisation de
Requêtes Distribuées

 Traitement de requêtes
 Décomposition de requête

 Localisation de données

Optimisation de requêtes distribuées


Traitement de requêtes

 On considère un extrait de la base de données


EMP (ENO, ENAME, TITLE)
ASG (ENO, PNO, RESP, DUR)

 Fragments de EMP et ASG


EMP1 =  Eno  “E3” (EMP)
EMP2 =  Eno > “E3” (EMP)

ASG1 =  Eno  “E3” (ASG)


ASG2 =  Eno > “E3” (ASG)
15
Traitement de requêtes (centralisé)
SELECT ENAME
FROM EMP E, ASG G
WHERE E.ENO = G.ENO AND resp=“Manager”

 Stratégie 1:  ENAME  Re sp "manager " E .ENO G .ENO E  G 

 Stratégie 2:  ENAME E  ENO  Re sp "manager " G 


Stratégie 2 est meilleure (évite le produit cartésien).

16
Traitement de requêtes (Distribuées)
Doit aussi prendre en compte les aspects suivants :

 Coût de communication (inter sites)


 Sélection des sites d’exécution de la requête
 Décomposition de requête
 Localisation des données (allocation et
Réplication)

17
Traitement de requêtes (Distribuées)
Doit aussi prendre en compte les aspects suivants :
SELECT ENAME
FROM EMP E, ASG G
WHERE E.ENO = G.ENO AND resp=“Manager”

Sites et placement
des fragments

18
Traitement de requêtes (Distribuées)
Deux stratégies d’exécution :

Stratégie 1:
Transférer les fragments et faire les traitements
sur le site de la requête (Site 5)
Site 5
Result = (EMP1  EMP2) ⋈ ENO TITLE=“manager” (ASG1  ASG2)
ASG1 ASG2 EMP1 EMP2

Site 1 Site 2 Site 3 Site 4


Coûts de communication assez importants
19
Traitement de requêtes (Distribuées)
Stratégie 2:
Traitements locaux sur les sites des fragments et
transfert des résultats vers d’autres sites

Result = (EMP1 ’  EMP2 ’) Site 5


EMP1’ EMP2’
Site 3 Site 4
EMP1’ = EMP1 ⋈ ENO ASG1’ EMP2’ = EMP2 ⋈ ENO ASG2’
ASG1’ ASG2’
Site 1 Site 2
ASG1’ =  Resp =“manager” (ASG1) ASG2’ =  Resp =“manager” (ASG2)
20
Coût d’exécution des Stratégies

 On suppose
 size(EMP)=400, size(ASG)=1000
 20 tuples avec TITLE=“manager”
 Coût d’accès à 1 tuple = 1 unite ()
 Transfert d’1 tuple = 10 unités ( )
 ASG and EMP indexés sur les attributs Resp et
ENO respectivement

21
Coût d’exécution des Stratégies

 Stratégie 1
 Transfert EMP vers site 5: 400*  4000
 Transfert ASG vers site 5: 1000*  10000
 Calcul de ASG’: 1000*  1000
 Jointure EMP et ASG’: 400*20*  8000
Coût Total 23,000

 Stratégie 2
 Calcul de ASG’: (10+10)*  20
 Transfert ASG’ vers le site de EMP: (10+10)*  200
 Calcul de EMP’: (10+10)*  * 2 40
 Transfert de EMP’ vers site résultat : (10+10)*  200
Coût Total 460
22
Optimisation

 Minimiser la fonction d’optimisation suivante

Coût I/O + Coût CPU + Coût communication


avec des pondérations différentes selon les environnements
distribués

23
Coût de Communication

 Réseaux WAN (Wide area network)


 Coût de communication est plus important
 Faible bande passante
 Vitesse réduite
 Overhead (assez élevé)
 Réseaux locaux (LAN : Local area network)
 Coût de communication
 Considérer une fonction d’optimisation
incluant plusieurs coûts (avec ou sans
communication)
24
Statistiques d’optimisation

 Relation
 Cardinalité
 Taille de tuple
 Fraction ou pourcentage de tuples sélectionnés par les
jointures avec d’autres relations
 Attributs
 Cardinalité de domaine
 Nombre de valeurs distinctes
 Hypothèses courantes
 Independence des attributs (valeurs)
 Distribution uniforme des valeurs d’attributs 25
Niveaux de Traitement de requêtes
Requêtes sur Relations Globales Distribuées

DECOMPOSITION SCHEMA
REQUËTES GLOBAL

Requêtes sur Relations Distribuées


SITE DE
CONTROLE LOCALISATION SCHEMA
DONNEES FRAGMENT
Requêtes Fragments
OPTIMIZATION STATISTIQUES
GLOBALE FRAGMENTS
Requêtes Fragments Optimisées
(avec Communication)
SITE
LOCAL LOCAL SCHEMA
OPTIMIZATION LOCAL

Requêtes Locales Opimisées 26


Graphe de requêtes

 Types de nœuds
 Nœud Résultat (spécifie le résultat de la requête)
 Nœud Opérande (représente une relation utilisée par
la requête)
 Types d’arcs
 Arc jointure : Pas de nœuds résultats
 Arc projection : un des nœuds connecté est un noeud
résultat
 Nœuds et Arcs peuvent avoir des labels
(prédicats de sélection, jointure ou attributs de
projection)

27
Exemple : Graphe de requête

SELECT ENAME, RESP


FROM EMP,ASG,PROJ
WHERE EMP.ENO=ASG.GNO
AND ASG.PNO=PROJ.PNO AND PNAME=“CAD/CAM”
AND DUR>36
AND TITLE=“Programmer”

28
Exemple : Graphe de jointure

Sous graphe du graphe de requête composé de


jointures.

29
Requête, Graphe de requête, Arbre de
requête

Graphe de requête

Requête en SQL

Graphe de jointure Nœud RESULT correspond


au résultat de la requête,
c’est à dire les projections

30
Analyse de requête

 Une requête (forme normale conjonctive) est


incorrecte si le graphe de requête
correspondant n’est pas connecté.

31
Exemple : graphe de requête
 Exemple
SELECT ENAME, RESP
FROM EMP,ASG,PROJ
WHERE EMP.ENO=ASG.GNO
AND ASG.PNO=PROJ.PNO
AND PNAME=“CAD/CAM”
AND DUR>36
AND TITLE=“Programmer”

32
Exemple : graphe de requête

33
Anomalies de requête, Graphe de requête
non connecté

Jointure ou produit cartésien


implicite entre ASG et PROJ?

34
Réduction par Sélection sur FHP

REQUETE SQL
Fragments de EMP
SELECT * EMP1 = ENO “E3” (EMP)
FROM EMP
WHERE ENO=“E5”
EMP2 =  “E3” < ENO “E6” (EMP)
EMP3 = ENO >“E6” (EMP)

Relation R, FR={R1, R2, …, Rn} avec


Rj =pj(R) pi(Rj) =  if x  R: (pi(x)pj(x))

ENO=“E5”
ENO=“E5” ENO=“E5”

EMP EMP1 EMP2 EMP3 EMP2


35
Réduction par Jointure de FHP

SELECT *
FROM EMP, ASG ENO
WHERE EMP.ENO=ASG.ENO


ENO
ASG1 ASG2 EMP1 EMP2 EMP3
ASG EMP

Fragments de EMP
Fragments de ASG
EMP1 = ENO “E3” (EMP)
ASG1 = ENO “E3” (ASG)
EMP2 =  “E3” < ENO “E6” (EMP)
ASG2 = ENO >“E3” (ASG)
EMP3 = ENO >“E6” (EMP)
36
Réduction par Jointure de FHP

ENO (R1  R2) S 


(R1 S)  (R2 S)
 

ASG1 ASG2 EMP1 EMP2 EMP3

ENO ENO ENO ENO ENO ENO

EMP1 ASG1 EMP1 ASG2 EMP2 ASG1 EMP2 ASG2 EMP3 ASG1 EMP3 ASG2

37
Réduction par Jointure de FHP

ENO ENO ENO

EMP1 ASG1 EMP2 ASG2 EMP3 ASG2

Ri =pi(R) and Rj =pj(R)


Ri Rj =  if x  Ri , y Rj: (pi(x)pj(y))

Réduction par Jointure


1. Distribuer jointure sur union
2. Eliminer les fragments inutiles

38
Réduction par Fragmentation Verticale

 Déterminer les relations intermédiaires inutiles Relation


R définie sur les attributs A = {A1, A2, …, An}
 Un fragment vertical Ri =A’ (R) où A’ A
 La relation D (Ri) est inutile si l’ensemble des
attributs de projection D n’est pas inclus dans A’

EMP1= ENO,ENAME (EMP)


EMP2= ENO,TITLE (EMP) ENAME ENAME

SELECT ENAME ENO


FROM EMP
EMP1 EMP2 EMP1
39
Réduction par Fragmentation Dérivée FHD

EMP1: TITLE=“Programmer” (EMP)


EMP2: TITLE“Programmer” (EMP)
ASG1: ASG ENO EMP1
ASG2: ASG ENO EMP2
ENO

TITLE=“MECH. Eng.”

 
SELECT *
FROM EMP, ASG ASG1 ASG2 EMP1 EMP2
WHERE ASG.ENO = EMP.ENO
AND EMP.TITLE = “Mech. Eng.”

40
Réduction par Fragmentation Dérivée FHD

ENO
Sélection en
premier Jointure sur union
TITLE=“Mech. Eng.”

ASG1 ASG2 EMP2 

ENO ENO ENO

TITLE=“Mech. Eng.” TITLE=“Mech. Eng.” TITLE=“Mech. Eng.”

ASG2
ASG1 EMP2 ASG1 EMP2 ASG1
ASG2 EMP2
41
OPTIMISATION DE
REQUÊTES DISTRIBUÉES
Processus d’optimisation de requêtes
(même chose en Français)

Requête

Génération de Règles de
transformation
l’espace des
de requêtes
solutions

Plan d’exécution
de requête

Stratégie de Modèle de coût


selection de plan de requête
d’exécution

Meilleur Plan d’exécution de requête 43


Espace des solutions

 Il contient plusieurs plans d’exécution


(alternatives)
 Arbres de Jointures : représentent les plans
d’exécution
 Pour N relations, il y a O(N!) arbres de jointures
équivalents
 Arbres de jointures équivalents par application des
règles de commutativité et d’associativité)

44
Exemples : Arbres de jointures équivalents

SELECT ENAME, RESP


FROM EMP, ASG, PROJ
WHERE EMP.ENO = ASG.ENO AND ASG.PNO=PROJ.PNO
(a) PNO (b) ENO

ENO PROJ PNO EMP


EMP ASG
PROJ ASG

(c) ENO,PNO

X ASG Quel plan choisir?


Et pourquoi?
PROJ EMP 45
Réduire l’espace des solutions

 Usage d’heuristiques pour éliminer des plans


d’exécution
 Faire les opérations unaires (Sélection, Projection)
quand on accède aux relations
 Eviter les produits cartésiens (non présents dans la

requête)
 E.g., dans l’exemple précèdent, rejeter le plan d’exécution

(c) ENO,PNO

X ASG
PROJ EMP 46
Parcours espace de solutions

 Déterministe
Construire tous les plans possibles (breadth-first
search), choisir le meilleur plan
 Algorithme glouton (Greedy algorithm) construire un
seul plan (depth-first search) : besoin d’heuristique
d ’optimisation à chaque étape (peut être non optimal)

47
Performance : Coûts

 Coût Total (Temps)


Coût Total = coût CPU + coût I/O + Communication
CPU coût = Coût instructions ou traitements
I/O coût = Coût E/S disque
Communication = Init message + transmission

 Temps Réponse
 Entre début et fin résultat

48
Exemple
 Considérer uniquement les coûts de communication

Site 1 X unités de données

Site 3

Site 2 y unités de données

Coût Total = 2 ∗ Coût Init message + Transmission-unité ∗ (x+y)

Temps Réponse = Max {(coût envoi de x de site 1 vers site 3),


(coût envoi de y de site 2 vers site 3) }
Données - Statistiques d’optimisation

 Facteurs importants :
 Taille des relations intermédiaires

 Besoin d’estimer les tailles des relations


intermédiaires en fonction des tailles des
attributs et des relations
 Précision  Collecte et sauvegarde coûteuse de
données

50
Facteurs de Sélectivité

 Facteur de Sélectivité (probabilité de sélection


des données ou tuples d’une relation)

 Jointure des relations R et S


card ( R >< S )
SF>< ( R, S ) 
card ( R)* card (S )

Difficultés : Comment calculer la taille de card (R join S) ?


Les cardinalités de R et S sont connues

51
System R - Exemple

Requête :
“Find names of employees working on the CAD/CAM
project.”
 On suppose
 EMP avec un indexe sur ENO
 ASG avec un indexe sur PNO
 PROJ avec un indexe sur PNO et un autre sur PNAME

ASG
ENO PNO

EMP PROJ 52
System R - Exemple

 Méthodes d’accès des relations EMP, ASG et PROJ


 EMP: séquentielle (scan) (pas de sélection sur EMP)
 ASG: séquentielle (scan) (pas de sélection sur ASG)
 PROJ: indexe sur PNAME (il y a une sélection sur PROJ basé
PNAME)
 Déterminer le meilleur ordre de jointures
 EMP ASG PROJ
 ASG PROJ EMP
 PROJ ASG EMP
 ASG EMP PROJ
 EMP  PROJ ASG
 PROJ  EMP ASG
Choisir le meilleur ordonnancement basé sur les coûts
d’exécution de jointures 53
System R - Exemple

 Meilleur ordonnancement de jointures :


Jointures possibles

EMP ASG PROJ

EMP ASG EMP × PROJ ASG EMP ASG PROJ PROJ ASG PROJ × EMP

(ASG EMP) PROJ (PROJ ASG) EMP

(ASG EMP) PROJ (PROJ ASG) EMP


54
System R - Exemple

 (PROJ ASG) EMP :


 plan basé sur indexe sur l’attribut de sélection et

 des accès efficaces sur les attributs de jointure de ASG


et EMP.

 Plan final d’exécution :


 select PROJ utilisant l’indexe sur PNAME
 Jointure avec ASG utilisant l’indexe sur PNO
 Jointure avec EMP utilisant l’indexe sur ENO

55
Ordonnancement de jointures dans les
requêtes fragments

 Ordonnancement de jointures
 Distributed INGRES
 System R*

 Ordonnancement de Semijoin
 SDD-1

56
Ordonnancement de jointures

 Jointure de 2 relations R, S
if size (R) < size (S)
R S
if size (R) > size (S)

 Transfert et calcul de la jointure sur le site de R si |R|


< |S|
 Transfert et calcul de la jointure sur le site de S si |R|
> |S|
 Objectif : Minimiser la quantité de données transférées
Ordonnancement de jointures

 Jointure de n (n>2) relations R, S


 Plus difficile car il y plusieurs alternatives
d’ordonnancement
 Nécessité de calculer le coût de chaque ordonnacement
 Nécessité de calculer les tailles de relations
intermédiaires
 Utiliser des heuristiques pour réduire la quantité de
calculs
Exemple : Ordonnancement de jointures

Soit : PROJ ⋈PNO ASG ⋈ENO EMP

avec une répartition des relations EMP, ASG et PROJ sur 3


sites Site1, Site2 et Site3 comme suit :

59
Exemple : Ordonnancement de jointures
PROJ ⋈PNO ASG ⋈ENO EMP
 Exécution 1:
1. EMP  Site 2
Site 2 calcule EMP’=EMP⋈ASG
EMP’  Site 3
Site 3 calcule EMP’⋈PROJ

Résultat final

60
Exemple : Ordonnancement de jointures
PROJ ⋈PNO ASG ⋈ENO EMP
2. ASG  Site 1
Site 1 computes EMP’=EMP⋈ASG
EMP’  Site 3
Site 3 computes EMP’⋈PROJ

Résultat final
EMP’ = EMP ⋈ ASG

61
Exemple : Ordonnancement de jointures
PROJ ⋈PNO ASG ⋈ENO EMP
3. ASG  Site 3
Site 3 calcule ASG’=ASG⋈PROJ
ASG’  Site 1
Site 1 calcule ASG’⋈EMP

Résultat final
ASG’ = ASG ⋈ PROJ

62
Exemple : Ordonnancement de jointures
PROJ ⋈PNO ASG ⋈ENO EMP

4. PROJ  Site 2
Site 2 computes PROJ’=PROJ⋈ASG
PROJ’  Site 1
Site 1 computes PROJ’ ⋈ EMP

Résultat final

PROJ’ = PROJ ⋈ ASG

63
Exemple : Ordonnancement de jointures
PROJ ⋈PNO ASG ⋈ENO EMP

5. EMP  Site 2
PROJ  Site 2
Site 2 calcule EMP⋈ PROJ⋈ASG

Résultat final
EMP ⋈ ASG ⋈ PROJ

64
Ordonnancement de jointures
Algorithmes par Semi-jointure

 Inconvénients de l’ordonnancement de jointures


 Transfert de relations complètes (qui contient des
tuples inutiles)
 Utilisation de Semi-jointures permet de réduire la taille
des relations transférées

 Semi-jointure est efficace si le coût de production


et d’envoi de résultats intermédiaires est moins
que l’envoi de relations entières

65
Ordonnancement de jointures
Algorithmes par Semi-jointure

On considère la jointure R ⋈A S de 2 relations


R[A] placée sur Site 1
S[A] placée sur Site 2
 Deux choix possibles :
 Calculer la jointure R ⋈A S
 Calculer une des opérations équivalentes suivantes de
semi-jointures
 (R A S ) ⋈A S
 R ⋈A (S A R )
 (R A S ) ⋈A (S AR )

66
Ordonnancement de jointures
Algorithmes par Semi-jointure : Exemple

 Calculer la jointure R ⋈A S
 envoi de R[A] placée sur le site Site 2
 site 2 calcule la jointure
 Calculer la semi-jointure ( R > A S ) >< A S :
 S’ = A(S), par site 2
 S’  Site 1
 Site 1 calcule R '  R > A S '
 R’  Site 2
 Site 2 calcule R ' >< A S
 Semi-jointure est meilleure si
(size( A (S ))  size( R > A S ))  size( R) 67
Exemple : R ⋈A S par
R ⋈A (S A R )
A C
A B 3 x
R 2 a S 10 y
10 b 15 z
25 c A (R) = [2,10,25,30] 25 w
30 d 32 x
Traitement local
A C
A B C 10 y
S R=
R S = 10 b y 25 w
25 c w
SITE 1 SITE 2
68
Exemple : R ⋈A S par
R ⋈A (S A R )
A B A C
R 2 a S 3 x
10 b 10 y
25 c 15 z
30 d 25 w
32 x
Résultats intermédiaires:
• avec la semi-jointure R (S R):
T = 4 |A| +2 |A+C| + result
• avec la jointure R S: mieux si
T = 4 |A+B| + result |B| est grand
69
En générale:

 Si R est la plus petite relation


 (R A S) A S est mieux que R A S si
size (A S) + size (R S) < size (R)
A
 Similaire pour les autres semi-jointures
 Attention : Seul le coût de transfert est pris en
compte

70
Ordonnancement de jointures
Algorithmes par Semi-jointure : Exemple

 Autre technique pour calcul de la semi-jointure


(réduction de coûts de communication)
Encoder A S (or A R ) par un bit vector
Clé dans S
001101000010100
<----1 bit/ clé possible ------->
Semi-jointure de R est l’ensemble des tuples
ayant "1" dans les mêmes positions que S

71
Algorithme Hill Climbing

Considérer jointures de 3 relations


Etape 1: Traitement initial
Etape 2: Choisir une solution initiale plausible (ES0)
2.1 Déterminer les sites candidats pour résultat final –
sites contenant les relations de la requête
2.2 Calculer les coûts de transferts de toutes les relations
vers un site candidat
2.3 ES0 est le plan avec un coût minimum

72
Algorithme Hill Climbing

Etape 3: Diviser le plan initial ES0 en nouveau plan


{ES1, ES2}
3.1 ES1 envoie une relation vers le site d’une autre
relation
3.2 ES2 envoie le résultat de la jointure de l’étape 3.1
vers le site résultat final
Etape 4: Remplacer ES0 par le nouveau plan {ES1, ES2} si

coût(ES1) + coût(jointure) + coût(ES2) < coût(ES0)

73
Algorithme Hill Climbing

Etape 5: Répéter les étapes 3–4 sur les plans ES1 et


ES2
Vérification et élimination de transmissions
Etape 6:
redondantes dans le plan final

74
Algorithme Hill Climbing - Exemple

 Requête : Salaires des ingénieurs qui travaillent sur un projet


CAD/CAM? Relation Taille Site
EMP 8 1
PAY 4 2
PROJ 1 3
ASG 10 4
 Requête Algèbre relationnelle :
SAL(PAY ⋈ TITLE(EMP ⋈ENO (ASG ⋈PNO(σ PNAME=“CAD/CAM” (PROJ)))))
Données :
 Taille d’une relation égale cardinalité de la relation

 Minimiser le coût total

 Transmission unitaire entre deux sites égale 1

 Ignorer les coûts de traitements

75
Algorithme Hill Climbing - Exemple

Etape 1 : Traitement initial


Sélection sur PROJ : cardinalité du résultat égale 1

Relation Taille Site


EMP 8 1
PAY 4 2
PROJ 1 3
ASG 10 4

76
Algorithme Hill Climbing - Exemple

Etape 2: Solution initiale plausible (ES0)


Choix 1: Site résultat = Site 1
Coût = coût(PAY→Site 1) + coût(ASG→Site 1) + coût(PROJ→Site 1)
= 4 + 10 + 1 = 15
Choix 2: Site résultat = Site 2
Coût = coût(EMP→Site 2) + coût(ASG→Site 2) + coût(PROJ→Site 2)
= 8 + 10 + 1 = 19
Choix 3: Site résultat = Site 3
Coût = coût(PAY→Site 3) + coût(ASG→Site 3) + coût(EMP→Site 3)
= 4 + 10 + 8 = 22
Choix 4: Site résultat = Site 4
Coût = coût(EMP →Site 4) + coût(PAY →Site 4) + coût(PROJ→Site 4)
= 8 + 4 + 1 = 13
Solution initiale ES0:{EMP → Site 4; PAY → Site 4; PROJ → Site 4}

77
Algorithme Hill Climbing - Exemple

Etape 3: Remplacement de ES0 par division


 Choix 1: {ES1, ES2, ES3} avec
 ES1: EMP → Site 2
 ES2: (EMP ⋈ PAY) → Site 4

 ES3: PROJ → Site 4

Site 4 Site 4 ASG


ASG

ES0 ES2 ES3


ES0 ES0

EMP PAY PROJ EMP PAY PROJ


ES1

Site 1 Site 2 Site 3 Site 1 Site 2 Site 3 78


Algorithme Hill Climbing - Exemple

Etape 3: Remplacement de ES0 par division


 Choix 2: {ES1, ES2, ES3} avec
 ES1: PAY → Site 1
 ES2: (PAY ⋈ EMP) → Site 4

 ES3: PROJ → Site 4

Site 4 Site 4 ASG


ASG

ES0 ES2 ES3


ES0 ES0

EMP PAY PROJ EMP PAY PROJ


ES1

Site 1 Site 2 Site 3 Site 1 Site 2 Site 3 79


Algorithme Hill Climbing - Exemple

Etape 4: Déterminer les coûts des nouveaux plans


coût(Choix 1) = coût(EMP→Site 2) + coût((EMP ⋈ PAY)→Site 4)
+ coût(PROJ → Site 4)
= 8 + 8 + 1 = 17
coût(Choix 2) = coût(PAY→Site 1) + coût((PAY ⋈ EMP)→Site 4)
+ coût(PROJ → Site 4)
= 4 + 8 + 1 = 13
Décision : Pas de division
Etape 5: ES0 est une meilleure solution
Etape 6: Pas de transmissions redondantes.

80
Algorithme Hill Climbing : conclusions

 Algorithme glouton  A partir d’un plan initial,


l’algorithme cherche à l’améliorer par divisions
successives
 Problème
 Stratégies avec des coûts initiaux élévés sont rejetés par
l’algorithme, même si elles peuvent aboutir à de
meilleurs coûts finaux.
 Algorithme peut être guidé vers minimum local et ne
pas atteindre un minimum global
Algorithme Hill Climbing : conclusions

 Contre-Exemple : Une meilleure stratégie ignorée


par l’exemple précédent :

PROJ → Site 4
ASG’ = (PROJ ⋈ ASG) → Site 1 Site1
EMP(8)
(ASG’ ⋈ EMP) → Site 2
Coût Total = 1 + 2 + 2 = 5 Site2
PAY(4)

Site4
Site3 ASG(10)
PROJ(1)
82
Hill revisité : exemple

R S T V A B C
R S T V
Rel Site Taille |tuple| = 1
R 1 10
S 2 20
Minimiser :
T 3 30 Coût de transfert de données
V 4 40

83
Plan initial : Transférer les relations vers
un site. Mais lequel?

Vers quel site envoyer les relations?


site 1: coût=20+30+40=90
site 2: coût=10+30+40=80
site 3: coût=10+20+40=70
site 4: coût=10+20+30=60

Meilleure alternative

84
Hill climbing revisité
Plan initial

P0: R (1  4)
S (2  4)
T (3  4)
calculer R S T V sur site 4

85
Hill climbing revisité
recherche locale

 recherche locale : alternative en envoyant une


relation vers les voisins au lieu du site final

4 4 R S
R
S
1 2 1 2
R

86
Hill climbing revisité

on suppose que R S = 20
S T=5
T V=1
Alternative 1
4 S 4 20
10 R 20 R S
10
1 2 1 2
R

coût = 30 cost = 30
Pas d'amélioration 87
Hill climbing revisité

Alternative 2

4 S 4
R S R
10 20 20
1 20
2 1 S 2
cost = 30 cost = 40
Coût plus élévé

88
Hill climbing revisité

Alternative 3

4 4
S T T S
5
20 30 30
2 3 2 3
coût = 50
T
coût = 35
Un meilleur plan

89
Hill climbing revisité

Alternative 4

4 T 4
S S T
5
20 30 20
2 3 2 S 3
coût = 50 coût = 25
C'est encore mieux

90
Hill climbing revisité

Le plan initial peut être remplacé par le plan suivant

P1: P1a: S (2  3)
ST = S T
P1b: R (1  4)
ST (3  4)
réponse calculée sur site 4

91
Hill climbing revisité
Répétition de la recherche locale
traiter ST = S T comme une relation
4
ST R
R
4
ST vs 1 ST 3
1 3 4
R ST
1 3
R

92
Algorithme SDD-1:

 Hill Climbing, en mieux.


 Utilisation importante de Semi-jointures

 Algorithme de type glouton : choisir une solution


initiale qui est améliorée itérativement
 But : optimiser une fonction (Objective function)
en s’appuyant sur :
 Temps total de communication
 Statistiques des relations (profiles)

93
Algorithme SDD-1:

 Etape primordial de SDD-1 : déterminer des


ordonnancements de semi-jointures bénéfiques :
 coûts inférieurs aux gains obtenus (transferts de semi-
jointures au lieu de relations entières
 Coût (R A S) = CMSG + CTR* taille (A(S))
 Gain (R A S) = (1-SF (S.A)) * taille (R) * CTR
 Semi-jointure bénéfique si :
 coût < gain

CMSG coût initial de message


CTR : temps unitaire de transfert .

94
Algorithme SDD-1:

 Phase initiale : générer toutes les semi-jointures


bénéfiques
 Choisir la semi-jointure le plus bénéfique
 Modifier les statistiques et générer de nouvelles
semi-jointures bénéfiques
 Répéter les étapes ci-dessus jusqu’au traitement
complet des semi-jointures bénéfiques
 Choisir le site final de calcul de la requête
 Post-optimisation pour supprimer les semi-
jointures inutiles
95
Etapes de l’algorithme SDD-I

Initialisation
Etape 1: Inclure les traitements locaux dans le plan
ou stratégie d’exécution (ES)
Etape 2: Modifier les statistiques pour prendre en
compte les traitements locaux
Etape 3: Construire l’ensemble (BS) des semi-
jointures :
BS = Ø
Pour chaque semi-jointure Sji faire
BS ← BS ∪ SJi si coût (SJi ) < gain (SJi)

96
Algorithme SDD-I - Exemple

Soit la requête
SELECT R3.C
FROM R1, R2, R3
WHERE R1.A = R2.A AND R2.B = R3.B

Graphe de requête

Site 1 Site 2 Site 3


A B
R1 R2 R3

97
Algorithme SDD-I - Exemple

Statistiques ou profiles des relations


relation card Taille tuple Taille relation
R1 30 50 1500
R2 100 30 3000
R3 50 40 2000

attribut SF Taille(attribute)
R1.A 0.3 36
R2.A 0.8 320
R2.B 1.0 400
R3.B 0.4 80
98
Algorithme SDD-I - Exemple

 Semi-jointure bénéfiques:
 SJ1 = R2 R1
 Gain : 2100 = (1 – 0.3)∗3000
 Coût : 36
 SJ2 = R2 R3
 Gain : 1800 = (1 – 0.4) ∗3000
 Coût : 80
 Semi-jointures non bénéfiques :
 SJ3 = R1 R2
 Gain : 300 = (1 – 0.8) ∗1500
 Coût 320
 SJ4 = R3 R2
 Gain : 0
 Coût 400

99
Algorithme SDD-I - Exemple

Etapes et Itérations de SDD-1


Etape 4: Choisir SJi le plus bénéfique de BS et
l’ajouter à ES
Etape 5: Mise à jour des statistiques
correspondantes
Etape 6: Mise à jour de BS
 Calculer les valeurs à jour de gain/coût
 Déterminer nouvelles semi-jointures à ajouter à BS

Etape 7: si BS ≠ Ø, itérer étape 4-7.

100
Algorithme SDD-I - Exemple

Itération 1:
 Supprimer SJ1 de BS et l’ajouter à ES.
 Mise à jour des statistiques

Taille (R2) = 900 (= 3000∗0.3)


SF (R2.A) = 0.8∗0.3 = 0.24
Card(R2.A) = 320*0.3 = 96

101
Algorithme SDD-I - Exemple

Itération 2:
 2 semi-jointures bénéfiques :
 SJ2 = R2’ R3
 Gain : 540 = (1–0.4) ∗900
 Coût : 80
 SJ3 = R1 R2‘
 Gain : 1140=(1–0.24)∗1500
 Coût : 96
 Ajouter SJ3 to ES
 Mise à jour

taille (R1) = 360 (= 1500∗0.24)


SF (R1.A) = 0.3∗0.24 = 0.072

102
Algorithme SDD-I - Exemple

Itération 3:
 Plus de semi-jointures bénéfiques
 Ajouter la semi-jointure restante SJ2 à ES.

 Mise à jour statistiques

taille (R2) = 360 (= 900*0.4)


mettre à jour les autres statistiques

103
Algorithme SDD-I - Exemple

Sélection site de calcul final


Etape 8: Déterminer site final en considérant les
tailles des relations sur les différents sites
Exemple:
 Données sur les différents sites :
 Site 1: 360
 Site 2: 360
 Site 3: 2000
 Choisir Site 3.

104
Algorithme SDD-I - Exemple

Post- optimisation
Etape 9: La phase de post-optimisation ne
supprime aucune semi-jointure (toutes les semi-
jointures sont restées bénéfiques).
Etape 10: Permuter les ordres de semi-jointures si
ceci peut améliorer le coût total de ES.

105
Algorithme SDD-I - Exemple

Calcul final

La stratégie d’exécution finale est :


 Envoi de (R2 R1) R3 à site 3
 Envoi de R1 R2 à site 3
 Site 3 calcule le résultat final, c’est-à-dire :

 R1 ⋈ R2 ⋈ R3 =
(R1 R2) ⋈ ( (R2 R1) R3) ) ⋈ R3

106