Algèbre Relationnelle : Implémentation

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Module Systèmes d’exploitation
L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exécution. Estimation du coût de chaque plan généré.
Optimisation des requêtes
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : MTH ( Multidimensional trie hashing )
Rappels. Les Systèmes de Gestion de Bases de Données (SGBD) L'algèbre relationnelle.
Évaluation des requêtes relationnelles
Regroupement (clustering)
Fonctionnalités des SGBD
Le Modèle Logique de Données
Witold Litwin Structures physiques Witold Litwin
Algèbre relationnelle
Optimisation algébrique de requêtes relationnelles
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
R. Saint-Paul, G. Raschia and N. Mouaddib IRIN, Nantes (France)
Optimisation de Requêtes
LE MODELE RELATIONNEL INVENTE PAR T. CODD (IBM SAN-JOSE)
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Optimisation de Requêtes
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Initiation au système d’information et aux bases de données
Contrôles d'accès aux données
Eléments d ’algèbre relationnelle
Application des algorithmes génétiques
Algèbre relationnelle
Synchronisation et communication entre processus
LANGAGES LIES AU MODELE RELATIONNEL
Chap 4 Les bases de données et le modèle relationnel
Calcul Relationnel Chapitre 4, Section 4.3.
Définition d’un maillon de liste
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
L’utilisation des bases de données
Algèbre relationnelle et SQL
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Sections sélectionnées du Chapitre 11
Staf 2x Cours de bases de données
1 Evaluation des Operations Relationnelles Chapitre 14, Section 14.4.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Algèbre Relationnelle
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Hachage Extensible.
1 Survol du Stockage et de lIndexage Chapitre 8. 2 Objectifs Stockage persistant Organisation des fichiers Fichiers de données Fichiers dindexes Operations.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
Inventé par T. Codd (IBM Recherche)
Les concepts et les méthodes des bases de données
Introduction.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Initiation MS Access 2010 Requêtes - Sélection (travail en autonomie)
Traduction des opérations sous MySQL
Bases de données   J-L Hainaut III. Méthodologie des bases de données [long] 1. Méthodologie des BD5. Conception physique 2. Le modèle Entité-association6.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 BDs Orientées Objets Witold LITWIN. 2 Pourquoi ? F Les BDs relationnelles ne sont pas adaptées aux applications CAD/CAM, cartes géo... F le problème.
Optimisation de requêtes
1 G. Gardarin Optimisation de Requêtes  1. Introduction  2. Arbres relationnels  3. Restructuration algébrique  4. Modèle de coût  5. Choix du meilleur.
OPTIMISATION Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Sélection de colonnes (la projection)
Le modèle relationnel Plan 1. Concepts descriptifs
22/04/2015© Robert Godin. Tous droits réservés.1 10 Évaluation des requêtes relationnelles n SQL – QUOI n Évaluateur de requêtes du SGBD – COMMENT – en.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Structures de données avancées : Principales structures de fichiers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Introduction Module 1.
Transcription de la présentation:

Algèbre Relationnelle : Implémentation Rappel de l'algèbre Structures d'indexation et placement Algorithme de sélection Algorithme de jointure

Méthodes d’accès aux données Opérations relationnelles 1. RAPPELS Gestion de Mémoire Verrous Gestion des Journaux Méthodes d’accès aux données Opérations relationnelles Moteur d’exécution Optimiseur Analyseur sémantique Interface Système opérationnel

Langages de requêtes Deux langages de requêtes à fondements mathématiques sont à la base de SQL : Calcul relationnel: Permet aux utilisateurs de décrire ce qu’ils veulent, plutôt que la manière dont ce qu’ils veulent doit être calculé. (Non opérationnel, déclaratif.) Algèbre relationnelle: Plus opérationnelle, très utile pour représenter les plans d’exécution.

Calcul Relationnel Dérivé de la logique Requêtes de la forme {X | Formule(X, Y) } X est un vecteur de variables non quantifiées (x1, x2, …) Y est un vecteur de variables quantifiées ((/) y1, y2, …) Chaque variable représente une colonne de table {(x1,x2) |  y1 (Vins(x1,x2,.,y1) AND y1 = 1999) }

Algèbre relationnelle Opérations de base: Sélection (  ) Sélectionne un sous-ensemble des lignes d’une relation. Projection (  ) Efface des colonnes d’une relation [et élimine les doubles]. Produit Cartésien ( X ) Permet de combiner deux relations. Différence ( - ) Elimine les tuples de R1 contenus dans R2 Union ( ) Constitue une relation R avec les tuples de R1 et ceux de R2

Algèbre relationnelle Opérations additionnelles: Jointure ( ||) Combinaison de produit cartésien et sélection sur colonne  comparables (=, <, >, ...) Intersection Constitue une relation R avec les tuples appartenant à la fois à R1 et R2 Chaque opération retournant une relation, les opérations peuvent être composées! L’algèbre est fermée.

Division C= A / B C(X) est la division de A (X, Y) par B (Y) ssi C contient tous les tuples ( x ) tels que (y) B, ( x, y ) A S# P# S1 P1 S1 P2 S2 P1 S2 P3 P# P1 P2 S# S1 Quels sont les fournisseurs de toutes les pièces C B A

