0% ont trouvé ce document utile (0 vote)
8 vues53 pages

Optimisation des requêtes en SGBD distribué

Le document traite de l'optimisation des requêtes dans les systèmes de gestion de bases de données distribuées, en mettant l'accent sur des concepts tels que la réplication, la fragmentation, et les stratégies d'exécution des jointures. Il aborde également les transactions distribuées, en expliquant le modèle ACID et le protocole de validation à deux étapes (2PC) pour garantir l'intégrité des données. Enfin, il illustre ces concepts à travers des exemples pratiques de requêtes et de stratégies d'exécution.

Transféré par

nightcorevnclub
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues53 pages

Optimisation des requêtes en SGBD distribué

Le document traite de l'optimisation des requêtes dans les systèmes de gestion de bases de données distribuées, en mettant l'accent sur des concepts tels que la réplication, la fragmentation, et les stratégies d'exécution des jointures. Il aborde également les transactions distribuées, en expliquant le modèle ACID et le protocole de validation à deux étapes (2PC) pour garantir l'intégrité des données. Enfin, il illustre ces concepts à travers des exemples pratiques de requêtes et de stratégies d'exécution.

Transféré par

nightcorevnclub
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Plan


Motivation

Système distribué

Architecture

Réplication

Fragmentation

Optimisation de requêtes

Transactions distribuées

Systèmes

34 OlivierCuré [ocure@[Link]]
Optimisation des requêtes

Dans un SGBD centralisé, le principale critère de pour
mesurer le coût d’un plan d’exécution est le nombre
d’accès disque

Dans un SGBD distribué, il faut également prendre en
compte :

Le choix de la meilleure localisation des fragments,

les coûts liés aux transferts de données, exploitation des
CPU, entrée/sortie.
● l’exploitation de parallélisme
● les transferts entre sites.

Il faut étudier les différentes solutions et adopter la plus
économique en fonction de l’utilisation de réplication
et/ou fragmentation.

bases de données distribuées 35


Parallélisme inter et intra
requête
Inter-requête:
Différents requêtes sont exécutées de manière
concurrente
Augmentation du débit et réduction de la latence
Intra-query
Exécution des opérations d’une simple requête en
parallèle
Diminution de la latence pour des requêtes dont
l’exécution peut être longue

36 OlivierCuré [ocure@[Link]]
Transformation d’un
requête

Soit la relation F (fournisseur) et la
requête “Fournir l’ensemble des
tuples de F”.

Réplication sans fragmentation

Il faut choisir la réplique avec le
moindre coût => site de la requête,
sites des repliques

Réplication et fragmentation

Implication de jointures et d’unions

bases de données distribuées 37


Transf. réplication et
fragmention vert.

F sur 2 sites (A et B), Q = “Obtenir les
fournisseurs français”
σpays=fra f

● Avec f = fA ∪ fB

● Donc: σpays=fra (fA ∪ fB)



Qui correspond à
σpays=fra (fA)∪ σpays=fra (fB)

bases de données distribuées 38


Transf. réplication et
fragmention vert. (2)

Avec des méta données indiquant que
les fournisseurs français ne sont que
sur le site 1, on peut simplifier en
σpays=fra (fA)

bases de données distribuées 39


Requêtes avec jointures

Le choix d’une bonne stratégie
d’exécution des jointures est un point
clé de l’optimisation de requêtes dans
un SGBD centralisé ou distribué

Soit 3 relations R1, Ré et R3 sur 3
sites, resp. S1, S2 et S3

Une requête sur S1 impose
R1⋈ R2 ⋈ R3

bases de données distribuées 40


Requêtes avec jointures

On a le choix entre plusieurs
stratégies, par exemple

Transférer des copies des relations
R2 et R3 vers S1 pour tout exécuter
sur S1

Transférer R3 sur S2, y exécuter la
jointure et transférer ce résultat sur
S1 pour y faire la jointre avec R1

Transférer R1 sur S2, y exécuter la
jointure, transférer le résultat sur S3,
y faire la jointure et transférer le
résultat final sur S1

.. bases de données distribuées 41
Requêtes avec jointures

Pas une stratégie meilleure qu’une
autre dans le cadre général

Cela dépend de la taille des relations
à transférer, le coût de la transmission
et la vitesse de traitement sur chaque
site (par exemple, accès à des
indexes)

bases de données distribuées 42


Requêtes avec jointures

Exemple: transfert de R2 et R3 sur S1.
La requête gagne à exploiter les
indexes de R2 et R3

Re-création des indexes de R2 et R3
sur S1?

Transmission des indexes sur S1?

Exploitation d’une autre méthode de
jointure?

bases de données distribuées 43


Stratégie semijoin

