Vous êtes sur la page 1sur 106
Prélude Traitement de Requête Multi Bases de Données (Plusieurs Bases De Données)
Prélude Traitement de Requête Multi Bases de Données (Plusieurs Bases De Données)

Prélude

Traitement de Requête

Multi Bases de Données

(Plusieurs Bases De Données)

Traitement de requêtes :

3 étapes

Traitement de requêtes : 3 étapes Intégration de Schéma Schéma Local 1 Traducteur 1 Schéma Local

Intégration de Schéma

Schéma Local 1
Schéma Local 1

Traducteur 1

Schéma Local 2
Schéma Local 2

Traducteur 2

Schéma Local 3
Schéma Local 3

Traducteur 3

InS 1 InS 2 InS 3 Q 1,1 Q 1,2 Q 1,3
InS 1
InS 2
InS 3
Q 1,1
Q 1,2
Q 1,3
INTEGRATEUR Q 1 SCG
INTEGRATEUR
Q 1
SCG

Traitement de requêtes :

3 étapes

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

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,3 Q’ 1,2
Schéma Local 1
Schéma Local 2
Schéma Local 3
Q’ 1,
Q’ 1,3
Q’ 1,2
1

Traducteur 1

Traducteur 2

Traducteur 3

InS 1 InS 2 InS 3 Q 1,1 Q 1,2 Q 1,3
InS 1
InS 2
InS 3
Q 1,1
Q 1,2
Q 1,3
INTEGRATEUR Q 1 GCS
INTEGRATEUR
Q 1
GCS

Décomposition

requête

Traitement de requêtes :

3 étapes

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

Combinaison des résultats de requêtes locales

Local Schema 1 Local Schema 2 Local Schema 3 Q’ 1, Q’ 1,3 Q’ 1,2
Local Schema 1
Local Schema 2
Local Schema 3
Q’ 1,
Q’ 1,3
Q’ 1,2
1
Traducteur 1
Traducteur 2
Traducteur 3
InS 1
InS 2
InS 3
Combiner
Q 1,1
Q 1,2
Q 1,3
Résultats
Résultats

Construction résultats

INTEGRATEUR Q 1 GCS
INTEGRATEUR
Q 1
GCS

Traitement de requêtes :

3 étapes

Traitement de requêtes : 3 étapes 1. Requête Globale décomposée en requêtes locales 2. Requêtes

1.

Requête Globale

décomposée en requêtes locales

2.

Requêtes locales

traduites en requêtes des bases de données locales

3.

Combinaison des résultats locaux

IntégrationSchéma

Local Schema 1 Translator 1
Local Schema 1
Translator 1
InS 1
InS 1
Local Schema 2
Local Schema 2

Translator 2

InS 2
InS 2
Local Schema 3
Local Schema 3

Translator 3

InS 3
InS 3

INTEGRATEUR

GCS
GCS

Décomposition de

requête

Requête Globale

Décomposition de requête Requête Globale Décomposition & Optimisation Globale PQ 1 … PQ n SQ 2
Décomposition & Optimisation Globale
Décomposition &
Optimisation Globale

PQ 1

PQ n

Décomposition & Optimisation Globale PQ 1 … PQ n SQ 2 Query traducteur 2 . .
Décomposition & Optimisation Globale PQ 1 … PQ n SQ 2 Query traducteur 2 . .

SQ 2

& Optimisation Globale PQ 1 … PQ n SQ 2 Query traducteur 2 . . .

Query

traducteur 2

.

.

.

.

.

.

SQ n

SQ 1

SQ 1

Query

traducteur 1

Query

traducteur n

TQ n DB n
TQ n
DB n

SQ i sous-requête (langage global de requête)

TQ i Requête Cible (sous- requête locale) langage local de requête

PQ i requêtes post-traitement pour combiner les résultats des sous- requêtes locales

TQ 1 TQ 2 DB 1 DB 2
TQ 1
TQ 2
DB 1
DB 2
Transparence de Distribution & Requêtes
Transparence de Distribution & Requêtes

Transparence de Distribution &

Requêtes

Transparence de Distribution

Transparence de Distribution  Exemple d ’application sur une relation Saisir un “Numéro de fournisseur” et

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 Supplier 2 = City != SFO Supplier sur Site2, Site3

Transparence de Distribution

Transparence de Distribution Transparence de Fragmentation: Supplier 1 read(terminal, $SNum); Select from Name into
Transparence de Fragmentation: Supplier 1 read(terminal, $SNum); Select from Name into $Name Supplier Supplier 2
Transparence de Fragmentation:
Supplier
1
read(terminal, $SNum);
Select
from
Name into $Name
Supplier
Supplier
2
where
SNum = $SNum;
write(terminal, $Name).
Supplier
2

DDBMS

S1

S2

S3

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

Transparence de Distribution

Transparence de Distribution Transparence de Localisation read (terminal, $SNum); Select Name into $Name from

Transparence de Localisation

read(terminal, $SNum);

Select

Name into $Name

from

Supplier 1

where

SNum = $SNum;

If not FOUND then

Select Name into $Name

from

Supplier 2

where

SNum = $SNum;

write(terminal, $Name).

Supplier 1
Supplier
1
SNum = $SNum; write (terminal, $Name). Supplier 1 Supplier 2 Supplier 2 DDBMS S1 S2 S3
SNum = $SNum; write (terminal, $Name). Supplier 1 Supplier 2 Supplier 2 DDBMS S1 S2 S3
Supplier 2 Supplier 2
Supplier
2
Supplier
2

DDBMS

S1

S2

S3

Application indépendante des changements d’allocation de

fragments. Les changements de fragmentation ont un effet sur

l’application

Transparence de Distribution

Transparence de Distribution Transparence de correspondance/mapping Local read (terminal, $SNum); Select Name into

Transparence de correspondance/mapping Local

read(terminal, $SNum);

Select

Name into $Name

from

Supplier 1 @ S1

