Вы находитесь на странице: 1из 33

BASE DE DONNÉES AVANCÉES

4ème séance

Année universitaire : 2018-2019


1
Traitement & Optimisation de
Requêtes Réparties

2
Introduction
 Les règles d'exécution et les méthodes d'optimisation de requêtes
définies pour un contexte centralisé sont toujours valables dans le
contexte des bases de données réparties,

 Mais, il faut prendre en considération :


 d'une part la fragmentation et la répartition des données sur
différents sites et
 d'autre part le coût de communication entre sites pour transférer
les données.
Mise à jour des BD réparties
 La principale difficulté réside dans le fait qu'une mise à jour
dans une relation du schéma global se traduit par plusieurs
mises à jour dans différents fragments.

 Il faut donc identifier les fragments concernés par l'opération


de mise à jour, puis décomposer l'opération en un ensemble
d'opérations de mises à jour sur ces fragments.
Mise à jour des BD réparties
Insertion :

Retrouver les fragments horizontaux concernés en


utilisant les conditions qui définissent les fragments
horizontaux, puis insertion du tuple dans tous les
fragments verticaux correspondants.
Mise à jour des BD réparties
Suppression :

Rechercher le tuple dans les fragments qui sont


susceptibles de contenir le tuple concerné, et
supprimer les valeurs d'attribut du tuple dans tous les
fragments verticaux.
Mise à jour des BD réparties
Modification :

Rechercher les tuples, les modifier et les déplacer vers