2.STRUCTURE PHYSIQUE DES TABLES Cas typique Index plaçant sur clé primaire Fichier type VSAM (B+ tree, trié sur clé primaire) Valeur de clé  adresse tuple Plusieurs index non plaçants sur clé secondaire Valeur de clé  liste d'adresses de tuples Variantes Hachage sur clé primaire Table partitionnée Hachage sur clé secondaire, index par partition Placement multi-attributs

Exemple FICHIERS DE VINS INDEX PRIMAIRE SUR NV : INDEX SECONDAIRE SUR CRU : (NV,CRU,QUALITE,DEGRE,MILLESIME) 1-@1 2-@2 … 25-@25 Beaujolais 1,5,18 Chenas 2,7,14 1,Beaujolais, Excellente, 11,1987 Julienas 3,6,15,25 2, Chenas,Mediocre,12,1990 3, Julienas, Mediocre,12,1990 5, Beaujolais, Bonne,10,1985 6, Julienas, Mediocre,12,1987 7, Chenas, Excellente,11,1989 INDEX SECONDAIRE SUR DEGRE: 14, Chenas, Bonne,10,1994 10 5,14,18 15, Julienas, Excellente,11,1995 11 1,7,15 18, Beaujolais, Bonne,10,1988 12 2,3,6,25 25 ,Julienas,Mediocre,12,1990

Placement Multi-dimensionnel 1. Insertion Eclatement progressif du fichier selon les bits des fonctions de hachage sur différents attributs 2. Recherche Codage du critère par les fonctions de hachage Balayage de p << N régions Exemple A1 = CRU Hachage selon 1e lettre A2 = DEGRE Hachage selon entier CRU = CHABLIS ET DEGRE = 12  Région B101

Index Bitmap Index bitmap Cas des index peu discriminants Exemple 10**6 lignes de commandes 100 produits Index sur produit  10**4 adresses par entrées !! Index lourd à manipuler ! Variante : Index bitmap Index bitmap Table de bits telle que Bit [i,j] = 1 si le ie tuple référence la valeur codée j Accélérateur d'accès très utile et compacte pour attribut peu discriminant

Exemple Qui a acheté P2 ? Qui a acheté P2 ou P4 ? Ménagère Produit Coût P1 P2 P3 P4 P5 P2 120 0 1 0 0 0 P1 80 1 0 0 0 0 P3 150 0 0 1 0 0 P4 70 0 0 0 1 0 Qui a acheté P2 ? Qui a acheté P2 ou P4 ? Qui a acheté P2 ou P4 et pas P3 ?

3. EXECUTION DES SELECTIONS CAS SANS INDEX Filtrage séquentiel de la relation Peut être réalisé par un automate matériel Algorithme Select (R, Q) : Foreach page p de R do { Read (p); Foreach tuple t de p { if CheckS (t, Q) then result = result  t ;} ; }

Exemple d'automate CheckS (Couleur = "ROUGE" ou "ROSE") <> Init R O U G <> <> S <> <> Echec E E Succès

Sélection via index Cas avec index Variante : Cas avec hachage unidimensionnel (Isam, Arbre-B) multi-dimensionnel (Grid file, Arbre de prédicat) Variante : Cas avec hachage unidimensionnel multi-dimensionnel (réduction du balayage)

Utilisation d'Index B-tree Intersection et union de listes d'adresses de tuples Accès aux tuples dont les identifiants sont retenus Vérification du reste du critère Exemple : Utilisation de tous les index (CRU = "CHABLIS") AND (MILL > 1999) AND (DEGRE = 12) L = C  (M1  M2  …  Mp)  D Accéder aux tuples de L Exemple : Choix du meilleur index Accès via l'index (CRU = "CHABLIS") Vérification du reste du critère sur les tuples

Utilisation d'index Bitmap Détermination des adresses des tuples candidats Possibilité de mixer avec des index B-Tree Très utile pour les agrégats Somme des coûts dépensés pour produit P2 Et le data mining …

4. EXECUTION DES JOINTURES Opération essentielle des SGBDR De multiples algorithmes Sans index : réduire les balayages Optimiser les comparaisons Créer dynamiquement des index ou tables de hachage Avec index Profiter au mieux des index Toujours : Réduire I/O et temps CPU

Jointure et opérateurs similaires Les mêmes types d’algorithmes peuvent êtres utilisés pour les autres opérateurs binaires Variations : Nested Loop Join Block Nested Loop Join Index Join Sort Merge Join Hash Join Hybrid Hash Join Pipelined Hash Join

Évaluations avec Mémoire On veut joindre les tables CLIent et COMmandes |CLI| = Nbre de pages occupées par CLI ||CLI|| = Nbre de tuples dans CLI |CLI| << |COM| M = Nbre de pages mémoires disponibles (quelques approximations pour simplifier les formules) Coût = Nbre d’I/O (on ne distingue pas I/O séquentielle et aléatoire)