where

SNum = $SNum;

If not FOUND then

Select

Name into $Name

from

Supplier 2 @ S3

where

SNum = $SNum;

write(terminal, $Name).

Supplier 1
Supplier 1
SNum = $SNum; write (terminal, $Name). Supplier 1 Supplier 2 Supplier 2 DDBMS S1 S2 S3
SNum = $SNum; write (terminal, $Name). Supplier 1 Supplier 2 Supplier 2 DDBMS S1 S2 S3
Supplier 2
Supplier 2
Supplier 2
Supplier 2

DDBMS

S1

S2

S3

Application spécifie les fragments et les sites d’allocation.

Transparence de Distribution &

mise à jour

Transparence de Distribution & mise à jour Requête : Update Dnum=15 for Employee with Enum=100 •

Requête :

Update Dnum=15 for Employee with

Enum=100

Envoi de mise à

jour à toutes les

copies

Migration de tuple si mise à jour d’attributs de definition de fragments

Fragments de EMP

EMP1 = ENum,Name,Sal,Tax DNum10 (EMP) EMP2 = ENum,MNum,DNum DNum10 (EMP) EMP3 = ENum,Name,DNum Dnum>10 (EMP) EMP4 = ENum,MNum,Sal,Tax Dnum>10 (EMP)

EMP1

EMP2

Enum Name Sal Tax Enum Mnum Dnum 100 Ann 100 10 100 20 3 EMP3
Enum
Name
Sal
Tax
Enum
Mnum
Dnum
100 Ann
100 10
100
20
3
EMP3
EMP4
Enum
Name
Dnum
Enum
Mnum
Sal
Tax
100
Ann
15
100 20
100 10

Application de mise à jour

Application de mise à jour UPDATE Emp SET DNum = 15 WHERE ENum = 100; Transparence

UPDATE Emp

SET DNum = 15

WHERE ENum = 100;

Transparence de Fragmentation
Transparence de
Fragmentation
Transparence de Localisation
Transparence de
Localisation

(1) Select Name, Tax, Sal into $Name, $Sal, $Tax From EMP 1 Where ENum = 100; (2) Select MNum into $MNum 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 
Traitement et Optimisation de Requêtes Distribuées  Traitement de requêtes  Décomposition de requête 

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

Traitement de requêtes  On considère un extrait de la base de données EMP (ENO, ENAME,

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)

Traitement de requêtes (centralisé)

Traitement de requêtes (centralisé) SELECT ENAME FROM EMP E, ASG G WHERE E.ENO = G.ENO AND

SELECT ENAME

FROM

EMP E, ASG G

WHERE E.ENO = G.ENO AND resp=“Manager”

Stratégie 1:

Stratégie 2:

ENAME

Re

sp

"

manager

ENAME

E



ENO

"

E ENO

.

G ENO

.

E

Re sp"manager"

G

G

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

Traitement de requêtes (Distribuées)

Traitement de requêtes (Distribuées) Doit aussi prendre en compte les aspects suivants :  Coût de

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)

Traitement de requêtes (Distribuées)

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

Doit aussi prendre en compte les aspects suivants :

SELECT ENAME

FROM

EMP E, ASG G

WHERE

E.ENO = G.ENO AND resp=“Manager”

: SELECT ENAME FROM EMP E, ASG G WHERE E.ENO = G.ENO AND resp=“Manager” Sites et

Sites et placement des fragments

18

Traitement de requêtes (Distribuées)

Traitement de requêtes (Distribuées) Deux stratégies d’exécution : Stratégie 1 : Transférer les fragments et faire

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 = (EMP 1 EMP 2 )

ENO TITLE=“manager” (ASG 1 ASG 2 )

ASG 1 Site 1
ASG 1
Site 1
ASG 2 Site 2
ASG 2
Site 2
EMP 1 Site 3
EMP 1
Site 3
EMP 2 Site 4
EMP 2
Site 4

Coûts de communication assez importants

Traitement de requêtes (Distribuées)

Traitement de requêtes (Distribuées) Stratégie 2 : Traitements locaux sur les sites des fragments et transfert

Stratégie 2:

Traitements locaux sur les sites des fragments et transfert des résultats vers d’autres sites

Result = (EMP 1 EMP 2 ’)

sites Result = (EMP 1 ’  EMP 2 ’) Site 5 Site 4 EMP 1

Site 5

sites Result = (EMP 1 ’  EMP 2 ’) Site 5 Site 4 EMP 1

Site 4

EMP 1

EMP 2

Site 3

EMP 1 ’ = EMP 1

ENO ASG 1

Site 1

ASG

1

EMP 2 ’ = EMP 2

ENO ASG 2

Site 2

ASG

2

ASG 1 = Resp =“manager” (ASG 1 )

ASG 2 = Resp =“manager” (ASG 2 )

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

Coût d’exécution des Stratégies  On suppose  size (EMP)=400, size (ASG)=1000  20 tuples avec

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

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

Coût d’exécution des Stratégies  Stratégie 1  Transfert EMP vers site 5: 400*  4000

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

Optimisation

Optimisation  Minimiser la fonction d’optimisation suivante Coût I/O + Coût CPU + Coût communication avec

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

Coût de Communication

Coût de Communication  Réseaux WAN (Wide area network)  Coût de communication est plus important

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)

Statistiques d’optimisation

Statistiques d’optimisation  Relation  Cardinalité  Taille de tuple  Fraction ou pourcentage de tuples

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

Niveaux de Traitement de requêtes

Niveaux de Traitement de requêtes Requêtes sur Relations Globales Distribuées SITE DE CONTROLE SITE LOCAL DECOMPOSITION

Requêtes sur Relations Globales Distribuées

SITE DE

CONTROLE

SITE

LOCAL

Relations Globales Distribuées SITE DE CONTROLE SITE LOCAL DECOMPOSITION REQUËTES SCHEMA GLOBAL Requêtes sur

DECOMPOSITION

