Upload
others
View
17
Download
0
Embed Size (px)
Citation preview
Ingénierie des bases de donnéesM. Scholl
NFE106
cursusCycle d’ingénieurM1Cours de bases de données qui fait suite à NFP107
PrérequisNiveau
cycle probatoire informatique ouLicence informatique
Avoir suivi NFP107 ouDes connaissances de base relationnelles:
Modèle relationnelAlgèbreSQL
Des notions de base sur les systèmes et les langages de programmationsur les disques et fichiers
Objectif : fondements des Bases de données relationnelles
Accent mis cette année sur:Calcul relationnel :
fondement du standard d’interrogation SQL
Théorie des dépendances fonctionnelles et de la décomposition :
fondement d’une bonne conception de schéma
Optimisation d’une requête relationnelle:interprétation d’une requête SQL en un programme d’exécution efficace
Autres aspects non couverts cette année
Les entrepôts de données, les bases de documents et l’interrogation sur le Web (standards XML, Xpath,Xquery) sont étudiés partiellement dans d’autres cours (NFE114,NFE204, NFE205,…)Pourraient être étudiés une autre année
Distribution des donnéesParallélismeDatalog, règlesQualité des donnéesBases de données embarquéesBases de données mobilesEtc.
06/05/09 nfe206 M. Scholl 6
Plan1. Introduction, rappels relationnels2. Optimisation 3. Le calcul relationnel comme langage
de requêtes 4. Conception d’un schéma relationnel:
Théorie de la décomposition
06/05/09 nfe206 M. Scholl 7
2 jeux de transparents1. Introduction, rappels relationnels,
Optimisation 1. Calcul relationnel, Conception
06/05/09 nfe206 M. Scholl 8
EnseignantsMichel Scholl cours Nicolas Travers (ED et TP)
06/05/09 nfe206 M. Scholl 9
OrganisationCours:
13 séances (indicatif)1 Introduction, Rappels5 optimisation2 calcul relationnel4 conception1 révisions
ED: 13 séances
TP: 6 séancesOptimisation Oracle (explain)
06/05/09 nfe206 M. Scholl 10
RemerciementsLes transparents du calcul et de la théorie de la décomposition empruntent beaucoup au cours de Bernd Amann en licence à l’université de Paris 6Les exercices en optimisation sont étoffés par ceux du cours de P. Rigaux à l’université de Dauphine
06/05/09 nfe206 M. Scholl 11
Bibliographie[1] H. Garcia-Molina, J. Ullman, J. Widom; "DATABASE SYSTEM,
THE COMPLETE BOOK" Prentice Hall,2000[2] Serge Abiteboul, Richard Hull, and Victor Vianu, Foundations of
Databases, Addison-Wesley, 1995 (version française chez Vuibert)
[3] R. Ramakrishnan, J. Gehrke, Database Management Systems, amazon.com, Third edition
[4] G. Gardarin, Bases de Données objet & relationnel, Eyrolles, 1999
[5] M. Scholl, Introduction à la section Bases de données, Encyclopédie de l’Informatique et des Systèmes d’Information, Vuibert, Novembre 2006
06/05/09 nfe206 M. Scholl 12
1) RappelsBases de données et SGBD [5]Les grands principes [5]Modèle relationnel [1,2,3,4,nfP107]Algèbre relationnelle [1,2,3,4,nfP107]SQL [1,2,3,4,nfP107]
06/05/09 nfe206 M. Scholl 13
Bases de donnéesCollections de données homogènes dotées d’une structure préciseOn peut interroger par la structureA distinguer des recherches par mot-clé par exemple
06/05/09 nfe206 M. Scholl 14
SGBDUn Système de Gestion de Bases de Données permet
Le stockageL’interrogation et la mise à jourLe partage
des données
06/05/09 nfe206 M. Scholl 15
UN SGBD doit pouvoir garantirLa pérennité (durée de vie des données d’une seconde à plusieurs années)La sécurité (protection, confidentialité, traçabilité)Le maintien de la cohérence (contraintes sur les données, lecture et mise à jour par plusieurs utilisateurs)L’évolutivité au cours du tempsLa performance des opérations
Des données
06/05/09 nfe206 M. Scholl 16
UN SGBD est-ilUn système de recherche d’informations
Semi-structurées ?Non structurées ?Hétérogènes ?Par le contenu?
06/05/09 nfe206 M. Scholl 17
UN SGBD est-ilUn système de recherche d’informations
Semi-structurées ? Non (voir nouveaux standards d’interrogation de documents XML: Xpath,Xquery) et Oui (implantation relationnelles de collections XML) Non structurées ? Non (bibliothèques, moteurs de recherche Web) Hétérogènes ? Non et oui (BD distribuées, architectures de médiation)Par le contenu? Un peu (champs égaux à une valeur donnée, champs contenant un mot-clé). Plutôt Non (exemple de recherche dite par le contenu : recherche des images qui ressemblent visuellement à une image donnée)
06/05/09 nfe206 M. Scholl 18
Les SGBD relationnelsReprésentent, stockent, manipulent et partagent
Des données fortement typées de type simple (des relations)
Sont étendus pour prendre en compte de nouveaux besoinsRépondent mal à d’autres besoins: par exemple recherche sur documents semi-structurés (XML) ou non structurés textuels, visuels, sonores (recherche par le contenu)
06/05/09 nfe206 M. Scholl 19
Extension des SGBD relationnels pour prendre en compte de
nouveaux besoinsRecherche par mot-cléRecherche spatiale (dans des cartes géographiques)Cubes et OLAPEtc.
06/05/09 nfe206 M. Scholl 20
Exemples de nouvelles fonctions qui complètent les SGBD
Analyse de données, classification, fouille: extraire du sens de grandes quantités de donnéesNouvelles interfaces de recherche d’information: aide à l’interrogation à l’aide de
HiérarchiesRésumésRecherches floues, approximatives
06/05/09 nfe206 M. Scholl 21
Principes du Modèle relationnelIndépendance
-> langages déclaratifs
vue ensembliste des données
06/05/09 nfe206 M. Scholl 22
IndépendanceNiveau logique : utilisateur
la base des données est structurée et manipulée au moyen d’un langage de requêtes, de façon abstraite indépendamment du niveau « physique »
Niveau physique : stockage, implantation du langage, déploiement sur plate-formes différentes.
L’utilisateur n’a pas à s’encombrer des détails d’implémentation
complexe, varie d’une plate-forme à une autre, ou varie au cours du temps.
Une modif au niveau physique n’a pas d’impact sur le niveau logique (la requête ou le programme appelant le SGBD)
06/05/09 nfe206 M. Scholl 23
Langage de requêtes déclaratif(Conséquence de cette indépendance)Exprime ce qu’il faut faireMais pas comment le faire
06/05/09 nfe206 M. Scholl 24
Vue ensembliste des donnéesl’information est logiquement structurée comme un ensemble d’objets et non pas comme des objets individuels.Grâce au langage de requêtes, ces ensembles subissent des opérations qui à leur tour créent de nouveaux ensembles.
06/05/09 nfe206 M. Scholl 25
Rappels sur le modèle relationnel, l’algèbre et SQL
Modèle relationnel:Type unique: Relation ou table
ensemble de nupletsAttributs définis sur des domaines (types atomiques) s’ils ne sont pas nommés attributs repérés par leur rang
Structure de la base (schéma)Ensemble de schémas de relationSchéma d’une relation: nom et liste d’attributs:
Ex: Véhicule (propriétaire,type,année)
06/05/09 nfe206 M. Scholl 26
06/05/09 nfe206 M. Scholl 27
Algèbre relationnelleL’ensemble des relations est fermé sous l’algèbre:
Une opération de l’algèbre prend en entrée une ou deux relations et sort (toujours) une relation->une requête est une composition d’opérations algébriques (expression de l’algèbre)
06/05/09 nfe206 M. Scholl 28
Opérations de l’algèbreSélection(σ), projection (Π), produit cartésien (jointures), union, (intersection), différence, (division) renommageExemple d’expression:
Πpropriétaire (σtype=‘Espace’(Véhicule))
06/05/09 nfe206 M. Scholl 29
SQLStandard d’interrogation universel étendu tous les 5 à 10 ans.Le cœur: clauses (simples) Select From Where
Select <attributs à garder>From <liste des relations en entrée>Where <prédicat sur les attributs des relations>
Si la liste des attributs à garder est <A1,A2,…An>, résultat :
relation (ensemble de nuplets) de schéma (A1,A2,…An)
06/05/09 nfe206 M. Scholl 30
Pouvoir d’expression SQLLe noyau de SQL a même pouvoir d’expression que l’algèbre relationnelle:Quelle que soit la base, et une requête exprimée dans l’un des langages
Il existe une requête dans l’autre langage qui donne le même résultate.g.
Select propriétaire From Voiture where type=‘Espace’Πpropriétaire (σtype=‘Espace’(Voiture))
SQL (à la syntaxe près) est plus proche du calcul relationnel que de l’algèbre (voir 3e partie)
Optimisation
Deuxième partie
06/05/09 nfe206 M. Scholl 32
Plan 1) Rappels sur les index2) Optimisation: introduction3) Algorithmes pour les principaux opérateurs 4) Optimisation (voir 2e partie)5) Pipeline (voir 2e partie)
06/05/09 nfe206 M. Scholl 33
1. Rappels sur les Index et le hachage
IndexIndex dense,non denseArbre-BHachage
06/05/09 nfe206 M. Scholl 34
IndexFichier films
Deux attributs (champs) : nom de film, année du filmOn veut accéder rapidement à un film connaissant son nom
06/05/09 nfe206 M. Scholl 35
06/05/09 nfe206 M. Scholl 36
Qu’est-ce qu’un index?Hyp.: fichier F films trié sur le nom de filmClé d’index: un ou plusieurs attributs: e.g. nom de filmIndex I: second fichier
article de I ou entrée: (v, @) v valeur de clé @ adresse du bloc (page) de F dont le 1er article a pour valeur de clé v
I est trié sur vSi I plus gros qu’un bloc, alors I indexé de la même façon -> index est une hiérarchie
Si la clé d’index est clé primaire ->index unique : 2 nuplets ne peuvent avoir même val de clé
06/05/09 nfe206 M. Scholl 37
06/05/09 nfe206 M. Scholl 38
Recherche avec index: 2 étapes
Traversée d’index I: Trav(I,v) donne les adresses de blocs de F où se trouve(nt) le(s) nuplets de clé v.On traverse I à partir de la racine vers une feuille.A chaque niveau de l’arbre, on lit un blocComplexité (nb de blocs accédés) = profondeur de l’arbre
Accès direct: accès par adresse du bloc où se trouve(nt) le(s) articles de clé v. parcours séquentiel de tous les articles: on garde ceux de clé v
06/05/09 nfe206 M. Scholl 39
Index dense, non denseL’index précédent est non dense (clustered index?):
une valeur de clé dans les feuilles de I par bloc de FUne seule façon de trier un fichier -> un seul index non dense par fichierIndex dense:
Entrée (v,@) d’une feuille: à chaque valeur v de clé, associe l’adresse d’un nuplet (adresse de bloc, numéro dans le bloc) ayant pour clé v
- hétérogénéité feuilles qui pointent sur des nuplets/nœuds internes qui pointent sur des blocs
- Comparé à l’index non dense Plus gros, profondeur plus grande: autant d’entrées (clé,@) que d’articles du fichier indexéNe nécessite pas que le fichier soit trié sur la clé
06/05/09 nfe206 M. Scholl 40
06/05/09 nfe206 M. Scholl 41
06/05/09 nfe206 M. Scholl 42
Arbre-BArbre équilibré: B comme balancedImplanté dans tous les SGBD relationnelsDans l’exemple suivant, on ne représente dans les feuilles que les valeurs de clé (pas les adresses de nuplet ou de blocs)
06/05/09 nfe206 M. Scholl 43
06/05/09 nfe206 M. Scholl 44
06/05/09 nfe206 M. Scholl 45
06/05/09 nfe206 M. Scholl 46
06/05/09 nfe206 M. Scholl 47
06/05/09 nfe206 M. Scholl 48
06/05/09 nfe206 M. Scholl 49
HachageFonction de hachage:
H: V -> {1,…,B}B le nb de blocs de la relationV espace des clés
H est une fonction uniforme: P(H(v) =i)= 1/BOn range dans le bloc i tous les articles | H(v)=i
Nécessité d’un répertoire R en MC : R(i) contient l’adresse du bloc i
06/05/09 nfe206 M. Scholl 50
06/05/09 nfe206 M. Scholl 51
06/05/09 nfe206 M. Scholl 52
Aide-mémoire SélectionRequête peu sélective: Balayage séquentielRequête sélective:
Type de requête:Égalité: Index ou hachageIntervalle: Index
Index dense/non dense (clustered)Index dense: requête égalité très sélective (par exemple index sur la clé primaire de la relation)Index clustered: requête par intervalle, requête par égalité moins sélective
06/05/09 nfe206 M. Scholl 53
Compléments sur les indexIndex couvrant:
une entrée (dans les feuilles) est le nupletLa clé de l’indexUn ou plusieurs autres attributs de la relationUne adresse (rowid si dense, page si clustered)
évite l’accès à la relation (opérations qui ne portent que sur les attributs stockés dans les entrées de l’index) Inconvénient: plus gros
06/05/09 nfe206 M. Scholl 54
Compléments sur les indexEn résumé: les divers index:
Index denseIndex non-dense (clustered)Index unique/non unique unique: la clé de l’index est une clé de la relationIndex multi-attributsIndex couvrants
06/05/09 nfe206 M. Scholl 55
2. Optimisation: IntroductionSQL est déclaratif: l’utilisateur indique
ce qu’il veut obtenirmais pas comment l’obtenir
Le système fait le reste:Comprendre la requête: il la traduit en algèbre relationnelle: plan d’exécution logique (PEL)Choisir la meilleure stratégie d’exécution de la requête: il obtient un plan d’exécution physique (PEP)Exécuter le PEP
06/05/09 nfe206 M. Scholl 56
06/05/09 nfe206 M. Scholl 57
En algèbre relationnelle
06/05/09 nfe206 M. Scholl 58
Choix d’un PEP
06/05/09 nfe206 M. Scholl 59
Les étapes du traitement d’une requête
06/05/09 nfe206 M. Scholl 60
Evaluation (exécution) de requête efficace
Minimiser le tempsD’évaluation: temps pour exécuter entièrement la requêteDe réponse: temps pour donner à l’utilisateur le premier résultat
On s’intéresse au temps d’évaluation: nombre de pages accédées
On ne tient pas compte de l’écriture du résultat
qui ne dépend pas de l’algorithme choisi mais de la taille du résultat
06/05/09 nfe206 M. Scholl 61
3. Opérations du PEP: algorithmes
TriSélectionProjectionJointures
06/05/09 nfe206 M. Scholl 62
TRINécessaire pour
Eliminer les doublonsFonctions agrégat et order byAlgorithmes de jointure
06/05/09 nfe206 M. Scholl 63
Tri: 2 phases
06/05/09 nfe206 M. Scholl 64
Phase de fusion
06/05/09 nfe206 M. Scholl 65
Principe de la fusion (interclassement) algo FusionMC(L1, L2)
Exemple de M=2 listes triées : 2 listes L1,L2, un tampon RésultatEn mémoire centrale
Liste L1: 1, 5, 7, 9, 13, 27, 58, 89, 100, 101, 112Liste L2: 1, 2, 3, 4, 5,10, 13, 20, 30, 31, 32, 57, 58, 59, 80, 100Résultat: 1, 2, 3, 4, 5, 7, 9, 10, 13, 20, 27, 30, …, 101, 112
Un pointeur pi par liste: Tant que listes pas vide
Si Résultat plein, écrire sur disquesi nb de L1 pointé par p1<= nb de L2 pointé par p2
insérer nb de liste 1 pointé par p1 dans Résultatp1 = suivant dans L1
SinonInsérer nb de liste 2 pointé par p2 dans RésultatP2=suivant dans L2
Si une liste vide, lire bloc suivant (s’il en reste un) et pointer sur le premier
La fusion en MC est O(|L1| + |L2| )
06/05/09 nfe206 M. Scholl 66
Fusion de deux partitions: FusionLire en MC 1er bloc de partition P1 dans B1Lire en MC 1er bloc de partition P2 dans B2fusionMC (B1,B2)La fusion est O(|P1| + |P2|) en nb de blocs lus
06/05/09 nfe206 M. Scholl 67
TRI: phase de fusionA chaque étape:
On fusionne les partitions M-1 par M-1On met le résultat dans le Me tamponOn obtient M-1 fois moins de partitions triées, M-1 fois plus grandesOn lit et on écrit B blocs
Nombre d’étapes: logM-1 B
06/05/09 nfe206 M. Scholl 68
fusion, exemple de processus avec M évènements
La fusion entre les M-1 premiers blocs avec écriture dans le Me bloc se fait suivant le principe précédent. M exceptions:M-1 évènements (exceptions): bloc entièrement lu
Action si pas dernier bloc de la partition, lire bloc suivant dans la partition
1 évènement: Me bloc entièrement pleinAction copier sur le disque
06/05/09 nfe206 M. Scholl 69
TRI: illustration naive
06/05/09 nfe206 M. Scholl 70
Algorithmes pour la sélection, la projection et la jointure
Sélection/projection par balayage séquentiel (SelBal)Sélection/projection dans le cas d’une traversée d’index denseProjection par triProjection par hachageJointure quand une table tient en mémoire Autres jointuresJointure par hachage
06/05/09 nfe206 M. Scholl 71
NotationsB: nb de blocs de la relationN: nb de nuplets de la relationI le nb de blocs à lire pour une traversée d’index
06/05/09 nfe206 M. Scholl 72
Sélection/projection par balayage séquentiel (Selbal)1 tampon d’entrée E, 1 tampon de sortie SLa relation est dans le segment R Pour chaque bloc b du segment R,
Lire b dans EPour chaque n dans EIf n satisfait les critères de sélection
Projeter nIf S plein, vider SRanger séquentiellement le résultat dans S
06/05/09 nfe206 M. Scholl 73
06/05/09 nfe206 M. Scholl 74
Sélection/projection dans le cas d’une traversée d’index
denseOn se place dans le cas où un des critères de sélection est A=a et il existe un index dense sur A (A non unique).Trav(Ind,a) prend le segment Ind qui contient l’index et la valeur a de l’attribut en entrées et retourne la liste des rowid de nuplets dont la valeur de l’attribut A=a.En général ces rowid correspondent à des pages (blocs) différents.e>=1 tampons d’entrée et un tampon de sortie S
06/05/09 nfe206 M. Scholl 75
06/05/09 nfe206 M. Scholl 76
Traversée d’index dense: SelIndPool de tampons Dejalu
Pour chaque rowid r = (p,d) in Trav(Ind,a)If page (p) non dans Dejalu,
lire page (p) dans tampon d’entrée E disponible dans Dejalu;
Accéder dans E au nuplet de rowid r (d indice dans la table de début de bloc)S’il satisfait les autres critères de sélection,
Si S est plein, le viderprojeter le nuplet et le stocker séquentiellement dans S
A quoi sert Dejalu? Pourquoi plus de 1 tampon dans Dejalu?
06/05/09 nfe206 M. Scholl 77
SelInd: ComplexitéI= nb E/S pour accéder aux feuilles de l’index; N nb nuplets de la relation, B nb de blocs, Sélectivité S= 1/|ΠA(R)|Complexité: I + NxS (# tamp. d’entrée e=1)Remarque: on peut trier les rowid pour n’accéder qu’une fois à chaque page Si index unique: I+1Si index non dense non unique: I + BxS
06/05/09 nfe206 M. Scholl 78
SortProj:Projection par tri (élimination des dupliqués)
On peut faire en même temps que la projection les sélections. Si pas d’élimination de doublons, algo SelBal ou SelIndexSinon 3 étapes: complexité: O(Tlog(T))
sélection/projection: T blocs résultat sur disque, complexité: B (I +NxS, I +BxS)Tri: complexité: O(Tlog(T))Parcours séquentiel: éliminer les nuplets voisins pour lesquels il y a un doublon: complexité T
06/05/09 nfe206 M. Scholl 79
RemarquesOn fait les autres sélections quand on accède au nupletOn fait en même temps les projectionsMais comment faire l’élimination des dupliqués résultant de la projection?
06/05/09 nfe206 M. Scholl 80
Projection par tri: améliorationfaire la projection (et éventuellement les sélections) en même temps que la première phase du triÉliminer les doublons lors des phases de fusion.Exercice: modifier l’algorithme d’interclassement pour l’élimination des dupliqués
06/05/09 nfe206 M. Scholl 81
Projection par hachage (élimination des dupliqués)
M le nombre de tampons, h la fonction de hachage, A l’attribut de hachage (à projeter). On peut faire des sélections en même temps.Algo en 2 phases
Sélection/projection par balayage séquentiel (SelBal) mais placement du résultat par hachage dans une parmi M-1 partitions. On suppose que chaque partition fait moins de M blocs.On lit chaque partition en mémoire et fait l’élimination des dupliqués (e.g. tri en mémoire centrale par quicksort)
06/05/09 nfe206 M. Scholl 82
Projection par hachage (hashproj)étape 1 (complexité : B+T): Pour chaque bloc b de R
Lire b dans le premier tampon, Pour chaque nuplet n
faire les sélections/projectionsSi h(n.A) est plein, où n dans [2, M], vider le tampon sur disquePlacer le résultat dans le tampon h(n.A)
étape 2 (complexité 2T) : pour chacune des M-1 partitions,
Lire la partition dans les M tamponsÉliminer les dupliqués (par tri)Vider la partition sur disque
06/05/09 nfe206 M. Scholl 83
Projection par hachage: améliorations
Si la taille d’une partition dépasse M, on peut recommencer récursivement la même technique pour chaque partition (décomposition de partitions en sous-partitions et élimination de dupliqués dans une sous-partition)2) élimination par hachage (2e fct de hachage h’)Pour chaque bloc de chaque partition,
Lire le bloc dans le premier tamponPour chaque nuplet n’
si collision (h’(n.A) occupé)* si doublon éliminer* sinon placer le nuplet dans un autre emplacementSinon placer n dans h’(n.A)
06/05/09 nfe206 M. Scholl 84
Algorithmes de jointureSoit la jointure naturelle entre R et S qui ont un seul attribut en commun AAlgorithmes suivants pour la jointure naturelle (ou pour l’équi-jointure)Certains de ces algorithmes ne marchent pas pour des jointures avec inégalité
06/05/09 nfe206 M. Scholl 85
4 algorithmes de jointureJointure par boucles imbriquées
SimpleAvec traversée d’index
Jointure par tri fusionJointure par hachage
06/05/09 nfe206 M. Scholl 86
1) Jointure par boucles imbriquées simple
3 tamponsUn pour lire un bloc de RUn pour lire un bloc de SUn pour le résultat de la jointure T
Algo BIS (R,S)Pour chaque page de R (table directrice), lue en mémoire centrale (MC) on lit toutes les pages de S en MC. Pour chaque couple de pages en MC, on fait la jointure en MC (procédure BIM)
06/05/09 nfe206 M. Scholl 87
Jointure par boucles imbriquées simple
06/05/09 nfe206 M. Scholl 88
Jointure en MC
06/05/09 nfe206 M. Scholl 89
Jointures par boucles imbriquées simple: illustration
06/05/09 nfe206 M. Scholl 90
Algo BISCoûte cher si les relations sont toutes les deux grandes: BRxBS
Jamais utilisé sauf si une des tables est petite:
si une des tables tient en mémoire, on utilise la variante BISM
06/05/09 nfe206 M. Scholl 91
Jointure par boucles imbriquées simples, une table tient en mémoire
(BISM) Jointure entre R et S, M tampons et BR < M-1Complexité: BR + BS
Algorithme BISM(R,S) 1. Lire R dans les M-2 premiers tampons2. Pour chaque bloc b de S,
Lire b dans le M-1e tamponFaire la jointure en mémoire: BIM(R,b), résultat dans le Me tampon
06/05/09 nfe206 M. Scholl 92
2) Jointure par boucles imbriquées, traversée d’index2 tampons E, T
06/05/09 nfe206 M. Scholl 93
2) Jointure par boucles imbriquées, traversée d’index2 tampons E, T
Exercice:Montrer qu’en fait la complexité est O(Nr (I+ BsxS)) si l’index est non denseO(Nr (I+ NsxS)) si l’index est denseMais le terme I<= O(log(Bs)) a des chances de ne pas
être prépondérant d’autant plus que les couches hautes de l’index sont en MC
Donc en résumé-si S est très petit, complexité O(Nr logBs) -si S est trop grand, quadratique!
06/05/09 nfe206 M. Scholl 94
3) Jointure par tri-fusion
06/05/09 nfe206 M. Scholl 95
Jointure par tri-fusion: illustration
06/05/09 nfe206 M. Scholl 96
Jointure par tri-fusion: performances
Utilisé pour des grandes relations non indexées sur l’attribut de jointureCoût dominé par la phase de tri
Coût du tri: O(BRlog BR + BSlog BS)
Coût fusion: O(BR + BS)
Intéressant quand l’une des tables ou les deux sont déjà triéesFacilite l’élimination des dupliqués ou l’affichage ordonné
06/05/09 nfe206 M. Scholl 97
4) Jointure par hachage (grace hash join)
Ne s’applique qu’aux équi-jointures ou jointures naturelles.Soit la jointure naturelle entre R et S sur A. R a BR blocs, S a BS blocsComplexité: BR + BS
Deux étapes: 1. partitionnement comme pour la projection par
hachage de chaque relation2. Lecture d’une partition de R en mémoire et lecture
séquentielle de la partition correspondante de S (algorithme de jointure par boucles imbriquées BISM)
06/05/09 nfe206 M. Scholl 98
Jointure par hachage (grace hashjoin)
1) Pour chaque bloc b de RLire b dans le premier tamponPour chaque nuplet n de b
Si tampon h(n.A) plein le vider dans partition (R, h(n.A))Placer n dans tampon h(n.A)
2) Pour chaque bloc b de SLire b dans le premier tamponPour chaque nuplet n de b
Si tampon h(n.A) plein le vider dans partition (S, h(n.A))Placer n dans tampon h(n.A)
06/05/09 nfe206 M. Scholl 99
Jointure par hachage (hashjoin)
3) Pour chaque couple i de partitions faire la jointure par boucles imbriquées simples (variante où l’une des tables est en mémoire centrale)
BISM ((R,i),(S,i))Exercice:
sachant qu’on a N tampons, quelles sont les contraintes sur les tailles de partitions de R et S obtenues dans les deux premières étapes?
06/05/09 nfe206 M. Scholl 100
Aide mémoire jointuresSi une table est petite:
boucles imbriquées simpleSinon (pas de stat ou 2 tables grosses)
Si index sur l’un des attributs de jointure:Boucles imbriquées avec traversée d’index
Sinon : tri-fusion ( en particulier si une relation est triée ou si résultat doit être trié)ou hachage (si une relation pas trop grosse)
06/05/09 nfe206 M. Scholl 101
Complexité des jointures: résumé
Linéaires:Boucles imbriquées simple (une relation en mémoire)Hachage (relations de taille moyenne)
NlogN Boucles imbriquées avec traversée d’indexTri-fusion
06/05/09 nfe206 M. Scholl 102
4. OptimisationRappel : Deux étapes dans l’optimisation
Traduction de la requête en PEL (algèbre relationnelle)Traduction du PEL en PEP
06/05/09 nfe206 M. Scholl 103
Décomposition en blocsUne requête SQL est décomposée en
blocsUn bloc a une seule clause Select-from-where, une seule clause Group By, une seule clause HavingOn se concentre sur l’optimisation d’un blocToute requête ayant des imbrications peut être décomposée en une collection de blocs
06/05/09 nfe206 M. Scholl 104
Exemple de requête imbriquée
06/05/09 nfe206 M. Scholl 105
Requête sous (FNC)Toute requête peut être mise sous forme normale conjonctive (fnc):
(A=a ∪ B=b)∩ (A= a ∪ C=c)
Optimisation de A=a ∪ B=bSi index sur A et index sur B, alors traverser les deux index et faire l’unionSinon, balayage séquentiel
06/05/09 nfe206 M. Scholl 106
Optimisation 1e étape: Traduction en un PEL
Analyse syntaxique de la requête SQLtraduction de la requête SQL en un plan d’exécution logique (PEL)
06/05/09 nfe206 M. Scholl 107
Traduction en un PEL : exemple
Select Dept.nomFrom Departements, CommunesWhere Nbhab > 1,000,000And numdept=num
06/05/09 nfe206 M. Scholl 108
PEL: exemple
06/05/09 nfe206 M. Scholl 109
Règles de réécriture: permettent de traduire un PEL en un autre PEL équivalent
06/05/09 nfe206 M. Scholl 110
Règles de réécriture
06/05/09 nfe206 M. Scholl 111
Amélioration d’un PELOn transforme un PEL en un PEL équivalent mais de moindre coût:
Faire les sélections et les projections le plus tôt possible (règles 4,5 et 7)Décomposer une sélection en une composition de sélections (règle 3), pourquoi?Etc.
06/05/09 nfe206 M. Scholl 112
06/05/09 nfe206 M. Scholl 113
Un autre exemple
06/05/09 nfe206 M. Scholl 114
PEL
06/05/09 nfe206 M. Scholl 115
PEL équivalent
06/05/09 nfe206 M. Scholl 116
2e étape: Transformation d’un PEL en PEP
Réarrangement des PEL nécessaire mais pas suffisantTraduire le PEL en plan d’exécution physique (PEP):
PEP Programme appelant des primitives d’accès aux fichiers et de traitement des opérationsChoix du PEP :
trouver le meilleur algorithme pour chaque opération dépend des
chemins d’accès disponibles (index)Statistiques stockées sur les tables
06/05/09 nfe206 M. Scholl 117
PEPReprésenté sous forme d’arbreFeuilles: fichiers stockant les tables et indexNoeuds internes: opérateurs physiquesArcs (du bas vers le haut): flots de données produits par le nœud du bas et consommés par le nœud plus haut
06/05/09 nfe206 M. Scholl 118
RequêteSchéma:Cinéma(id,nom, adresse)Salle(salle,cinémaid)Séance(salle,film,heure-début)Films qui passent au Rex à 20 heures?
Select film from Cinéma,Salle,SéanceWhere Cinéma.nom=‘Le Rex’And Séance.heure-début=20And id=cinémaid and Salle.salle=Séance.salle
06/05/09 nfe206 M. Scholl 119
Un PEP (tri-fusion)
06/05/09 nfe206 M. Scholl 120
Un autre PEP (boucles imbriquées)
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel
06/05/09 nfe206 M. Scholl 121
Explication du PEPDans ce PEP deux fois l’algo de jointure avec boucles imbriquées et traversée d’index Interprétation du sous-arbre de racine « nested loop »: pour chaque nuplet obtenu dans le sous-arbre de gauche, exécuter SelInd (sous-arbre de droite): traversée d’index puis accès par rowid (boucle si index pas unique)Quels sont les index? Sur quelles tables?Sélection sur nom et projection sur id lors de l’accès séquentiel à Cinéma (algo SelBal)Lors de l’accès par adresse (rowid) aux nuplets de Séance, sélection sur heure-début et projection sur salle,filmOn peut faire les projections (salle, film) lors de la jointure
06/05/09 nfe206 M. Scholl 122
5. Pipeline d’un PEPNécessité de pipeliner
Affectation de la mémoire disponible aux différentes opérations d’un PEP, pb difficileSoit la séquence d’opérations o1 et o2 d’un PEP. Supposons qu’on fait d’abord o1 puis o2. Que faire du résultat de o1?
garder en mémoire si place suffisante ou résultat petitstocker sur disque pour o1 et le relire pour o2: coûte cher si le résultat intermédiaire est grandPipeliner o1 et o2
Si o1 est bloquante (e.g. tri) on ne peut pas pipeliner
06/05/09 nfe206 M. Scholl 123
Pipelinage Sans attendre la fin d’o1, les nuplets en sortie de o1 sont fournis en entrée à o2: les nuplets produits par o1 sont consommés par o2Toutes les opérations en séquence dans un PEP sont démarrées (presque) en même temps:
o2
o1
en cours de remplissage
Tampon d’entrée
06/05/09 nfe206 M. Scholl 124
Pipelinage Sans attendre la fin d’o1, les nuplets en sortie de o1 sont fournis en entrée à o2: les nuplets produits par o1 sont consommés par o2Toutes les opérations en séquence dans un PEP sont démarrées (presque) en même temps:
o2
O1 lancéeTampon d’entrée plein
06/05/09 nfe206 M. Scholl 125
Pipelinage Sans attendre la fin d’o1, les nuplets en sortie de o1 sont immédiatement fournis en entrée à o2: les nuplets produits par o1 sont consommés par o2Toutes les opérations en séquence dans un PEP sont démarrées (presque) en même temps: O2 lancée
O1 lancéeTampon en cours
de remplissage
Tampon plein ou o1 terminée
06/05/09 nfe206 M. Scholl 126
Pipelinage: illustrationPEP des films du Rex à 20 heures
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel
06/05/09 nfe206 M. Scholl 127
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
06/05/09 nfe206 M. Scholl 128
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
06/05/09 nfe206 M. Scholl 129
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
06/05/09 nfe206 M. Scholl 130
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1
[5,s1]
06/05/09 nfe206 M. Scholl 131
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1
06/05/09 nfe206 M. Scholl 132
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1,s2
S1 clé d’accès
06/05/09 nfe206 M. Scholl 133
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1,s2
S1 clé d’accès
Rowids r3,r4,r5
06/05/09 nfe206 M. Scholl 134
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1,s2
S1 clé d’accès
Rowids r3,r4,r5
se3,se4,se5Seule se4 démarre à 20 heures
06/05/09 nfe206 M. Scholl 135
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1,s2
S1 clé d’accès
Rowids r3,r4,r5
se3,se4,se5Seule se4 démarre à 20 heures
s1,se4,amélie
06/05/09 nfe206 M. Scholl 136
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1,s2
S1 clé d’accès
Rowids r3,r4,r5
se3,se4,se5Seule se4 démarre à 20 heures
s1,se4,amélie
amélie
06/05/09 nfe206 M. Scholl 137
PEP
Cinéma
Nested loop
Isalle
Salle
Projection
Nested loop
Projection
Séance
Iséance
Accès par adresse
Accès par adresse
Salle
cinémaid
salle
film
séquentiel5
5 clé d’accès
Rowids r1,r2
s1,s2
[5,s1] [5,s2]
s1,s2
S2 clé d’accès
Rowids r6,r7
se6,se7Seule se6 démarre à 20 heures
s2,se6,2046
Amélie,2046
06/05/09 nfe206 M. Scholl 138
ItérateursProduction/consommation dans le pipelinage grâce à des itérateursUn itérateur a trois étapes:
OuvrirNextFermer
06/05/09 nfe206 M. Scholl 139
Exemple d’itérateurs pour SelBalOpenScan ( R) {
p:= première page de R;n:= premier nuplet dans p;Fin:=false;
}NextScan ( R) {
If (p entièrement lue) {If pas de page suivante {
Fin:=true;Return;
}Else p:= page suivante;
lire page p;n:=premier nuplet de p;
}vieuxn:=nIncrémenter n au nuplet suivant dans p;Return vieuxn
}
Closescan ® {Libérer ressourcesRetrun
}}
06/05/09 nfe206 M. Scholl 140
Exemple d’itérateurs pour SelBal (fin)
CloseScan ( R) {libérer ressources;Return
}
06/05/09 nfe206 M. Scholl 141
Exemple d’itérateurs pour la jointure par boucles imbriquées
OpenBI (R,I) {OpenScan ( R);OpenIndex(I);
}NextBI(R,I) {
IF (Fin = false) {n:=NextScan ( R);for each a in NextIndex(I,n,at),
n’:=AccessbyRowid(a)Return (n,n’)
Else {Return
}}
Else {Return
}}
06/05/09 nfe206 M. Scholl 142
Itérateurs pour la jointure par boucles imbriquées (fin)
CloseBI (R,I) {CloseScan ( R);CloseIndex (I);Return
}
06/05/09 nfe206 M. Scholl 143
Langage intermédiaire: primitives pour un PEP
Un PEP montre de façon schématique una rbre d’opérations (primitives)La liste des primitives que nous avons vue n’est pas exhaustiveElle est résumée ci-dessous
06/05/09 nfe206 M. Scholl 144
Langage intermédiaire: primitives pour un PEP
*TRI (Fichier) -> Fichier M tampons*SelBal (Fichier) -> Fichier 2 TamponsTrav(I,a) -> <rowid> ou <adresse-bloc>*SelInd (I,a) -> Fichier 2 tampons
utilise Trav*SortProj (F/I) -> Fichier 2 tampons utilise SelBal ou SelInd*HashProj (F) -> F M tampons
utilise SelBal* on pt faire des sél/proj en même temps
06/05/09 nfe206 M. Scholl 145
Langage intermédiaire: primitives pour un PEP
*BIS (F1,F2) -> F M tampons utilise BIM*BISM (F1,F2) -> F M tampons utilise BIM*nestedloop (F1,I) -> F 2 tampons utilise TRAV*TRI-FUSION(F1,F2) ->F M tampons*Grace Hash-Join (F1,F2) -> F M tampons utilise BISM
* on pt faire des sél/proj en même temps