Jointure avec un index (Index Join) Cas avec 1 index sur R1 Pour chaque page q de R2 Lire (q) Pour chaque tuple t de q Accéder a R1 via index Joindre si succès Coût = |R2| + ||R2||*(n+1) avec n  2

Prise en compte de la mémoire Hypothèse : index sur la clé primaire de CLI L’index a n niveaux et tient sur p pages Principe : (équijoins) pour chaque commande, récupérer le n° de client, parcourir l’index et retrouver le client Brut Force (ou M = 0) Coût = ||COM||  (n+1) + |COM| M = |CLI| + p Coût = |COM| + p + |CLI| Intérêt de la technique ???

Jointure avec 2 index Les indexes sont triés Fusion des index B-Tree, B+ Tree Les articles ne sont pas forcément triés Fusion des index Couples (@t1, @t2) des tuples joignant Appelé index de jointure Trié sur @t1, @t2 Accès aux tuples et concaténation Remarque : Possibilité de maintenir l'index de jointure

Jointure sans index (Nested Loop) Cas sans index  balayages multiples Par boucle imbriquée Foreach page p de R1 Foreach page q de R2 Foreach tp de p Foreach tq de q { if CheckS (t, Q) then result = result  (tp||tq) ;} ; Coût = page(R1) * page(R2) + page(R1)

Prise en compte de la mémoire Principe : Pour chaque client, lire ttes les commandes et comparer Brut Force : coût = ||CLI||  |COM| + |CLI| M = 0 : aucune bufferisation  coût = |CLI|  |COM| + |CLI| M >= |CLI| : on cache CLI dans M  coût = |CLI| + |COM| Entre les deux : on cache M pages de CLI  coût = (|CLI|/M)  |COM| + |CLI| (B.N.L.)

Tri-Fusion (Sort-Merge Join) Par tri-fusion Trier (R1, AttJ) Trier (R2, AttJ) Fusionner (R1, R2) Coût = page(R1) LOG page(R1) + page(R2) LOG page(R2) + page( R1) + page(R2)

Prise en compte de la mémoire Principe : (équijoins) Trier les deux relations sur l’attribut de jointure Parcourir simultanément les deux relations et joindre Si M est trop petite  Trôp coûteux ! Si M >= sqr(|COM|)  coût = 3  (|CLI| + |COM|) Si une des relations est déjà triée (ex. CLI est placée sur la clé primaire) on économise la phase de tri (ici 2  |CLI|)

Jointure par Hachage On crée un fichier haché (ou indexé) Hacher (R1) (plus petite relation) Pour chaque page p de R2 Lire (p) Pour chaque tuple t de p Accéder au fichier aléatoire Ajouter la concaténation au résultat si succes Coût = page(R1) + A page(R1) + page(R2) + A page(R2)

Amélioration par Tableaux de Bits Tableau de bits par hachage de R1 en mémoire pour éliminer les accès sans chance de jointure lors de la lecture de R2. Utilisation d'une fonction g distribuant sur un vecteur de bits assez long … R2 --> g(B) 1 . R1 --> g(A)

Prise en compte de la mémoire Hypothèse M >=|CLI| Principe (équijoins) : Charger CLI et hacher la relation en mémoire en n paquets (n du même ordre que ||CLI||) Pour chaque tuple de COM, tester la table de hachage Coût = |CLI| + |COM| Différence avec le Nested Loop ?

Jointure par Bi-hachage Hachage des deux tables en paquets en mémoire (virtuelle) par une même fonction h Jointure des paquets de même rang R2 --> h(B) R1 --> h(A) Jointure R1.A = R2.B

Grace Hash Join Hypothèse : M >= sqr(|COM|) Principe : Hacher sur le disque CLI et COM en N paquets. N est calculé de façon à ce que |paquet| < M Joindre chaque paquet de CLI avec chaque paquet de COM coût = 3  (|CLI| + |COM|)

Hybrid Hash Join Exemple M = |CLI|/n Principe : Hacher CLI en n paquets. Le paquet 1 est conservé en mémoire les paquets 2 à n sont réécris sur disque. Hacher COM en n paquets. Le paquet 1 est testé immédiatement en mémoire avec le paquet 1 de CLI. Les autres sont réécris sur disque Coût : (|CLI|+|COM|)  ( 1 + 2(n-1)/n) A.N. : n = 2  Coût = 2  (|CLI|+|COM|)

Mode pipeline ou bloquant Le pipeline sort un tuple résultat dès qu'il est calculé Pas nécessaire d'attendre le dernier tuple résultat pour débloquer l'utilisateur Plus efficace vu de l'utilisateur Opérateur bloquant Tri Opérateur non bloquant Sélection, hachage

Hachage et Pipeline Probe Build Test Scan2 COM Scan1 CLI COM CLI Test présence dans table hachée Insertion en Table hachée Build Test Scan2 Scan1 COM CLI COM CLI

HashJoin: Build-Probe is implemented by build output buffer R R hash table h(R.a) R S S h(S.b) probe Memory

5. CONCLUSION Problème essentiel des SGBD De multiples algorithmes possibles Pas d'algorithme toujours meilleur ! Nécessite d'un modèle de coût pour choisir le meilleur algorithme Choix souvent fait à la compilation