REQUËTES

SCHEMA GLOBAL
SCHEMA
GLOBAL

Requêtes sur Relations Distribuées

LOCALISATION

DONNEES

Requêtes Fragments

SCHEMA FRAGMENT
SCHEMA
FRAGMENT

OPTIMIZATION

GLOBALE

Requêtes Fragments Optimisées (avec Communication)

LOCAL

OPTIMIZATION

Optimisées (avec Communication) LOCAL OPTIMIZATION STATISTIQUES FRAGMENTS SCHEMA LOCAL 26 Requêtes Locales
STATISTIQUES FRAGMENTS
STATISTIQUES
FRAGMENTS
(avec Communication) LOCAL OPTIMIZATION STATISTIQUES FRAGMENTS SCHEMA LOCAL 26 Requêtes Locales Opimisées
SCHEMA LOCAL 26
SCHEMA
LOCAL
26
(avec Communication) LOCAL OPTIMIZATION STATISTIQUES FRAGMENTS SCHEMA LOCAL 26 Requêtes Locales Opimisées

Requêtes Locales Opimisées

Graphe de requêtes

Graphe de requêtes  Types de nœuds  Nœud Résultat (spécifie le résultat de la requête)

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)

Exemple : Graphe de requête

Exemple : Graphe de requête SELECT ENAME, RESP FROM EMP,ASG,PROJ WHERE EMP.ENO=ASG.GNO AND ASG.PNO=PROJ.PNO AND

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”

Exemple : Graphe de jointure

Exemple : Graphe de jointure Sous graphe du graphe de requête composé de jointures. 29

Sous graphe du graphe de requête composé de jointures.

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

Requête, Graphe de requête, Arbre de requête Requête en SQL Graphe de requête Nœud RESULT correspond
Requête, Graphe de requête, Arbre de requête Requête en SQL Graphe de requête Nœud RESULT correspond

Requête en SQL

Graphe de requête

Arbre de requête Requête en SQL Graphe de requête Nœud RESULT correspond au résultat de la
Nœud RESULT correspond au résultat de la requête, c’est à dire les projections
Nœud RESULT correspond
au résultat de la requête,
c’est à dire les projections

Graphe de jointure

de requête Nœud RESULT correspond au résultat de la requête, c’est à dire les projections Graphe

30

Analyse de requête

Analyse de requête  Une requête (forme normale conjonctive) est incorrecte si le graphe de requête

Une requête (forme normale conjonctive) est incorrecte si le graphe de requête

correspondant n’est pas connecté.

Exemple : graphe de requête

Exemple : graphe de requête  Exemple SELECT FROM WHERE AND ENAME, RESP EMP,ASG,PROJ EMP.ENO=ASG.GNO ASG.PNO=PROJ.PNO

Exemple SELECT FROM WHERE AND

ENAME, RESP EMP,ASG,PROJ EMP.ENO=ASG.GNO

ASG.PNO=PROJ.PNO

AND

PNAME=“CAD/CAM”

AND

DUR>36

AND

TITLE=“Programmer”

Exemple : graphe de requête

Exemple : graphe de requête 33
Exemple : graphe de requête 33

Anomalies de requête, Graphe de requête

non connecté

Anomalies de requête, Graphe de requête non connecté Jointure ou produit cartésien implicite entre ASG et
Anomalies de requête, Graphe de requête non connecté Jointure ou produit cartésien implicite entre ASG et
Jointure ou produit cartésien implicite entre ASG et PROJ?
Jointure ou produit cartésien
implicite entre ASG et PROJ?
Anomalies de requête, Graphe de requête non connecté Jointure ou produit cartésien implicite entre ASG et

34

Réduction par Sélection sur FHP

Réduction par Sélection sur FHP REQUETE SQL SELECT * FROM WHERE ENO=“E5” EMP Fragments de EMP

REQUETE SQL SELECT *

FROM

WHERE ENO=“E5”

EMP

Fragments de EMP EMP1 = ENO E3 (EMP)

EMP2 = “E3” < ENO“E6” (EMP)

EMP3 = ENO >E6 (EMP)

Relation R, R j =pj (R)

F R ={R 1 , R 2 , …, R n } avec pi (R j ) = if x R: (p i (x)p j (x))

ENO=“E5”

EMP

(p i (x)  p j (x))  ENO=“E5” EMP  ENO=“E5”  EMP1 EMP2 EMP3

ENO=“E5”

 ENO=“E5”  EMP1 EMP2 EMP3

 ENO=“E5”  EMP1 EMP2 EMP3
 ENO=“E5”  EMP1 EMP2 EMP3

EMP1

EMP2

EMP3

j (x))  ENO=“E5” EMP  ENO=“E5”  EMP1 EMP2 EMP3  ENO=“E5” EMP2 35

ENO=“E5”

EMP2

35

Réduction par Jointure de FHP

Réduction par Jointure de FHP SELECT * FROM WHERE EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1

SELECT *

FROM

WHERE EMP.ENO=ASG.ENO

EMP, ASG

ENO

ENO

FHP SELECT * FROM WHERE EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1 ASG1 ENO  
ASG
ASG
EMP
EMP
ASG1 ASG1
ASG1 ASG1

ENOWHERE EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1 ASG1   ASG2 EMP1 EMP2 EMP3 Fragments

EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1 ASG1 ENO   ASG2 EMP1 EMP2 EMP3 Fragments
EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1 ASG1 ENO   ASG2 EMP1 EMP2 EMP3 Fragments

EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1 ASG1 ENO   ASG2 EMP1 EMP2 EMP3 Fragments
EMP.ENO=ASG.ENO EMP, ASG ENO ASG EMP ASG1 ASG1 ENO   ASG2 EMP1 EMP2 EMP3 Fragments

ASG2

EMP1

EMP2

EMP3

Fragments de ASG ASG1 = ENO E3 (ASG) ASG2 = ENO >E3 (ASG)

