Cours EDD 240328 115957
Cours EDD 240328 115957
Cours EDD 240328 115957
de données
Master 2 SID
Département d’Informatique
Universtié de Laghouat
Programme :
1. Contexte et problématique
2. Concepts et définitions
3. Modélisation
4. Processus ETL (Extract Transform Load)
5. Conception physique : Optimisation des
performances
Contexte : Évolution des BDDs
Des organismes :
I de plus en plus riche en données,
I … mais pauvres en connaissnaces.
Contexte : Données & Connaissances
Des organismes :
I de plus en plus riche en données,
I … mais pauvres en connaissnaces.
Des organismes :
I de plus en plus riche en données,
I … mais pauvres en connaissnaces.
Des organismes :
I de plus en plus riche en données,
I … mais pauvres en connaissnaces.
Question :
I Comment aller des données aux Connaissances ?
Contexte : Données & Connaissances
Question :
I Comment aller des données aux Connaissances ?
Question :
I Comment aller des données aux Connaissances ?
Question :
I Comment aller des données aux Connaissances ?
I Pas d’historisation.
Contexte : Données & Connaissances
Question :
I Comment aller des données aux Connaissances ?
I Pas d’historisation.
Problématique :
I Besoins de connaissances : Prise de décisions
stratégiques
Contexte : Données & Connaissances
Problématique :
I Besoins de connaissances : Prise de décisions
stratégiques
Problématique :
I Besoins de connaissances : Prise de décisions
stratégiques
Problématique :
I Besoins de connaissances : Prise de décisions
stratégiques
Problématique :
I Besoins de connaissances : Prise de décisions
stratégiques
Il faut donc :
I Avoir une information globale (générale) sur l’activité
de l’entreprise
I Accés rapide à l’information stratégique.
Contexte : Données & Connaissances
Il faut donc :
I Avoir une information globale (générale) sur l’activité
de l’entreprise
I Accés rapide à l’information stratégique.
I Solution :
I Mettre en place un SI dédié aux applications
décisionnelles : Entrepôt de données (Data Warehouse)
Entrepôt de données : Définition
Entrepôt de données
Un entrepôt de données est une collection de données
orientées sujets, intégrées, non volatiles et historisées,
organisées pour un processus d’aide à la décision.
Entrepôt de données : Définition
Entrepôt de données :
I Orientées sujet : Les données des entrepôts sont
organisées par sujet (thème) plutôt que par application.
Par exemple, une chaîne de magasins d’alimentation
organise les données de son entrepôt par rapport aux
ventes qui ont été réalisées par produit et par magasin,
au cours d’un certain temps.
Entrepôt de données : Définition
Entrepôt de données :
I Orientées sujet : Les données des entrepôts sont
organisées par sujet (thème) plutôt que par application.
Par exemple, une chaîne de magasins d’alimentation
organise les données de son entrepôt par rapport aux
ventes qui ont été réalisées par produit et par magasin,
au cours d’un certain temps.
I Intégrées : Les données provenant des différentes
sources doivent être intégrées, avant leur stockage dans
l’entrepôt de données. L’intégration (mise en
correspondance des formats, par exemple), permet
d’avoir une cohérence de l’information.
Entrepôt de données : Définition
Entrepôt de données :
I Non volatiles : Les données de l’entrepôt sont
permanentes et ne peuvent pas être modifiées. Le
rafraîchissement de l’entrepôt consiste à ajouter de
nouvelles données, sans modifier ou perdre celles qui
existent. On y intègre seulement de nouvelles données
datées qui viennent s’ajouter aux précédentes.
Entrepôt de données : Définition
Entrepôt de données :
I Non volatiles : Les données de l’entrepôt sont
permanentes et ne peuvent pas être modifiées. Le
rafraîchissement de l’entrepôt consiste à ajouter de
nouvelles données, sans modifier ou perdre celles qui
existent. On y intègre seulement de nouvelles données
datées qui viennent s’ajouter aux précédentes.
I Historiées : La prise en compte de l’évolution des
données est essentielle pour la prise de décision. Par
exemple, on utilise des techniques de prédiction en
s’appuyant sur les évolutions passées pour prévoir les
évolutions futures.
Entrepôt de données : Objectifs
Entrepôt de données :
I Organisation cohérente des informations de l’entreprise
Entrepôt de données : Objectifs
Entrepôt de données :
I Organisation cohérente des informations de l’entreprise
I Unification et globalisation de l’information de
l’entreprise
Entrepôt de données : Objectifs
Entrepôt de données :
I Organisation cohérente des informations de l’entreprise
I Unification et globalisation de l’information de
l’entreprise
I Accès rapide à toute l’information de l’entreprise
Entrepôt de données : Objectifs
Entrepôt de données :
I Organisation cohérente des informations de l’entreprise
I Unification et globalisation de l’information de
l’entreprise
I Accès rapide à toute l’information de l’entreprise
I Extraction des connaissances (Qualité de l’information)
Entrepôt de données : Objectifs
Entrepôt de données :
I Organisation cohérente des informations de l’entreprise
I Unification et globalisation de l’information de
l’entreprise
I Accès rapide à toute l’information de l’entreprise
I Extraction des connaissances (Qualité de l’information)
I Outils (applications) d’aide à la décision (Intelligence
d’affaire)
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Volumétrie : Taille de plusieurs téra octets
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Volumétrie : Taille de plusieurs téra octets
I Requêtes complexes : Exigence des décideurs
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Volumétrie : Taille de plusieurs téra octets
I Requêtes complexes : Exigence des décideurs
I Complexité de la conception physique :
I Index
I Vues matérialisées
I Fragmentataion (Horizontale, Verticale, Hybride)
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
I Simplicité d’utilisation : 1 seul SGBD, 1 seule requête.
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
I Simplicité d’utilisation : 1 seul SGBD, 1 seule requête.
I Qualité des données : Nettoyées, Organisées et classifiées
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
I Simplicité d’utilisation : 1 seul SGBD, 1 seule requête.
I Qualité des données : Nettoyées, Organisées et classifiées
I Données historiques : Compréhension, Exploitation.
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
I Simplicité d’utilisation : 1 seul SGBD, 1 seule requête.
I Qualité des données : Nettoyées, Organisées et classifiées
I Données historiques : Compréhension, Exploitation.
I Désavantages :
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
I Simplicité d’utilisation : 1 seul SGBD, 1 seule requête.
I Qualité des données : Nettoyées, Organisées et classifiées
I Données historiques : Compréhension, Exploitation.
I Désavantages :
I Complexité de mise en place : 6= SGBD et 6= structures de
données.
Entrepôt de données : Caractéristiques
Entrepôt de données :
I Avantages :
I Simplicité d’utilisation : 1 seul SGBD, 1 seule requête.
I Qualité des données : Nettoyées, Organisées et classifiées
I Données historiques : Compréhension, Exploitation.
I Désavantages :
I Complexité de mise en place : 6= SGBD et 6= structures de
données.
I Coûts : Réalisation, Maintenance, Formation des
utilisateurs.
Entrepôt de données : Composants
Entrepôt de données :
I Sources : BDD,
Files,…
I Entrepôt,
I Méta-données :
Schéma, Users, …
I Serveur OLAP : Accès
I Outils de front-end :
rapports, statistiques,
data mining
Processus ETL (Extract Transform Load)
Processus ETL :
I Extract : Extraction des données depuis les différentes
sources (6= SGBDs et 6= formats)
Processus ETL (Extract Transform Load)
Processus ETL :
I Extract : Extraction des données depuis les différentes
sources (6= SGBDs et 6= formats)
I Exemple de sources de données :
Processus ETL (Extract Transform Load)
Processus ETL :
I Extract : Extraction des données depuis les différentes
sources (6= SGBDs et 6= formats)
I Exemple de sources de données :
I Base de données relationelles (6= formats)
Processus ETL (Extract Transform Load)
Processus ETL :
I Extract : Extraction des données depuis les différentes
sources (6= SGBDs et 6= formats)
I Exemple de sources de données :
I Base de données relationelles (6= formats)
I Fichiers CSV, Excel
Processus ETL (Extract Transform Load)
Processus ETL :
I Extract : Extraction des données depuis les différentes
sources (6= SGBDs et 6= formats)
I Exemple de sources de données :
I Base de données relationelles (6= formats)
I Fichiers CSV, Excel
I Fichiers XML
Processus ETL (Extract Transform Load)
Processus ETL :
I Extract : Extraction des données depuis les différentes
sources (6= SGBDs et 6= formats)
I Exemple de sources de données :
I Base de données relationelles (6= formats)
I Fichiers CSV, Excel
I Fichiers XML
I Données sur papier ! !….
Processus ETL (Extract Transform Load)
Processus ETL :
I Transform : trier, filtrer, agrèger, regrouper, etc.
Processus ETL (Extract Transform Load)
Processus ETL :
I Transform : trier, filtrer, agrèger, regrouper, etc.
I Exemple :
I Représentation uniforme
Processus ETL (Extract Transform Load)
Processus ETL :
I Transform : trier, filtrer, agrèger, regrouper, etc.
I Exemple :
I Représentation uniforme
I Nettoyage des données : sélection, suppression des
doublons,…
Processus ETL (Extract Transform Load)
Processus ETL :
I Transform : trier, filtrer, agrèger, regrouper, etc.
I Exemple :
I Représentation uniforme
I Nettoyage des données : sélection, suppression des
doublons,…
I Transformation : jointure, agrégation,…
Processus ETL (Extract Transform Load)
Processus ETL :
I Transform : trier, filtrer, agrèger, regrouper, etc.
I Exemple :
I Représentation uniforme
I Nettoyage des données : sélection, suppression des
doublons,…
I Transformation : jointure, agrégation,…
I Load : Stockage (chargement) des résultats de
transformation dans l’entrepôt.
Processus ETL (Extract Transform Load)
Processus ETL :
I Transform : trier, filtrer, agrèger, regrouper, etc.
I Exemple :
I Représentation uniforme
I Nettoyage des données : sélection, suppression des
doublons,…
I Transformation : jointure, agrégation,…
I Load : Stockage (chargement) des résultats de
transformation dans l’entrepôt.
I 70% de l’effort consacré à un projet de DW est dépensé
dans l’ETL
Processus ETL (Extract Transform Load)
Processus ETL :
I Quelques outils open source :
I Apache Airflow ⇒ https ://airflow.apache.org/
I CloverETL ⇒ https ://sourceforge.net/projects/cloveretl/
I Jaspersoft ETL ⇒
https ://community.jaspersoft.com/project/jaspersoft-etl
I Talend Open Studio ⇒ https ://www.talend.com/pro-
ducts/data-integration/data-integration-open-studio/
I Apatar ⇒ http ://www.apatar.com/
Exploitation de l’entrepôt : Pourquoi stocker les
données ?
Rappels :
I BDD : Collection de données interreliées, stockées
ensemble pour servir une ou plusieurs applications de
façon optimale. Le stockage des données est
indépendant des programmes d’utilisation.
Entrepôt de données : Optimisation des
performances
Rappels :
I BDD : Collection de données interreliées, stockées
ensemble pour servir une ou plusieurs applications de
façon optimale. Le stockage des données est
indépendant des programmes d’utilisation.
I SGBD : Ensemble des programmes :
Entrepôt de données : Optimisation des
performances
Rappels :
I BDD : Collection de données interreliées, stockées
ensemble pour servir une ou plusieurs applications de
façon optimale. Le stockage des données est
indépendant des programmes d’utilisation.
I SGBD : Ensemble des programmes :
I Création, stockage, maintenance, MAJ et recherche dans
la BDD.
I Interfaces nécessaires aux différentes formes
d’utilisation de la BDD.
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Conception, Création, Maintenance.
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Conception, Création, Maintenance.
I Gestion des données au niveau logique (définition de
schéma conceptuel)
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Conception, Création, Maintenance.
I Gestion des données au niveau logique (définition de
schéma conceptuel)
I Gestion des données au niveau physique (tables,
stockage, organisation des données)
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Conception, Création, Maintenance.
I Gestion des données au niveau logique (définition de
schéma conceptuel)
I Gestion des données au niveau physique (tables,
stockage, organisation des données)
I Optimisation des performances (choix des structures
d’optimisation : index, frgaments, vues matérialisées,
..etc)
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Conception, Création, Maintenance.
I Gestion des données au niveau logique (définition de
schéma conceptuel)
I Gestion des données au niveau physique (tables,
stockage, organisation des données)
I Optimisation des performances (choix des structures
d’optimisation : index, frgaments, vues matérialisées,
..etc)
I Tuning : Réglage des structures d’optimisation.
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Détermination des accès fréquents
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Détermination des accès fréquents
I Choix des bonnes structures physiques : Partitionnement
de tables, index, etc.
Entrepôt de données : Optimisation des
performances
Rappels :
I Administrateur de la BDD :.
I Détermination des accès fréquents
I Choix des bonnes structures physiques : Partitionnement
de tables, index, etc.
I La modification ou l’ajout de structures physiques mieux
adaptées permet d’améliorer les performances de
traitement des requêtes
Entrepôt de données : Optimisation des
performances
Rappels :
I Objectif : Obtenir les meilleures performances :
Entrepôt de données : Optimisation des
performances
Rappels :
I Objectif : Obtenir les meilleures performances :
I Temps d’accès
Entrepôt de données : Optimisation des
performances
Rappels :
I Objectif : Obtenir les meilleures performances :
I Temps d’accès
I Espace mémoire utilisé
Entrepôt de données : Optimisation des
performances
Rappels :
I Objectif : Obtenir les meilleures performances :
I Temps d’accès
I Espace mémoire utilisé
I Espace disque occupé.
Entrepôt de données : Optimisation des
performances
Techniques d’optimisation :
Fragmentation
verticale Mono
table
Redandantes Indexes
Milti
tables
Vues
matérialisées
Techniques
d’optimisaion
Fragmentation
horizentale
Non
redandantes
Traitement
parallèl
Optimisation des performances : Pourquoi les index ?
Rappels :
I Un index sur une table va permettre au SGBD d’accéder
très rapidement aux enregistrements, selon la valeur
d’un ou plusieurs champs.
Optimisation des performances : Pourquoi les index ?
Rappels :
I Un index sur une table va permettre au SGBD d’accéder
très rapidement aux enregistrements, selon la valeur
d’un ou plusieurs champs.
I Index simple : Sur une seule table (Arbre-B ou index
binaire)
Optimisation des performances : Pourquoi les index ?
Rappels :
I Un index sur une table va permettre au SGBD d’accéder
très rapidement aux enregistrements, selon la valeur
d’un ou plusieurs champs.
I Index simple : Sur une seule table (Arbre-B ou index
binaire)
I Index de jointure : Sur plusieurs tables dans un schéma
en étoile (index de jointure binaire)
Optimisation des performances : Pourquoi les index ?
Rappels :
I SELECT * FROM Etud WHERE Moy >= 10
Optimisation des performances : Pourquoi les index ?
Rappels :
I SELECT * FROM Etud WHERE Moy >= 10
I Sans index sur Moy : Pour déterminer les enregistrements
vérifiant la condition Moy >= 10, le SGBD doit vérifier
cette condition pour chaque enregistrement de la table.
Optimisation des performances : Pourquoi les index ?
Rappels :
I SELECT * FROM Etud WHERE Moy >= 10
I Sans index sur Moy : Pour déterminer les enregistrements
vérifiant la condition Moy >= 10, le SGBD doit vérifier
cette condition pour chaque enregistrement de la table.
I Avec un index sur Moy : Le SGBD parcours l’index pour
les identifier les enregistrements vérifiant la condition
Moy >= 10
Optimisation des performances : Index B-Arbre
Rappels :
I BDD classique : La structure la plus courante pour les
index est l’Arbre-B (B-tree).
25 40
19 21 23 25 33 37 40 44 46
r6 r3 r4 r1 r5 r9 r2 r7 r8
Optimisation des performances : Index Binaire
(BitMap)
Rappels :
I Soit un attribut A, prenant n valeurs possibles v1 , . . . , vn
(domaine).
Optimisation des performances : Index Binaire
(BitMap)
Rappels :
I Soit un attribut A, prenant n valeurs possibles v1 , . . . , vn
(domaine).
I Création d’un index bitmap sur l’attribut A :
I On crée n vecteurs de bit, (un vecteur pour chaque valeur
vi )
Optimisation des performances : Index Binaire
(BitMap)
Rappels :
I Soit un attribut A, prenant n valeurs possibles v1 , . . . , vn
(domaine).
I Création d’un index bitmap sur l’attribut A :
I On crée n vecteurs de bit, (un vecteur pour chaque valeur
vi )
I Chaque vecteur contient un bit pour chaque tuple (ligne)
t de la table
Optimisation des performances : Index Binaire
(BitMap)
Rappels :
I Soit un attribut A, prenant n valeurs possibles v1 , . . . , vn
(domaine).
I Création d’un index bitmap sur l’attribut A :
I On crée n vecteurs de bit, (un vecteur pour chaque valeur
vi )
I Chaque vecteur contient un bit pour chaque tuple (ligne)
t de la table
I Le bit corréspondant à un tuple t est à 1 si : t.A = vi , à 0
sinon
Index Binaire (BitMap) : Exemple
Rappels :
I Enseignant(NSS, Nom, Grade, Salaire)
I Domaine(Grade)=MAB, MAA, MCB, MCA, P
RowID NSS Nom Grade Salaire
00051 :000 :0065 11111 AAAA MAA 26511
I 00019 :000 :0066 66666 BBBB MCA 30000
00071 :000 :0043 22222 CCCC MAA 26511
00024 :000 :0095 44444 DDDD P 50000
Index Binaire (BitMap) : Exemple
Rappels :
I SQL : CREATE INDEX BITMAP ON Enseignant(Grade) ;
Index Binaire (BitMap) : Exemple
Rappels :
I SQL : CREATE INDEX BITMAP ON Enseignant(Grade) ;
RowID MAB MAA MCB MCA P
00051 :000 :0065 0 1 0 0 0
I
Index Binaire (BitMap) : Exemple
Rappels :
I SQL : CREATE INDEX BITMAP ON Enseignant(Grade) ;
RowID MAB MAA MCB MCA P
00051 :000 :0065 0 1 0 0 0
I 00019 :000 :0066 0 0 0 1 0
Index Binaire (BitMap) : Exemple
Rappels :
I SQL : CREATE INDEX BITMAP ON Enseignant(Grade) ;
RowID MAB MAA MCB MCA P
00051 :000 :0065 0 1 0 0 0
I 00019 :000 :0066 0 0 0 1 0
00071 :000 :0043 0 1 0 0 0
Index Binaire (BitMap) : Exemple
Rappels :
I SQL : CREATE INDEX BITMAP ON Enseignant(Grade) ;
RowID MAB MAA MCB MCA P
00051 :000 :0065 0 1 0 0 0
I 00019 :000 :0066 0 0 0 1 0
00071 :000 :0043 0 1 0 0 0
00024 :000 :0095 0 0 0 0 1
Index Binaire (BitMap) : Exemple
Rappels :
I Q1 :SELECT * FROM Enseignant WHERE Grade = ”P” ;
Index Binaire (BitMap) : Exemple
Rappels :
I Q1 :SELECT * FROM Enseignant WHERE Grade = ”P” ;
I On considère le vecteur de bit de la colonne P
I On garde toutes les cellules à 1
I On accède aux enregistrements par l’adresse (ROWID)
Index Binaire (BitMap) : Exemple
Rappels :
I Q1 :SELECT * FROM Enseignant WHERE Grade = ”P” ;
I On considère le vecteur de bit de la colonne P
I On garde toutes les cellules à 1
I On accède aux enregistrements par l’adresse (ROWID)
I Q2 :SELECT COUNT(*) FROM Enseignant WHERE Grade
= ”MAA” ;
Index Binaire (BitMap) : Exemple
Rappels :
I Q1 :SELECT * FROM Enseignant WHERE Grade = ”P” ;
I On considère le vecteur de bit de la colonne P
I On garde toutes les cellules à 1
I On accède aux enregistrements par l’adresse (ROWID)
I Q2 :SELECT COUNT(*) FROM Enseignant WHERE Grade
= ”MAA” ;
I On compte le nombre 1 dans la colonne MAA (C’est
tout ! ! !)
Index Binaire (BitMap) : Exemple
Rappels :
I Q1 :SELECT * FROM Enseignant WHERE Grade = ”P” ;
I On considère le vecteur de bit de la colonne P
I On garde toutes les cellules à 1
I On accède aux enregistrements par l’adresse (ROWID)
I Q2 :SELECT COUNT(*) FROM Enseignant WHERE Grade
= ”MAA” ;
I On compte le nombre 1 dans la colonne MAA (C’est
tout ! ! !)
I Très efficace si le nombre de valeurs n est petit.
Index Binaire (BitMap) : Exemple
Rappels :
I Q1 :SELECT * FROM Enseignant WHERE Grade = ”P” ;
I On considère le vecteur de bit de la colonne P
I On garde toutes les cellules à 1
I On accède aux enregistrements par l’adresse (ROWID)
I Q2 :SELECT COUNT(*) FROM Enseignant WHERE Grade
= ”MAA” ;
I On compte le nombre 1 dans la colonne MAA (C’est
tout ! ! !)
I Très efficace si le nombre de valeurs n est petit.
I Si n est très grand ⇒ Compression de l’index.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Problème fondamental pour les EDD : Performances.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Problème fondamental pour les EDD : Performances.
I EDD : Données colossales + Requêtes complexes.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Problème fondamental pour les EDD : Performances.
I EDD : Données colossales + Requêtes complexes.
I Objectif : Une réponse très rapide ou du moins dans un
délai acceptable.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Problème fondamental pour les EDD : Performances.
I EDD : Données colossales + Requêtes complexes.
I Objectif : Une réponse très rapide ou du moins dans un
délai acceptable.
I Pour une requête q : Même resultat ∀ le schéma physique
mis en place.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Problème fondamental pour les EDD : Performances.
I EDD : Données colossales + Requêtes complexes.
I Objectif : Une réponse très rapide ou du moins dans un
délai acceptable.
I Pour une requête q : Même resultat ∀ le schéma physique
mis en place.
I Mais le temps d’exécution de q peut largement varié
pour 6= schémas physiques
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Problème fondamental pour les EDD : Performances.
I EDD : Données colossales + Requêtes complexes.
I Objectif : Une réponse très rapide ou du moins dans un
délai acceptable.
I Pour une requête q : Même resultat ∀ le schéma physique
mis en place.
I Mais le temps d’exécution de q peut largement varié
pour 6= schémas physiques
I Par conséquence, le choix de la conception physique à
mettre en place a un impact important sur les
performances de l’entrepôt.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Les requêtes définies sur un EDD modélisé par un
schéma en étoile : Requêtes de jointures en étoile (star
join queries)
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Les requêtes définies sur un EDD modélisé par un
schéma en étoile : Requêtes de jointures en étoile (star
join queries)
I Opérations de sélection sur les tables de dimension,
suivies par de multiple opérations de jointures avec la
table des faits.
Index de Jointure Binaire (Bitmap Join Index) :
définition
Problématique :
I Les requêtes définies sur un EDD modélisé par un
schéma en étoile : Requêtes de jointures en étoile (star
join queries)
I Opérations de sélection sur les tables de dimension,
suivies par de multiple opérations de jointures avec la
table des faits.
I De telles requêtes peuvent nécessiter des heures, voir
des jours de temps d’exécution
I Les index de jointure binaire ont été proposés pour
optimiser de telles requêtes.
Index de Jointure Binaire (Bitmap Join Index) :
définition
IJB :
I Un index de jointure binaire est défini sur la table des
faits en utilisant des attributs, non clés, appartenant à
une ou plusieurs tables de dimension.
Index de Jointure Binaire (Bitmap Join Index) :
définition
IJB :
I Un index de jointure binaire est défini sur la table des
faits en utilisant des attributs, non clés, appartenant à
une ou plusieurs tables de dimension.
I Soit A un attribut relatif à une table de dimension D et
ayant n valeurs distinctes v1 , v2 . . . , vn
Index de Jointure Binaire (Bitmap Join Index) :
définition
IJB :
I Un index de jointure binaire est défini sur la table des
faits en utilisant des attributs, non clés, appartenant à
une ou plusieurs tables de dimension.
I Soit A un attribut relatif à une table de dimension D et
ayant n valeurs distinctes v1 , v2 . . . , vn
I Supposons que la table des faits F est composée de m
tuples (enregistrements). La construction de l’index de
jointure binaire défini sur l’attribut A est réalisée de la
manière suivante :
Index de Jointure Binaire (Bitmap Join Index) :
définition
IJB :
I Un index de jointure binaire est défini sur la table des
faits en utilisant des attributs, non clés, appartenant à
une ou plusieurs tables de dimension.
I Soit A un attribut relatif à une table de dimension D et
ayant n valeurs distinctes v1 , v2 . . . , vn
I Supposons que la table des faits F est composée de m
tuples (enregistrements). La construction de l’index de
jointure binaire défini sur l’attribut A est réalisée de la
manière suivante :
I Création de n vecteurs composés chacun de m entrées ;
Index de Jointure Binaire (Bitmap Join Index) :
définition
IJB :
I Un index de jointure binaire est défini sur la table des
faits en utilisant des attributs, non clés, appartenant à
une ou plusieurs tables de dimension.
I Soit A un attribut relatif à une table de dimension D et
ayant n valeurs distinctes v1 , v2 . . . , vn
I Supposons que la table des faits F est composée de m
tuples (enregistrements). La construction de l’index de
jointure binaire défini sur l’attribut A est réalisée de la
manière suivante :
I Création de n vecteurs composés chacun de m entrées ;
I Le i me bit du vecteur correspondant à une valeur vk est
mis à 1 si le tuple de rang i de la table des faits est joint
avec un tuple de la table de dimension D tel que la valeur
de A de ce tuple est égale à vk . Il est mis à 0 dans le cas
contraire.
Index de Jointure Binaire (Bitmap Join Index) :
Exemple
Exemple IJB :
I Considérons un entrepôt de données constitué d’une
table de faits VENTES et deux tables de dimension
CLIENT et TEMPS (voir figure (a))
Index de Jointure Binaire (Bitmap Join Index) :
Exemple
Exemple IJB :
I Considérons un entrepôt de données constitué d’une
table de faits VENTES et deux tables de dimension
CLIENT et TEMPS (voir figure (a))
I Soit la requête q :
Select count(*)
From Ventes V, Client C, Temps T
Where V.CID = C.CID AND V.TID = T.TID
AND C.Ville = ’Alger’ AND T.Mois = ’Mar’.
Index de Jointure Binaire (Bitmap Join Index) :
Exemple
Exemple IJB :
VENTES
RID CID TID Montant
CLIENTS 1 111 11 100
2 111 22 10 TEMPS
CID Nom Ville
3 111 33 258 TID Mois Annee
111 Ali Alger
4 414 11 24 11 Jan 2010
212 Ameur Oran
5 515 22 70 22 Fev 2010
313 Youcef Alger
6 515 11 33 33 Mar 2010
414 Kamel Alger
7 515 44 101 44 Avr 2010
515 Nacer Oran
8 515 33 11
9 313 22 200
10 414 11 55
11 313 11 58
12 212 11 47
(a)
Ville Mois
RID Alger Oran Jan Fev Mar Avr AND
1 1 0 1 0 0 0 0
2 1 0 0 1 0 0 0
3 1 0 0 0 1 0 1
4 1 0 1 0 0 0 0
5 0 1 0 1 0 0 0
6 0 1 1 0 0 0 0
7 0 1 0 0 0 1 0
8 0 1 0 0 1 0 0
9 1 0 0 1 0 0 0
10 1 0 1 0 0 0 0
11 1 0 1 0 0 0 0
12 0 1 1 0 0 0 0
IJB Ville Mois
(b) (c)
Index de Jointure Binaire (Bitmap Join Index) :
Exemple
Exemple IJB :
I Afin d’optimiser le coût de q, l’administrateur crée un
index de jointure binaire sur les attributs Ville et Mois
(figure (b)).
Index de Jointure Binaire (Bitmap Join Index) :
Exemple
Exemple IJB :
I Afin d’optimiser le coût de q, l’administrateur crée un
index de jointure binaire sur les attributs Ville et Mois
(figure (b)).
I Pour répondre à q, l’optimiseur lit les vecteurs de bits
associés aux valeurs ”Alger” et ”Mar”, réalise un AND et
en fin il calcule le nombre de ’1’ dans le vecteur résultat
(Figure (c)).
Index de Jointure Binaire (Bitmap Join Index) :
Avantages
Avantages IJB :
I L’espace nécessaire au stockage des IJB est réduit,
notamment quand la cardinalité des attributs indexés est
relativement faible.
Index de Jointure Binaire (Bitmap Join Index) :
Avantages
Avantages IJB :
I L’espace nécessaire au stockage des IJB est réduit,
notamment quand la cardinalité des attributs indexés est
relativement faible.
I Très bénéfiques pour les requêtes de type Count(*) : La
réponse à ce type de requêtes ne nécessite aucun accès
aux données dans les tables.
Index de Jointure Binaire (Bitmap Join Index) :
Avantages
Avantages IJB :
I L’espace nécessaire au stockage des IJB est réduit,
notamment quand la cardinalité des attributs indexés est
relativement faible.
I Très bénéfiques pour les requêtes de type Count(*) : La
réponse à ce type de requêtes ne nécessite aucun accès
aux données dans les tables.
I Les opérations logiques sur les bits les rendent très
efficaces pour l’optimisation des opérations de jointures.
Problème de selection des index
PSI :
I Un système de base de données traite un ensemble de
requêtes Q = {q1 , q2 , . . . , } soumises respectivement à
des moments différents.
Problème de selection des index
PSI :
I Un système de base de données traite un ensemble de
requêtes Q = {q1 , q2 , . . . , } soumises respectivement à
des moments différents.
I Si une requête qi est traitée par le système à un temps ti ,
il est probable qu’elle sera soumise au système à un
instant tj > ti .
Problème de selection des index
PSI :
I Un système de base de données traite un ensemble de
requêtes Q = {q1 , q2 , . . . , } soumises respectivement à
des moments différents.
I Si une requête qi est traitée par le système à un temps ti ,
il est probable qu’elle sera soumise au système à un
instant tj > ti .
I ⇒ les administrateurs s’intéressent à optimiser le
traitement des requêtes les plus fréquentes.
Problème de selection des index
PSI :
I Un système de base de données traite un ensemble de
requêtes Q = {q1 , q2 , . . . , } soumises respectivement à
des moments différents.
I Si une requête qi est traitée par le système à un temps ti ,
il est probable qu’elle sera soumise au système à un
instant tj > ti .
I ⇒ les administrateurs s’intéressent à optimiser le
traitement des requêtes les plus fréquentes.
I En pratique les requêtes qui sont prise en compte
représentent environ seulement 20% de l’ensemble des
requêtes actives et réalisent 80% des accès aux données
Problème de selection des index
PSI :
I Un système de base de données traite un ensemble de
requêtes Q = {q1 , q2 , . . . , } soumises respectivement à
des moments différents.
I Si une requête qi est traitée par le système à un temps ti ,
il est probable qu’elle sera soumise au système à un
instant tj > ti .
I ⇒ les administrateurs s’intéressent à optimiser le
traitement des requêtes les plus fréquentes.
I En pratique les requêtes qui sont prise en compte
représentent environ seulement 20% de l’ensemble des
requêtes actives et réalisent 80% des accès aux données
I L’ensemble des requêtes sélectionnées pour le processus
d’optimisation est appelé charge de travail (Workload en
Anglais).
Problème de selection des index
PSI :
f f f
I Soit W = {q11 , q22 , . . . , qnn } une charge de n requêtes où
chaque requête qi est caractérisée par sa fréquence
d’utilisation fi .
Problème de selection des index
PSI :
f f f
I Soit W = {q11 , q22 , . . . , qnn } une charge de n requêtes où
chaque requête qi est caractérisée par sa fréquence
d’utilisation fi .
I Une première étape très importante pour la procédure
de sélection des index est l’identification des attributs
pertinents susceptibles d’être indexés. Ces derniers sont
appelés attributs indexables.
Problème de selection des index
PSI
I Pour une requête q ∈ W et une configuration d’index Ci ,
on note le coût d’exécution de q, exploitant Ci , par
χ(q, Ci ).
I Si S(I) désigne l’espace nécessaire pour stocker l’index I,
alors l’espace nécessaire pour stocker Ci est donné par
S(Ci ) = I∈Ci S(I).
P
Problème de selection des index
PSI : Définition
f f f
Étant donnée une charge de requêtes W = {q11 , q22 , . . . , qnn } et
une limite d’espace de stockage Smax , l’objectif du problème
de sélection d’index est de trouver, parmi toutes les configu-
rations possibles, une configuration Copt qui minimise le coût
de la charge W et respecte la limite Smax :
et S(I) ≤ Smax
P
I∈Ci
Problème de selection des index
Complexité :
I Soit k le nombre des attributs indéxables pour une
charge donnée W .
Problème de selection des index
Complexité :
I Soit k le nombre des attributs indéxables pour une
charge donnée W .
I Nombre de possibilité pour sélectionner un seul index :
k
!
k
= 2k − 1
X
n1 =
i=1
i
Problème de selection des index
Complexité :
I Soit k le nombre des attributs indéxables pour une
charge donnée W .
I Nombre de possibilité pour sélectionner un seul index :
k
!
k
= 2k − 1
X
n1 =
i=1
i
Complexité :
I Soit k le nombre des attributs indéxables pour une
charge donnée W .
I Nombre de possibilité pour sélectionner un seul index :
k
!
k
= 2k − 1
X
n1 =
i=1
i
12
10
8
Taille (Go)
0
0 20 40 60 80 100
Cardinalité