On suppose la jointure r1⋈ r2, avec r1
sur S1 et r2 sur S2. Ri est le schéma
de ri

On veut le résultat sur S1

Si on a un grand nombre de tuples de
r2 qui vont pas joindre avec r1
(dangling tuples) alors le transfert de
r2 vers S1 est coûteux et inutile

bases de données distribuées 44


Stratégie semijoin

Une stratégie possible:
1. Temp1 = ∏R1∩R2 (r1)

2. Transfert Temp1 sur S2


3. Temp2 = r2 ⋈Temp1 sur S2
4. Transfert temp2 sur S1
5. Calcul de r1 ⋈Temp2 sur S1

bases de données distribuées 45


Stratégie semijoin

Vérification
r1 ⋈ r2 ⋈ ∏R1∩R2 (r1)

avec r1 = r1 ⋈ ∏R1∩R2 (r1)


donc
r1 ⋈ r2 ⋈ ∏R1∩R2 (r1) = r1 ⋈ r2

bases de données distribuées 46


Stratégie semijoin

Cette stratégie est avantageuse
quand elle permet d’envoyer moins de
tuples de r2 sur S1.

La semijointure de r1 avec r2
(dénotée r1⋉ r2) correspond à
∏R1 (r1 ⋈ r2)

bases de données distribuées 47


Exemple(1/4)

Soit la BDR composée des relations suivantes :


P (NP, NOMP, MADE_IN, COULEUR, POIDS)
U (NU, VILLEU, NOMU)
F (NF, NOMF, VILLEF, ADRESSE, PAYS, COEF)
PUF (NP, NU, NF, DATE, QUANTITE)
Les relations U et PUF sont sur le site A.
Les relations F et P sont sur le site B.
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 : environ 1 000 octets d'informations
utiles / secondes

bases de données distribuées 48


Exemple(2/4)

Transfert d'une message en :


( 0,5 + Nb-d'octets-du-message /1000) secondes.

A la requête "Donner les numéros et les noms 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 :
R = (NOMF, NF) ((VILLEU = "Lausanne")U ⋈ PUF ⋈
(MADE_IN = "Italy")P ⋈ F)

bases de données distribuées 49


Exemple (3/4)

Soient les deux stratégies d'exécution suivantes :

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.

bases de données distribuées 50


Exemple (4/4)
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.

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, dont beaucoup de doubles) 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 = 503


secondes (8 minutes)

Avec la stratégie S2, un message contenant 500 numéros 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 soit 1,7 seconde

bases de données distribuées 51


Plan

Motivation

Système distribué

Architecture

Réplication

Fragmentation

Optimisation de requêtes

Transactions distribuées

Systèmes

52 OlivierCuré [ocure@[Link]]
Transactions distribuées

Deux constats :

les utilisateurs modifient les bases de données

il y a des pannes du matériel, des logiciels, du
réseau

Comment assurer l'intégrité des
données

concept de transaction

Une transaction consiste en l'exécution d'un
programme.

bases de données distribuées 53


Transactions ACID

A : Atomique (exécution en un bloc ou rien)


C : Cohérence (d'un état cohérent à un autre
état cohérent de la BD).
I : Isolation (màj non visibles des autres
transactions tant qu'il n'y a pas de commit).
D : Durabilité des modifications sur la BD
(persistence des txn commitées)

bases de données distribuées 54


Opérations élémentaires
d'une transaction

Les opérations d'une transaction sont
contenues entre "begin of
transaction" et "end of transaction".

Les opérations élémentaires sont :

read

write

commit, qui valide et enregistre le nouvel état
de la bd.

abort, abandon et retour à l'état initial de la
bd.

bases de données distribuées 55


Transactions et BDD

Distinction entre txn

Locale

Elle accède à des données situées sur
le site initiant la txn

Globale

Elle accède à des données situées sur
une site différent de celui initiant la txn
ou accède à des données situées sur
plusieurs sites

Implantation plus complexe

bases de données distribuées 56


Architecture standard

Comme dans un SGBD centralisé, il y a un txn
manager (TM) qui gère l’exécution des txn
sur son site. Chaque site a son txn manager

En plus, dans un SGBDD, chaque site possède un
txn coordinator (TC) qui coordonne
l’exécution des différentes txn initiées sur son
site
Machine 1 Machine n

TC1 TC1
TCn

TM1 TMn

bases de données distribuées 57


Txn manager

Il maintient un journal des logs pour permettre la
reprise en cas de panne

Participe au contrôle de la concurrence pour
coordonner l’exécution concurrente de txn
s’exécutant sur son site.

bases de données distribuées 58


Txn coordinator

Il est responsable

du démarrage de l’exécution d’une txn

du découpage d’une txn en sous-txn et à
la distribution de ces sous-txn aux sites
appropriés