Fragments de EMP EMP1 = ENO E3 (EMP)

EMP2 = “E3” < ENO“E6” (EMP)

EMP3 = ENO >E6 (EMP)

Réduction par Jointure de FHP

Réduction par Jointure de FHP ASG1 ASG1 (R1  R2) (R1 S  S)  (R2

Réduction par Jointure de FHP ASG1 ASG1 (R1  R2) (R1 S  S)  (R2

ASG1

ASG1

(R1 R2)

(R1

(R1  R2) (R1 S  S)  (R2 S)

S

(R1  R2) (R1 S  S)  (R2 S)

S) (R2

(R1  R2) (R1 S  S)  (R2 S)

S)

ASG1 ASG1 (R1  R2) (R1 S  S)  (R2 S) ENO  ASG2 

ENOASG1 ASG1 (R1  R2) (R1 S  S)  (R2 S)  ASG2  EMP1

ASG1 (R1  R2) (R1 S  S)  (R2 S) ENO  ASG2  EMP1
 ASG2
ASG2

R2) (R1 S  S)  (R2 S) ENO  ASG2  EMP1 EMP2 EMP3 

EMP1

EMP2

EMP3

S  S)  (R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO
S  S)  (R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO

S)  (R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO ENO ENO
S)  (R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO ENO ENO
ENO
ENO
S)  (R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO ENO ENO
ENO
ENO
 (R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO ENO ENO ENO
ENO
ENO
(R2 S) ENO  ASG2  EMP1 EMP2 EMP3  ENO ENO ENO ENO ENO ENO
ENO
ENO
ENO
ENO
ENO
ENO

EMP1

ASG1

EMP1

ASG2

EMP2

ASG1

EMP2

ASG2

EMP3

ASG1

EMP3

ASG2

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

Réduction par Jointure de FHP

Réduction par Jointure de FHP  ENO ENO ENO EMP1 ASG1 EMP2 ASG2 EMP3 ASG2 R
Réduction par Jointure de FHP  ENO ENO ENO EMP1 ASG1 EMP2 ASG2 EMP3 ASG2 R
Réduction par Jointure de FHP  ENO ENO ENO EMP1 ASG1 EMP2 ASG2 EMP3 ASG2 R

 ENO ENO ENO EMP1 ASG1 EMP2 ASG2 EMP3 ASG2
ENO
ENO
ENO

ENO

ENO

ENO

 ENO ENO ENO EMP1 ASG1 EMP2 ASG2 EMP3 ASG2

EMP1

ASG1

EMP2

ASG2

EMP3

ASG2

R i =pi (R) and R j =pj (R)

R i

i =  p i (R) and R j =  p j (R) R i

Rj = if x R i , yR j : (p i (x)p j (y))

Réduction par Jointure 1. Distribuer jointure sur union

2. Eliminer les fragments inutiles

Réduction par Fragmentation Verticale

Réduction par Fragmentation Verticale  Déterminer les relations intermédiaires inutiles Relation R définie sur les

Déterminer les relations intermédiaires inutiles Relation R définie sur les attributs A = {A1, A2, , An}

Un fragment vertical R i =A (R) où AA La relation D (R i ) est inutile si l’ensemble des attributs de projection D n’est pas inclus dans A

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

SELECT ENAME

FROM

EMP

  ENAME ENAME ENO EMP1 EMP2 EMP1
ENAME
ENAME
ENO
EMP1
EMP2
EMP1

Réduction par Fragmentation Dérivée FHD

Réduction par Fragmentation Dérivée FHD E M P 1 :  TITLE=“Programmer” ( E M P

EMP1: TITLE=“Programmer” (EMP)

EMP2: TITLE“Programmer” (EMP)

ASG1: ASG ASG2: ASG

E N O EMP1 E N O EMP2 ENO EMP1
E N O EMP1 E N O EMP2 ENO EMP2

SELECT *

FROM

WHERE ASG.ENO = EMP.ENO AND EMP.TITLE = “Mech. Eng.”

EMP, ASG

= EMP.ENO AND EMP.TITLE = “Mech. Eng.” EMP, ASG ASG1 ASG1 ENO   TITLE=“MECH. Eng.”

ASG1

ASG1

ENO

ENO


AND EMP.TITLE = “Mech. Eng.” EMP, ASG ASG1 ASG1 ENO   TITLE=“MECH. Eng.”  EMP1

TITLE=“MECH. Eng.”

AND EMP.TITLE = “Mech. Eng.” EMP, ASG ASG1 ASG1 ENO   TITLE=“MECH. Eng.”  EMP1

EMP1 EMP2
EMP1
EMP2

ASG2

Réduction par Fragmentation Dérivée FHD

Réduction par Fragmentation Dérivée FHD ENO Sélection en premier   TITLE=“Mech. Eng.” EMP2 ASG1 ASG1
ENO

ENO

Sélection en

premier


Fragmentation Dérivée FHD ENO Sélection en premier   TITLE=“Mech. Eng.” EMP2 ASG1 ASG1 ASG2 Jointure

TITLE=“Mech. Eng.”

EMP2

ASG1 ASG1
ASG1
ASG1

ASG2

  TITLE=“Mech. Eng.” EMP2 ASG1 ASG1 ASG2 Jointure sur union  ENO  TITLE=“Mech. Eng.”

Jointure sur union

Eng.” EMP2 ASG1 ASG1 ASG2 Jointure sur union  ENO  TITLE=“Mech. Eng.” ASG1ASG2 EMP2 ENO

Eng.” EMP2 ASG1 ASG1 ASG2 Jointure sur union  ENO  TITLE=“Mech. Eng.” ASG1ASG2 EMP2 ENO
ENO  TITLE=“Mech. Eng.” ASG1ASG2 EMP2
ENO
 TITLE=“Mech. Eng.”
ASG1ASG2
EMP2
ENO ENO  TITLE=“Mech. Eng.”  TITLE=“Mech. Eng.” ASG1ASG1 EMP2 ASG1ASG2 EMP2
ENO
ENO
 TITLE=“Mech. Eng.”
 TITLE=“Mech. Eng.”
ASG1ASG1
EMP2
ASG1ASG2
EMP2
OPTIMISATION DE REQUÊTES DISTRIBUÉES

OPTIMISATION DE

REQUÊTES DISTRIBUÉES

Processus d’optimisation de requêtes

(même chose en Français)

d’optimisation de requêtes (même chose en Français) Requête Génération de l’espace des solutions Plan

Requête

de requêtes (même chose en Français) Requête Génération de l’espace des solutions Plan

Génération de l’espace des solutions

Plan d’exécution de requête

l’espace des solutions Plan d’exécution de requête Règles de transformation de requêtes Stratégie de
Règles de transformation de requêtes
Règles de
transformation
de requêtes

Stratégie de

selection de plan

d’exécution

Modèle de coût de requête
Modèle de coût
de requête
de selection de plan d’exécution Modèle de coût de requête Meilleur Plan d’exécution de requête 43

Espace des solutions

Espace des solutions  Il contient plusieurs plans d’exécution (alternatives)  Arbres de Jointures :

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é)

Exemples : Arbres de jointures équivalents

Exemples : Arbres de jointures équivalents SELECT FROM WHERE EMP.ENO = ASG.ENO AND ASG.PNO=PROJ.PNO ENAME, RESP

SELECT

FROM

WHERE EMP.ENO = ASG.ENO AND ASG.PNO=PROJ.PNO

ENAME, RESP EMP, ASG, PROJ

(a) PNO ENO PROJ EMP ASG
(a)
PNO
ENO
PROJ
EMP
ASG

(c)

(c) PROJ ENO,PNO X EMP ASG

PROJ

ENO,PNO

ENO,PNO

ENO,PNO

X

(c) PROJ ENO,PNO X EMP ASG

EMP

(c) PROJ ENO,PNO X EMP ASG

ASG

(b)

ENO

(b) ENO PNO PROJ ASG EMP
PNO PROJ ASG
PNO
PROJ
ASG
(b) ENO PNO PROJ ASG EMP

EMP

Quel plan choisir?

Et pourquoi?

45

Réduire l’espace des solutions

Réduire l’espace des solutions  Usage d’heuristiques pour éliminer des plans d’exécution  Faire les

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)

(c) PROJ ENO,PNO X EMP ASG

PROJ

ENO,PNO

ENO,PNO

ENO,PNO

X

(c) PROJ ENO,PNO X EMP ASG

EMP

(c) PROJ ENO,PNO X EMP ASG

ASG

46

Parcours espace de solutions

Parcours espace de solutions  Déterministe  Construire tous les plans possibles (breadth-first search), choisir

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)