les bons fragments si nécessaire.
Mise à jour des BD réparties
Exercice 1:
Compte (NoClient, Agence, TypeCompte, Somme).
1. Proposer un schéma de fragmentation de la relation compte en tenant compte
des requêtes suivantes :
R1 = π NoClient, Agence, Somme (σ (TypeCompte = 'courant') and (Somme > 100 000) Compte)
R2 = π NoClient, TypeCompte (σ Agence = 'Lausanne‘ Compte)

Rq : tous les types de compte sont distingués selon la somme (> ou < 100 000)

2. Déterminer les fragments mis à jour par les requêtes suivantes :

 Création d'un nouveau compte pour un client.


INSERT INTO compte VALUES (184 177, Genève, courant, 350 000) ;

 Ajout de 80 000 francs sur le compte courant d'un client.


UPDATE Compte
SET somme = somme + 80 000
WHERE NoClient = 177 498 AND TypeCompte = 'courant' ;

Rq : la nouvelle somme est égale à 114 564.


Mise à jour des BD réparties
Exercice 2 :
On considère une table CUISINIER que l'on se propose
de répartir en fragments.

Proposer un schéma de fragmentation de la relation compte


en tenant compte des requêtes suivantes :
R1 = π Numero, Nom (σ (prenom = ‘Jean') and (Nom LIKE ‘%R%' ) Cuisinier)
R2 = π Numero, Prenom, Numeq (σ NumEq = 1 Cuisinier)

1. Déterminer les fragments mis à jour par les requêtes suivantes :

 Insertion d’un nouveau cuisinier dans la table CUISINIER


INSERT INTO CUISINIER VALUES (21, 'DUBOUT', 'Jean', 2);

 Suppression du cuisinier Jean DUPONT :


DELETE FROM CUISINIER WHERE nom = 'DUPONT' AND prenom = 'Jean' ;
Requêtes sur les BDs réparties

Comme pour le traitement de requêtes en Bases de données


centralisées, on produit l'arbre algébrique de la requête.
 Chaque feuille de l'arbre représente une relation, et
 chaque nœud représente une opération algébrique.
 On enrichit l’arbre en précisant sur quel site chaque opération
doit être exécutée
Requêtes sur les BDs réparties

Exemples d’arbre algébrique :


R1= σ nom=’Saleh’(Employé)
R2= πnom,salaire,Datenaiss (R1)

πnom,salaire,Datenaiss

σ nom=’Saleh’

Employé
Requêtes sur les BDs réparties

Exemples d’arbre algébrique :


R3= σ NomDept=’Marketing’ (Departement)
R4= Employe ∞ R3 (Employé.Numdep= R3.Numdep)
R5= π NumSS,Nom(R4)
π NumSS,Nom

∞ Numdep= Numdep

σ NomDept=’Marketing’

Employé Département
Requêtes sur lesBDs réparties
Exemples d’arbre algébrique :
R6= σ lieu=’Madrid’ (Projet)
R7= EmpProj ∞ R6 (EmpProj.NuSS=R6.NuSS)
R8= σNbHeure≥30 (R7)
R9= Employe ∞ R8(Employe. NumSS = R8.NumSS)
R10= π nom (R9) π nom

∞ NumSS = NumSS

σNbHeure≥30

∞ NuSS=NuSS

σ lieu=’Madrid’

Projet EmpProj Employé


Requêtes sur les BDs réparties
Localisation des données
Cette étape permet de translater une requête en algèbre
relationnelle exprimée par le schéma global de la base de
données en une requête exprimée par les schémas locaux
(l’ensemble des fragments)

Soit la base de données suivante:


E (Enum, Enom, Titre, Salaire)
/* E est la relation employé */
P (Pnum, Pnom, Budget)
/* P est la relation projet */
EP(Enum, Pnum, Resp, Dur)
Requêtes sur les BDs réparties
Localisation des données

• Les requêtes utilisant des relations fragmentées horizontalement


Exemple:
On considère que la relation employé (E) est fragmenté comme suit:
E1= Enum<6(E).
E2= Enum  6(E).
La relation est obtenue par l’union E1 E2
Soit la requête: Enum=5
SELECT * 
FROM E
WHERE Enum=5. E1 E2
Requêtes sur les BDs réparties
Localisation des données

 Cette requête peut être simplifiée requête réduite.


Les règles de réduction permettent d’identifier les fragments générant des
relations vides.
Sélection: on considère une relation R fragmentée horizontalement en R1,
R2,…Rn tel que Rj= Pj (R).
Règle 1: Pi (Rj)=  si  x un tuple de R :(Pi(x)Pj(x))
Pi et Pj sont des prédicats de sélection.
Exemple: on considère la requête:
SELECT * FROM E WHERE Enum=5.
D’après la règle1, si on applique le prédicat de sélection « Enum=5 » pour le
fragment E2 on obtient une relation vide. Donc la requête est réduite comme
suit  Enum=5

E1
Requêtes sur les BDs réparties
Localisation des données
Jointure: on peut détecter les jointures inutiles en se basant sur la règle suivante:
Règle 2: Ri  Rj=  si  x un tuple de Rj  y un tuple de Ri :(Pi(x)Pj(y))
Ri et Rj sont deux fragments définis respectivement par les prédicats Pi et Pj
Exemple: on considère la requête:
SELECT * FROM E ,EP WHERE E.Enum=EP.Enum
On considère que EP est fragmentée comme suit:
EP1= Enum <6(EP)
EP2= Enum  6(EP)

Enum

  Enum Enum

E1 E2 EP1 EP2 E1 EP1 E2 EP2

Requête Générique Requête Réduite


Requêtes sur les BDs réparties
Fragmentation verticale

On considère que la relation Employé E est fragmentée verticalement comme


suit:
E1= Enum, Enom( E )
E2= Enum, Titre( E )

 La relation E est reconstruite par une opération de jointure.


E= E1 E2
 Les requêtes utilisant des relations fragmentées verticalement peuvent être
réduites en éliminant les opérations inutiles. Pour ce faire, on utilise la
règle suivante:
Règle3: on pose Ri = A’( R )
D( Ri ) est inutile si l’ensemble des attributs D intersection A’ égale au
vide
Requêtes sur les BDs réparties
Fragmentation verticale
Exemple:
Soit la requête:
SELECT Enom
FROM E

Eno Eno

Enum

E1 E2 E1

Requête Générique Requête réduite


Requêtes sur les BDs réparties

La complexité d’une requête dans une base de données répartie est définie en
fonction des facteurs suivants :

 Entrées/ Sorties sur les disques : c’est le coût d’accès aux données.

 Coût CPU : c’est le coût de traitement de données pour exécuter les


opérations algébriques (jointures, sélections ...).

 Communication sur le réseau : c’est le temps nécessaire pour échanger un


volume de données entre des sites participant à l’exécution d’une requête.

Rq : Dans une base de données centralisée, seuls les facteurs E/Ss et CPU
déterminent la complexité d’une requête.
Requêtes sur les BDs réparties
Une distinction est faite entre le coût total et le temps de
réponse global d’une requête:

 Coût total : c’est la somme de tous les temps nécessaires à la


réalisation d’une requête sur les différents sites.

 Temps de réponse global : c’est le temps d’exécution réel d’une


requête. Comme certaines opérations peuvent être effectuées en
parallèle sur plusieurs sites, le temps de réponse global est
généralement inférieur au coût total.
Requêtes sur les BDs réparties
Transferts de données

Le temps de transmission d'un message tient compte du temps


d'accès et de la durée de la transmission (volume des données /
débit de transmission).

Le temps d'accès est négligeable sur un réseau local, mais peut
atteindre quelques secondes pour des transmissions sur de
longues distances.
Requêtes sur les BDs réparties
Transferts de données
Exemple :

Soit la BDR composée des relations suivantes


Produit P (NP, NOMP, MADE_IN, COULEUR, POIDS)

Usine U (NU, VILLEU, NOMU)

Fournisseur F (NF, NOMF, VILLEF, ADRESSE, PAYS)