de la coordination de la terminaison
d’une txn, qui peut se conclure par un
commit ou un abort sur l’ensemble des
sites impliqués

bases de données distribuées 59


Pannes possibles

Comme pour un système centralisé, on peut
rencontrer des problèmes logiciel, matériel,
crash disque, etc.:

Problèmes supplémentaires d’un SGBDD

Panne d’un site

Perte de messages

Panne du lien de communication entre sites
(reroutage)

Partitionnement du réseau

bases de données distribuées 60


Txn globale

Risque d’une txn globale

Opérations sont commitées sur un
site et pas sur un autre → état
incohérence

Il faut garantir l’atomicité même en
cas de txn distribuée

Pour cela, on utilise un protocole de
validation (commit protocol)

Parmi les plus simples et le plus
utilisé, on retrouve le protocole de
validation à 2 étapes (2 phase
commit = 2PC)
bases de données distribuées 61
2PC
● Soit une txn T, initiée sur Si où le txn
coordinateur est Ci

Lorsque T a complété son exécution
(chaque site impliqué par T a géré
sa part de la txn et à informé Ci )
alors Ci débute la protocole 2PC

bases de données distribuées 62


2PC

Phase 1:
● C ajoute <prepare T> au journal et force
i
la persistence du journal
● C envoie <prepare T> à chaque site
i
ayant exécuté un morceau de T

A la réception de ce message sur chaque
site, le txn manager détermine s’il est
possible de valider la txn locale.

Soit il ajoute <no T> à son journal
et envoie un abort T à Ci

Soit il ajoute <ready T> à son
journal, persiste le journal et envoie
<ready T> à Ci
bases de données distribuées 63
2PC

Phase 2:
● C réceptionne les réponses à son
i
message <prepare T> depuis l’ensemble
de sites impliqués par T (après un laps de
temps, il peut considérer que T doit être
annulée)

T peut être validée (commit) si tous les
sites ont envoyé un <ready T>, Ci envoie
alors un <commit T> aux sites
● Sinon il faut annuler T et C envoie un
i
<abort T> aux sites

A la réception des messages, les sites
enregistrent la décision dans le log et
applique l’opération
bases de données distribuées 64
2PC

Phase 2:

Dans certaines implémentations, les sites
envoient un <acknowledge T> à Ci .
Celui-ci ajoute alors <complete T> au
journal

bases de données distribuées 65


2PC et panne d’un site

Si un site “tombe” avant l’envoi d’un <ready T>,
Ci considère cela comme un <abort T>

Si un site “tombe” après l’envoi de son <ready
T>, Ci exécute le reste du protocole de
validation en ignorant la panne

Lorsqu’un site redémarre après une panne, il doit
examiner son journal pour déterminer l’état
des txn qui étaient bloquées localement

bases de données distribuées 66


2PC et panne d’un site

Plusieurs situations à l’analyse du journal suivant
que le site y trouve

Un <commit T> alors il valide T

Un <abort T> alors il annule T

Un <ready T>, le site doit alors consulter
Ci. Si il fonctionne, il va notifier le site de
la décision sur T. Sinon (e.g., Ci est
injoignable), le site va envoyer des
<queryStatus T> aux autres sites du
système qui vont chercher dans leur
journal. Si le site n’a pas de réponse, il
repoussera la prise de décision sur T et
enverra régulièrement des messages aux
autres sites
bases de données distribuées 67
2PC et panne d’un site

Le log ne contient aucune information sur
T (donc le site est tombé avant le
<prepare T>). Il doit annuler

bases de données distribuées 68


2PC et panne du txn coord
● Si Ci “tombe”, les sites impliqués par T doivent
prendre une décision. Cela n’est pas toujours
possible et dans ce cas, ils doivent attendre un
redémarrage du site de Ci (pb de blocage).

La décision est possible si

Un site a un <commit T> alors on valide
sur les sites

Un site a un <abort T> alors on annule

Un site n’a pas de <ready T>. Cela veut
dire que Ci n’a pas été capable de
décider. Dans ce cas, il est préférable
d’annuler T
bases de données distribuées 69
2PC et partitionnement du
réseau
● Ci et les sites de T sont dans la même partition du
réseau : le partitionnement n’a pas d’effet sur le
protocole
● Ci et les sites se retrouvent sur différentes partitions
du réseau. Les sites se trouvant dans la partition de
Ci suivent une exécution normale du protocole

srv1

srv3

srv2

bases de données distribuées 70


3PC

Il existe des alternatives à 2PC,
comme 3PC

3PC élimine certains désavantages de
2PC (principalement le pb de
blocage) mais au prix d’une
complexité et d’une dégration des
performances importantes