Performance : Coûts

Performance : Coûts  Coût Total (Temps) Coût Total = coût CPU + coût I/O +

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

Exemple

Exemple  Considérer uniquement les coûts de communication Site 1 X unités de données Site 2

Considérer uniquement les coûts de communication

Site 1 X unités de données
Site 1
X unités de données
Site 2 y unités de données
Site 2
y unités de données
Site 3
Site 3

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

Données - Statistiques d’optimisation  Facteurs importants :  Taille des relations intermédiaires  Besoin

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

Facteurs de Sélectivité

Facteurs de Sélectivité  Facteur de Sélectivité (probabilité de sélection des données ou tuples d’une

Facteur de Sélectivité (probabilité de sélection des données ou tuples d’une relation)

Jointure des relations R et S

SF

><

(

R S

,

)

card 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

System R - Exemple Requête : “ Find names of employees working on the CAD/CAM project.

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
ASG
ENO
PNO
EMP
PROJ

52

System R - Exemple

System R - Exemple  Méthodes d’accès des relations EMP, ASG et PROJ  EMP: séquentielle

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

 EMP ASG PROJ

ASG

ASG PROJ

PROJ

ASG

 ASG PROJ EMP

PROJ

PROJ

EMP

PROJ

ASG

ASG PROJ  ASG PROJ EMP  PROJ  ASG ASG EMP EMP PROJ  EMP

ASG

EMPPROJ  ASG PROJ EMP  PROJ  ASG ASG EMP PROJ  EMP  PROJ

PROJ  ASG PROJ EMP  PROJ  ASG ASG EMP EMP PROJ  EMP 

EMP

PROJ ASG PROJ EMP  PROJ  ASG ASG EMP EMP  EMP  PROJ ASG

EMP

PROJ

ASG EMP  PROJ

PROJ

EMP

ASG PROJ  EMP

Choisir le meilleur ordonnancement basé sur les coûts d’exécution de jointures

53

System R - Exemple

System R - Exemple  Meilleur ordonnancement de jointures : Jointures possibles EMP EMP ASG PROJ

Meilleur ordonnancement de jointures :

R - Exemple  Meilleur ordonnancement de jointures : Jointures possibles EMP EMP ASG PROJ ASG
R - Exemple  Meilleur ordonnancement de jointures : Jointures possibles EMP EMP ASG PROJ ASG

Jointures possibles

EMP

EMP

ASG

PROJ

de jointures : Jointures possibles EMP EMP ASG PROJ ASG EMP × PROJ ASG EMP ASG

ASG

de jointures : Jointures possibles EMP EMP ASG PROJ ASG EMP × PROJ ASG EMP ASG
de jointures : Jointures possibles EMP EMP ASG PROJ ASG EMP × PROJ ASG EMP ASG
de jointures : Jointures possibles EMP EMP ASG PROJ ASG EMP × PROJ ASG EMP ASG

EMP × PROJ ASG

EMP ASG

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

PROJ

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

PROJ

PROJ ASG

ASG

PROJ × EMP

 

(ASG

  (ASG EMP)

EMP)

(ASG

(ASG EMP) PROJ

EMP)

EMP)

PROJ