PUF (NP, NU, NF, DATE, QUANTITE)
• Les relations U et PUF sont sur le siteA.
• Les relations F et P sont sur le site B.
Requêtes sur les BDs réparties
Transferts de données
Le réseau reliant les deux sites A et B a les
caractéristiques techniques suivantes

 temps d'accès d'un site à un autre : 0,5 seconde


 débit de transmission : 1 000 octets d'informations utiles /
secondes)
 Un message est donc transféré en :
(0,5 +Nb- d'octets-du-message /1000) secondes.
Requêtes sur les BDs réparties
Transferts de données

A la requête "Donner les numéros des fournisseurs qui ont


livré un produit italien à une usine située à Lausanne", qui
provient du site B, correspond la requête algébrique suivante :

R1= σ MADE_IN=’ITALIE’ (P)


R2= σ VILLEU=’LAUSANNE’ (U)
R3= R1 ∞ PUF (R1.NP = PUF.NP)
R4= R3 ∞ R2(R3.NU = R2.NU)
R5= R4 ∞ F(R4.NF = F.NF)
R6= π NF (R9)
Requêtes sur les BDs réparties
Transferts de données
Soient les deux stratégies d'exécution envisagées :

 S1 : Sélectionner les produits italiens sur B. Pour chacun de ces


enregistrements, interroger A pour savoir si le produit a été livré dans
une usine de Lausanne et par qui. La réponse contient les numéros (NF)
des fournisseurs qui livrent ce produit à Lausanne.

 S2 : Sélectionner les numéros (NP) des produits italiens sur B.


Transmettre ces numéros au site A en lui demandant qu'il renvoie les
numéros des fournisseurs qui ont livré un de ces produits à une usine de
Lausanne. Le site A transmet un ensemble de numéros de fournisseurs à
B.
Requêtes sur les BDs réparties
Transferts de données
Données statistiques :
 F contient 100 fournisseurs.
P contient 500 produits italiens, qui concernent 800
livraisons à Lausanne.
 Les numéros (NP et NF) sont codés sur 2 octets.
Requêtes sur les BDs réparties
Transferts de données
 Avec la première stratégie, 500 messages contenant un
numéro de produit sont envoyés de B vers A et autant de
réponses (contenant 800 numéro de fournisseurs) sont
renvoyées.

 Le temps de transfert de données est donc au total :


T1 = 500 * (0,5 + 2 / 1000) + 500 * (0,5 + 800 * 2
/1000)= 1401 secondes

 Il s’agit d’un transfert individuel des occurrences


Requêtes sur les BDs réparties
Transferts de données
 Avec la deuxième stratégie S2, un message contenant
500 numéro est envoyé au site A, qui renvoie à B un
message contenant au plus 100 numéros de
fournisseurs (puisqu'il n'y a que 100 fournisseurs dans
la BD).

 Le temps de transfert de données est donc au total :


T2 = 0,5 + (500 * 2) / 1000 + 0,5 + (100 * 2) / 1000
= 2,2 secondes

 Il s’agit de transferts ensemblistes de données


Requêtes sur les BDs réparties
Traitement des requêtes réparties

 Le but est d'affecter de manière optimale un site d'exécution


pour chacune des opérations algébriques de l'arbre.
 Pour cela, on associe à chacune des feuilles le site sur
lequel la relation va être puisée.
 On cherche ensuite à associer à chaque noeud de l'arbre le
site sur lequel l'opération algébrique associée à ce noeud
sera exécutée.
 Généralement, il faut faire localement tous les traitements
qui peuvent y être faits.
Requêtes sur les BDs réparties
Traitement des requêtes réparties
 Pour diminuer le volume de données transmis d'un site à un autre, il faut
limiter les transferts d'information aux seules informations utiles. Pour
cela il faut systématiquement rajouter des projections dans l'arbre
algébrique pour abandonner les attributs inutiles

 Il faut aussi noter que les parties de requêtes indépendantes peuvent être
exécutées en parallèle sur des sites différents et donc abaisser le temps
total d'exécution.
Requêtes sur les BDs réparties
Traitement des requêtes réparties
La requête de l'exemple précédent est décomposée pour être exécutée sur la
BD répartie

 [NOMF,NF]

 [NF]

 [NP]

 [VILLEU = "Lausanne"]  [MADE_IN ="Italie"]

F
A U PUF P B

Exécution d'une requête répartie


Requêtes sur les BDs réparties
Traitement des requêtes réparties
Ceci correspond à la séquence suivante :
 Sur B : R1 = NP MADE_IN = "Italy" P
transmettre R1 à A
 Sur A : R2 = NF (VILLEU = "Lausanne"U
∞ PUF) ∞ R1
transmettre R2 à B
 sur B :  NOMF, NF (R2 ∞ F)

Вам также может понравиться