bases de données distribuées 71


Contrôle de la
concurrence

Les mécanismes de contrôle de la concurrence
d’un SGBD centralisé peuvent être adaptés à
un environnement distribué

On considère que les modifications doivent être
faites sur l’ensemble des répliques d’une
donnée

Dans ce cas, si un site n’est pas capable
d’effectuer une modification localement alors
les modifications ne peuvent être traitées

bases de données distribuées 72


Protocoles basés sur les
verrous

Approche avec un unique gestionnaire de verrou
● Il se trouve sur le site S
i

Toutes les demandes de verrous ou
libération de verrous se font en envoyant
un message à Si

Avantages: implantation simple, unique
gestionnaire de détection de verrou
mortel (deadlock)
● Inconvénients: Si est un goulet
d’étranglement, vulnérabilité (SPOF)

bases de données distribuées 73


Protocoles basés sur les
verrous

Approche avec une distribution de la
gestionnaire de verrous

Chaque site à son lock manager local qui
gère ses données locales

Avantages: Réduction l’effet goulet
d’étranglement

Inconvénients: gestion des deadlock est
plus complexe qu’avec un unique
gestionnaire puisque lock et unlock sont
distribués. On peut avoir des deadlock
intersites sans avoir de deadlock local

bases de données distribuées 74


Protocoles basés sur les
verrous

Approche avec une copie primaire

Une réplique est élue comme primaire

Une txn demandera un lock/unlock à
cette réplique

Avantages: implantation simple

Inconvénients: SPOF

bases de données distribuées 75


Protocoles basés sur les
verrous

Approche avec protocole de majorité

N répliques, il faut joindre plus de la
moitié des répliques pour obtenir un
verrou. Chaque réplique(site) répondra si
verrou possible ou pas.

La txn ne s’exécute pas tant que la
moitié des sites ont accordé le verrou

Avantages: bonne gestion des pannes de
certains sites

Inconvénients: implantation, gestion des
deadlocks

bases de données distribuées 76


Protocoles basés sur
l’horodatage

On attribue un unique timestamp à chaque txn
pour permettre au système de décider l’ordre de
sérialization

Deux méthodes pour générer des timestamps
uniques:

Centralisée: une unique site va fournir les
timestamps. En se basant sur son horloge
local ou un compteur par exemple

Distribuée: chaque site génère d’uniques
timestamps (compteur local ou horloge).
Timestamp = concaténation de l’identifiant
du site et timestamp local

bases de données distribuées 77


Protocoles basés sur
l’horodatage

Problèmes possibles

Solution basée sur des compteurs

Le compteur d’une machine
augmente plus rapidement sur
une machine que les autres

Solution basée sur des horloges

Synchronisation des horloges
des différentes machines

bases de données distribuées 78


Administration

SGBD centralisé: un DBA a le contrôle
la BD

SGBD distribué: 1 DBA global
(responsable du système) + DBA
locaux (sur chaque site) avec une
possibilité d’autonomie

bases de données distribuées 79


Plan

Motivation

Système distribué

Architecture

Réplication

Fragmentation

Optimisation de requêtes

Transactions distribuées

Systèmes

80 OlivierCuré [ocure@[Link]]
Systèmes


Fondé en 1979

Shared nothing


Fondé en 2000, acquis par IBM en 2010

SGBDD parallèle Shared nothing
81 OlivierCuré [ocure@[Link]]
Systèmes


Fondé en 2003, acquis en 2010 par EMC

SGBDD parallèle Shared nothing


Fondé en 2005, acquis par HP en 2008

SGBDD parallèle

82 OlivierCuré [ocure@[Link]]
Systèmes


Fondé en 2003, acquis en 2008 par Microsoft

SGBDD parallèle Shared nothing


Fondé en 2005, acquis par Terradata en 2011

SGBDD parallèle Shared nothing, SQL au dessus
de MapReduce

83 OlivierCuré [ocure@[Link]]
Systèmes


Fondé en 2003, acquis par Sun
SGBDD parallèle Shared nothing
Réplication synchrone
2PC
Partitionnement horizontal: hashage basé sur la clé
primaire de la table (mais configurable)

84 OlivierCuré [ocure@[Link]]
Systèmes


Création en 1996
Plusieurs solutions
PGCluster II: shared disk
Citus (1 version gratuite et 2 autres $$): réplciation
sync et async
Postgres-XL: replication sync

85 OlivierCuré [ocure@[Link]]
SQL-on-Hadoop players

Impala (Cloudera)

Stinger (Hortonworks) Hive via ORCfile and Tez

Drill (MapR)

Hadapt (now Teradata)

Apache HAWQ

86 OlivierCuré [ocure@[Link]]

Vous aimerez peut-être aussi