ASG PROJ PROJ ASG PROJ × EMP   (ASG EMP) (ASG EMP) PROJ PROJ (PROJ ASG)

PROJ

(PROJ

ASG PROJ PROJ ASG PROJ × EMP   (ASG EMP) (ASG EMP) PROJ PROJ (PROJ ASG)

ASG)

ASG PROJ PROJ ASG PROJ × EMP   (ASG EMP) (ASG EMP) PROJ PROJ (PROJ ASG)

EMP

(PROJ

(PROJ ASG) EMP

ASG)

(PROJ ASG) EMP

EMP

System R - Exemple

System R - Exemple  (PROJ ASG) EMP :  plan basé sur indexe sur l’attribut

(PROJ

System R - Exemple  (PROJ ASG) EMP :  plan basé sur indexe sur l’attribut

ASG)

System R - Exemple  (PROJ ASG) EMP :  plan basé sur indexe sur l’attribut

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

Ordonnancement de jointures dans les

requêtes fragments

Ordonnancement de jointures dans les requêtes fragments  Ordonnancement de jointures  Distributed INGRES 

Ordonnancement de jointures

Distributed INGRES

System R*

Ordonnancement de Semijoin

SDD-1

Ordonnancement de jointures

Ordonnancement de jointures  Jointure de 2 relations R, S R if size ( R )

Jointure de 2 relations R, S

R
R

if size (R) < size (S)

S
S

if size (R) > size (S)

Transfert et calcul de la jointure sur le site de R < |S|

si |R|

Transfert et calcul de la jointure sur le site de S > |S|

si |R|

Objectif : Minimiser la quantité de données transférées

Ordonnancement de jointures

Ordonnancement de jointures  Jointure de n (n>2) relations R, S  Plus difficile car il

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

Exemple : Ordonnancement de jointures Soit : PROJ ⋈ P N O ASG ⋈ E N

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 :

⋈ E N O EMP avec une répartition des relations EMP, ASG et PROJ sur 3

Exemple : Ordonnancement de jointures

Exemple : Ordonnancement de jointures  Exécution 1: 1. EMP  Site 2 PROJ ⋈ P

Exécution 1:

1. EMP Site 2

PROJ PNO ASG ENO EMP

Site 2 calcule EMP’=EMPASG

EMP’ Site 3 Site 3 calcule EMP’PROJ

E N O EMP Site 2 calcule EMP’=EMP ⋈ ASG EMP’  Site 3 Site 3

Résultat final

Exemple : Ordonnancement de jointures

Exemple : Ordonnancement de jointures 2. ASG  Site 1 PROJ ⋈ P N O ASG

2. ASG Site 1

PROJ PNO ASG ENO EMP

Site 1 computes EMP’=EMPASG EMP’ Site 3

Site 3 computes EMP’PROJ

EMP’ = EMP ⋈ ASG
EMP’ = EMP ⋈ ASG

Résultat final

Exemple : Ordonnancement de jointures

Exemple : Ordonnancement de jointures 3. ASG  Site 3 PROJ ⋈ P N O ASG

3. ASG Site 3

PROJ PNO ASG ENO EMP

Site 3 calcule ASG’=ASGPROJ ASG’ Site 1 Site 1 calcule ASG’EMP

Résultat final

ASG’ = ASG ⋈ PROJ
ASG’ = ASG ⋈ PROJ

Exemple : Ordonnancement de jointures

Exemple : Ordonnancement de jointures PROJ ⋈ P N O ASG ⋈ E N O EMP

PROJ PNO ASG ENO EMP

4. PROJ Site 2 Site 2 computes PROJ’=PROJASG PROJ’ Site 1 Site 1 computes PROJ’ EMP

Résultat final

PROJ’ = PROJ ⋈ ASG
PROJ’ = PROJ ⋈ ASG

Exemple : Ordonnancement de jointures

Exemple : Ordonnancement de jointures 5. EMP  Site 2 PROJ ⋈ P N O ASG

5. EMP Site 2

PROJ PNO ASG ENO EMP

PROJ Site 2 Site 2 calcule EMPPROJASG

Résultat final

EMP ASG PROJ

⋈ E N O EMP PROJ  Site 2 Site 2 calcule EMP ⋈ PROJ ⋈

Ordonnancement de jointures Algorithmes par Semi-jointure

Ordonnancement de jointures Algorithmes par Semi-jointure  Inconvénients de l’ordonnancement de jointures 

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

Ordonnancement de jointures

Algorithmes par Semi-jointure

Ordonnancement de jointures Algorithmes par Semi-jointure On considère la jointure R ⋈ A S de 2

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

R A (S

(R

A S ) ⋈ A S A S ) A S

de semi-jointures  (R  R ⋈ A (S  (R A S ) ⋈ A

A R )

A S ) ⋈ A (S A S ) A (S

de semi-jointures  (R  R ⋈ A (S  (R A S ) ⋈ A

A R )

Ordonnancement de jointures

Algorithmes par Semi-jointure : Exemple

de jointures Algorithmes par Semi-jointure : Exemple  Calculer la jointure R ⋈ A S 

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

S= A (S), par site 2

S’ Site 1

Site 1 calcule

R’ Site 2

Site 2 calcule

R

'

R >S

A

'

R ><

S

A

'

(

)

R >S >< S

A

A

:

Semi-jointure est meilleure si

(

(

size

A

(

S

))

(

size R >

A

S

))

(

size R

)

67

Exemple : R A S

R A (S

Exemple : R ⋈ A S R ⋈ A (S A R ) par A C

A R )

par

Exemple : R ⋈ A S R ⋈ A (S A R ) par A C
A C A B 3 x R 10 y 2 a S 15 z 10
A
C
A
B
3
x
R
10
y
2
a
S
15
z
10
b
25
w
25
c
A (R) = [2,10,25,30]
32
x
30
d
Traitement local
A
C
A
B
C
10
y
S
R =
10
b
y
R
S =
25
w
25
c
w
SITE 1
SITE 2
68
 

Exemple : R A S

par

 

R A (S

A R )

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ésultats intermédiaires: • avec la semi-jointure R (S R): T = 4 |A| +2 |A+C| +
Résultats intermédiaires: • avec la semi-jointure R (S R): T = 4 |A| +2 |A+C| +

R):

T = 4 |A| +2 |A+C| + result

avec la semi-jointure R (S R): T = 4 |A| +2 |A+C| + result • avec

avec la jointure R S:

T = 4 |A+B| + result

R (S R): T = 4 |A| +2 |A+C| + result • avec la jointure R

mieux si

|B| est grand

69

En générale:

En générale:  Si R est la plus petite relation  (R A S) A S

Si R est la plus petite relation

(R

En générale:  Si R est la plus petite relation  (R A S) A S

A

S)

 Si R est la plus petite relation  (R A S) A S est mieux

A

S est mieux que

R

est la plus petite relation  (R A S) A S est mieux que R A

A

S si

size (A S) + size (R

A S) A S est mieux que R A S si size (  A S)

A

S) < size (R)

Similaire pour les autres semi-jointures

Attention : Seul le coût de transfert est pris en

compte

Ordonnancement de jointures

Algorithmes par Semi-jointure : Exemple

de jointures Algorithmes par Semi-jointure : Exemple  Autre technique pour calcul de la semi-jointure

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

 A S (or  A R ) par un bit vector Clé dans S 0

0 0 1 1 0 1 0 0 0 0 1 0 1 0 0

<----1 bit/ clé possible ------->

Semi-jointure de R est l’ensemble des tuples

ayant "1" dans les mêmes positions que S

Algorithme Hill Climbing

Algorithme Hill Climbing Considérer jointures de 3 relations Etape 1 : Traitement initial Etape 2 :

Considérer jointures de 3 relations Etape 1: Traitement initial

Etape 2: Choisir une solution initiale plausible (ES 0 )

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 ES 0 est le plan avec un coût minimum

Algorithme Hill Climbing

Algorithme Hill Climbing Etape 3: Diviser le plan initial ES 0 en nouveau plan { ES

Etape 3: Diviser le plan initial ES 0 en nouveau plan {ES 1 , ES 2 }

3.1 ES 1 envoie une relation vers le site d’une autre relation

3.2 ES 2 envoie le résultat de la jointure de l’étape 3.1

vers le site résultat final Etape 4: Remplacer ES 0 par le nouveau plan {ES 1 , ES 2 } si

coût(ES 1 ) + coût(jointure) + coût(ES 2 ) < coût(ES 0 )

Algorithme Hill Climbing

Algorithme Hill Climbing Etape 5: Répéter les étapes 3 – 4 sur les plans ES 1

Etape 5: Répéter les étapes 34 sur les plans ES 1 et ES 2 Etape 6: Vérification et élimination de transmissions redondantes dans le plan final

Algorithme Hill Climbing - Exemple

Algorithme Hill Climbing - Exemple  Requête : Salaires des ingénieurs qui travaillent sur un projet

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

CAD/CAM?

Requête Algèbre relationnelle :

Relation

Relation

EMP

PAY

PROJ

ASG

Taille

8

4

1

10

Site

1

2

3

4

4

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

Algorithme Hill Climbing - Exemple

Algorithme Hill Climbing - Exemple Etape 1 : Traitement initial Sélection sur PROJ : cardinalité du

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

Relation

Relation

EMP

PAY

PROJ

ASG

Taille

8

4

1

10

Site

1

2

3

4

4

Algorithme Hill Climbing - Exemple

Algorithme Hill Climbing - Exemple Etape 2: Solution initiale plausible (ES0) Choix 1 : Site résultat

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}

Algorithme Hill Climbing - Exemple

Algorithme Hill Climbing - Exemple Etape 3: Remplacement de ES0 par division  Choix 1 :

Etape 3: Remplacement de ES0 par division Choix 1: {ES 1 , ES 2 , ES 3 } avec

ES 1 : EMP → Site 2 ES 2 : (EMP PAY) → Site 4

ES 3 : PROJ → Site 4

Site 4 ASG ES0 ES0 ES0 EMP PAY PROJ Site 1 Site 2 Site 3
Site 4
ASG
ES0
ES0
ES0
EMP
PAY
PROJ
Site 1
Site 2
Site 3
ASG ES3 PAY PROJ
ASG
ES3
PAY
PROJ

Site 4

ES0 ES0 EMP PAY PROJ Site 1 Site 2 Site 3 ASG ES3 PAY PROJ Site

ES2

EMP ES1
EMP
ES1

Site 1

Site 2

Site 3

78

Algorithme Hill Climbing - Exemple

Algorithme Hill Climbing - Exemple Etape 3: Remplacement de ES0 par division  Choix 2 :

Etape 3: Remplacement de ES0 par division Choix 2: {ES 1 , ES 2 , ES 3 } avec

ES 1 : PAY → Site 1 ES 2 : (PAY EMP) → Site 4

ES 3 : PROJ → Site 4

Site 4 ASG ES0 ES0 ES0 EMP PAY PROJ Site 1 Site 2 Site 3
Site 4
ASG
ES0
ES0
ES0
EMP
PAY
PROJ
Site 1
Site 2
Site 3
ASG ES3 PAY PROJ
ASG
ES3
PAY
PROJ

Site 4

ES2
ES2
ES0 ES0 EMP PAY PROJ Site 1 Site 2 Site 3 ASG ES3 PAY PROJ Site
EMP ES1
EMP
ES1

Site 1

Site 2

Site 3

79

Algorithme Hill Climbing - Exemple

Algorithme Hill Climbing - Exemple Etape 4: Déterminer les coûts des nouveaux plans coût ( Choix

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: ES 0 est une meilleure solution Etape 6: Pas de transmissions redondantes.

Algorithme Hill Climbing : conclusions

Algorithme Hill Climbing : conclusions  Algorithme glouton  A partir d’un plan initial, l’algorithme cherche

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

Algorithme Hill Climbing : conclusions  Contre-Exemple : Une meilleure stratégie ignorée par l’exemple

Contre-Exemple : Une meilleure stratégie ignorée par l’exemple précédent :

PROJ → Site 4

ASG’ = (PROJ ASG) → Site 1 (ASG’ EMP) → Site 2

Coût Total = 1 + 2 + 2 = 5

Site1 EMP(8) Site2 PAY(4) Site4 ASG(10)
Site1
EMP(8)
Site2
PAY(4)
Site4
ASG(10)
Site3 PROJ(1)
Site3
PROJ(1)

82

Hill revisité : exemple

Hill revisité : exemple R S T V Rel Site Taille R 1 10 S 2
R S T V Rel Site Taille
R
S
T
V
Rel
Site
Taille

R

1

10

S

2

20

T

3

30

V

4

40

A B C R S T V
A
B
C
R
S
T
V

|tuple| = 1

Minimiser :

Coût de transfert de données

Plan initial : Transférer les relations vers

un site. Mais lequel?

: Transférer les relations vers un site. Mais lequel? Vers quel site envoyer les relations? site

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

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

Meilleure alternative

Hill climbing revisité

Plan initial

Hill climbing revisité Plan initial P 0 : R (1  4) S (2  4)

P0:

R (1 4) S (2 4)

T (3 4)

calculer

R

Hill climbing revisité Plan initial P 0 : R (1  4) S (2  4)

S

Hill climbing revisité Plan initial P 0 : R (1  4) S (2  4)

T

Hill climbing revisité Plan initial P 0 : R (1  4) S (2  4)

V sur site 4

Hill climbing revisité

recherche locale

Hill climbing revisité recherche locale  recherche locale : alternative en envoyant une relation vers les

recherche locale : alternative en envoyant une relation vers les voisins au lieu du site final

4 R S 1 2
4
R
S
1
2
locale : alternative en envoyant une relation vers les voisins au lieu du site final 4
4 R 1 2 R
4 R
1
2
R

S

Hill climbing revisité

Hill climbing revisité on suppose que R S T S = 20 T = 5 V

on suppose que

R

S

T

S = 20Hill climbing revisité on suppose que R S T T = 5 V = 1 Alternative

T = 5Hill climbing revisité on suppose que R S T S = 20 V = 1 Alternative

V = 1Hill climbing revisité on suppose que R S T S = 20 T = 5 Alternative

Alternative 1 4 S R 10 20 1 2
Alternative 1
4
S
R
10
20
1
2
4 20 R S 10 1 2 R
4
20
R
S
10
1
2
R

coût = 30

cost = 30 Pas d'amélioration

87

Hill climbing revisité

Hill climbing revisité Alternative 2 4 S R 10 20 1 2 cost = 30 S

Alternative 2

4 S R 10 20 1 2
4
S
R
10
20
1
2

cost = 30

S

Coût plus élévé

4 R 20 20 1 2 S cost = 40
4
R
20
20
1
2
S
cost = 40

Hill climbing revisité

Hill climbing revisité Alternative 3 4 S T 2 20 30 3 coût = 50 T

Alternative 3

4 S T 2 20 30 3 coût = 50
4
S
T
2 20
30
3
coût = 50

T

4 S 5 30 2 3 T coût = 35
4
S
5
30
2
3
T
coût = 35

Un meilleur plan

Hill climbing revisité

Hill climbing revisité Alternative 4 4 T S 20 2 30 3 coût = 50 C'est

Alternative 4

4 T S 20 2 30 3 coût = 50
4
T
S
20
2
30
3
coût = 50

C'est encore mieux

4 S T 5
4
S
T
5
2
2

20

revisité Alternative 4 4 T S 20 2 30 3 coût = 50 C'est encore mieux

S

3
3

coût = 25

Hill climbing revisité

Hill climbing revisité Le plan initial peut être remplacé par le plan suivant P 1 :

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

P1:

P1a:

P1b:

S (2 3)

ST = S

T

le plan suivant P 1 : P 1 a: P 1 b: S (2  3)

R (1 4) ST (3 4) réponse calculée sur site 4

Hill climbing revisité

Hill climbing revisité Répétition de la recherche locale traiter ST = S 4 R ST 1

Répétition de la recherche locale

traiter ST = S

4 R ST 1 3
4
R
ST
1
3
de la recherche locale traiter ST = S 4 R ST 1 3 T comme une

T comme une relation

vs

4 ST R 1 3 ST 4 R ST 1 3 R
4
ST
R
1
3
ST
4
R
ST
1
3
R

Algorithme SDD-1:

Algorithme SDD-1:  Hill Climbing, en mieux.  Utilisation importante de Semi-jointures  Algorithme de type

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)

Algorithme SDD-1:

Algorithme SDD-1:  Etape primordial de SDD-1 : déterminer des ordonnancements de semi-jointures bénéfiques : 

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

Gain (R

au lieu de relations entières  Coût (R  Gain (R A S) = C M

A S) = C MSG + C TR * taille (A (S))

S) = C M S G + C T R * taille (  A (S))

A S) = (1-SF (S.A)) * taille (R) * C TR

 A (S)) A S) = (1-SF (S.A)) * taille (R) * C T R 

Semi-jointure bénéfique si :

coût < gain

CMSG coût initial de message CTR : temps unitaire de transfert .

Algorithme SDD-1:

Algorithme SDD-1:  Phase initiale : générer toutes les semi-jointures bénéfiques  Choisir la semi-jointure le

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

Etapes de l’algorithme SDD-I

Etapes de l’algorithme SDD -I Initialisation Etape 1 : Inclure les traitements locaux dans le plan

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 Sj i faire

BS BS SJ i

si coût (SJ i ) < gain (SJ i )