Master Exploration Informatique des données DataWareHouse Binôme Ahmed BENSI Enseignant tahar ARIB
SOMMAIRE I. Conception...1 1. Contexte des contrats...1 2. Contexte des factures...1 II. Modèle physique...2 1. Modèle E-A à l aide de Power-AMC...2 2. Optimisation...3 Tablespaces...3 Indexes...3 Partitionnement...4 Vues Matérialisées...4 3. ETL (Talend)...5 Création des connexions vers les bases de données...5 Récupération du schéma de la base...7 Mapping...9 III. Rapports...11 IV. Configuration Matérielle...12 Ahmed BENSI Modélisation multidimensionnelle
I. Conception 1. Contexte des contrats 2. Contexte des factures Ahmed BENSI Modélisation multidimensionnelle 1/12
II. Modèle Physique 1. Modèle E-A Ci-dessous le schéma conceptuel obtenu à l aide du logiciel PowerAMC étudié en licence informatique appliquée. Ahmed BENSI Modélisation multidimensionnelle 2/12
Le modèle physique ainsi que le script SQL de la base sera automatiquement généré par Power- AMC. Nous allons par la suite «optimisé» ce script pour un DWH, en ajoutant notamment le partitionnement, indexes, Par ailleurs nous avons fait quelques choix arbitraires pour la conception de cette base : Ajout de l attribut created_on pour faire apparaître la notion d historique. Les clés primaires des tables de faits seront des séquences. Talend permet la gestion des séquences pendant le chargement. create sequence S_F_CONTRAT START WITH 10000; create sequence S_F_FACTURE START WITH 10000; Remarque : L option start with nous permettra d avoir des numéros de séquences sur 5 chiffres (10 000 99 999). Cela nous évitera des problèmes au chargement. 2. Optimisation Tablespaces Nous avons crées plusieurs tablespaces pour les données et un tablespace pour les indexes. Il faut avoir les privilèges SYS pour créer ces tablespaces et ne pas oublier de les mettre ONLINE : -- tablespace pour les indexes CREATE TABLESPACE "IDX" LOGGING DATAFILE 'C:\oracle\oradata\EID\IDX.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; -- tablespace pour les données CREATE TABLESPACE "DATA_01" LOGGING DATAFILE 'C:\oracle\oradata\EID\DATA_01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; -- De même pour les tabespaces data02 et data03 Indexes bitmap Les index bitmap de jointure sont intéressants pour les opérations de jointure très coûteuses dans les DWH. CREATE bitmap INDEX FC_idx_b1 ON F_CONTRAT(ca_cde) FROM F_CONTRAT FC, D_TPS DT WHERE FC.tps_id = DT.tps_id ; Partitionnement Ahmed BENSI Modélisation multidimensionnelle 3/12
Une autre manière d optimiser notre DWH est le partitionnement (des tables de faits évidement). Nous allons utiliser ici le partitionnement par intervalle (by Range) sur les années. En effet nous avons autant d enregistrements répartis sur les différentes années. Pour cela nous allons modifier le script fourni par Power-AMC comme suit : Drop table F_CONTRAT create table F_CONTRAT ( NUM_C NUMBER(6) not null, CONT_ID NUMBER not null, CON_CREATED_ON CLIENT_ID DATE NUMBER not null, not null, CL_CREATED_ON DATE not null, COM_CREATED_ON COMM_ID DATE NUMBER not null, not null, PROD_ID NUMBER not null, P_CREATED_ON TPS_ID DATE NUMBER not null, not null, CA_CDE NUMBER, QTE_CDEE NUMBER, ANNEE NUMBER, constraint PK_F_CONTRAT primary key (NUM_C) using index tablespace IDX ) partition by range (ANNEE) ( partition part_2001 values less than ('2001') tablespace DATA_01, partition part_2002 values less than ('2002') tablespace DATA_02, partition part_2003 values less than ('2003') tablespace DATA_03); De même pour la table des faits F_FACTURE Remarque : On utilise un tablespace spécialement pour les indexes. Vues Matérialisées Toujours dans le but d accélérer le reporting nous pouvons aussi utiliser des vues matérialiser. L intérêt de celles-ci par rapport aux vues «simples» est que le résultat de cette dernière est stocké (Je passe sur la partie rafraîchissement). Le deuxième intérêt est que Oracle est capable de rediriger les requêtes vers ces vues matérialisées. Exemple de vue matérialisée : Rem tablespace DATA_04 pour les vues matérialisées CREATE MATERIALIZED VIEW Contrats-par-Trimestre TABLESPACE DATA_04 REFRESH COMPLETE -- recalculer toute la vue START WITH sysdate NEXT sysdate+90 - Rafraîchissement planifié ENABLE QUERY REWRITE - Redirection des requêtes vers la MV AS SELECT * from SELECT FC.num_c, DT.trimestre FROM F_CONTRAT FC, D_TPS DT where FC.tps_id = DT.tps_id and DT.MOIS - EXTRACT(MONTH FROM SYSDATE) < 3 ; Remarque : En tant qu utilisateur SYS se donner les droits (grant ) pour pouvoir créer les MV. Ahmed BENSI Modélisation multidimensionnelle 4/12
3. ETL (Talend) Création des connexions vers les bases de données o Vers la base Access La connexion est établie entre Talend et la base access. Ahmed BENSI Modélisation multidimensionnelle 5/12
o Vers la base Oracle 9i Le SGBD Oracle 9i sur une machine virtuelle adresse IP 192.168.1.104 et SID = EID Un utilisateur M2EID08_07 est crée. Ahmed BENSI Modélisation multidimensionnelle 6/12
Récupération du schéma de la base Sur chaque connexion (Access et Oracle), faire un Clic droit sur la connexion puis «retreive schema» pour récupérer le schéma de la base. Création d un Job Pour le chargement de notre DWH, nous commençons toujours par les tables de dimensions, puis les tables de faits (ne pas oublier no validate rely pour éviter le contrôle des clés étrangères pendant le chargement). Par ailleurs nous avons créer autant de job que de chargement de table (dimensions et fait). Ci-dessous le premier job qui concerne le chargement de la table d_client : Ahmed BENSI Modélisation multidimensionnelle 7/12
- Propriété de la table source (access) - Propriété de la table cible (table de dimension, oracle 9i) Remarque : On choisit bien Repository pour voir les tables des bases respectives. Access (base production) Oracle (base EID) Ahmed BENSI Modélisation multidimensionnelle 8/12
Mapping Remarque : la région et le pays ne sont pas dans tables on mets IDF et France par défaut - Séquence : Toujours dans le composant mapping Ahmed BENSI Modélisation multidimensionnelle 9/12
- Récupérer la date (équivalent de sysdate) : A l aide de TOAD, nous constatons que le chargement a bien eu lieu. Remarque TRES IMPORTANTE : TALEND et les autres ETL font des commit au chargement donc pas de rollback ce qui compréhensible vu la quantité de données à charger (impossible à gérer les rollback segments). Ahmed BENSI Modélisation multidimensionnelle 10/12
III. Rapports Listes des contrats par client et le montant et la quantité des produits achetés select DC.CLIENT_ID, count(fc.num_c) as nb_contrat, SUM(FC.CA_CDE) as montant, SUM(FC.QTE_CDEE) as qte from F_CONTRAT FC, D_CLIENT DC where FC.CLIENT_ID = DC.CLIENT_ID GROUP BY DC.CLIENT_ID Listes des factures par client et le montant et la quantité des produits achetés select DC.CLIENT_ID, count(ff.num_c) as nb_factures, SUM(FC.CA_CDE) as montant, SUM(FF.QTE_CDEE) as qte from F_FACTURE FF, D_CLIENT DC where FF.CLIENT_ID = DC.CLIENT_ID GROUP BY DC.CLIENT_ID Ahmed BENSI Modélisation multidimensionnelle 11/12
IV. Configuration matérielle Estimation de la taille d'une base de données Toujours à l aide de Power-AMC nous pouvons estimer la taille de la base de données ou bien uniquement la taille des tables de faits. La taille de la base dépend évidement du SGBD (ORACLE 10 g en ce qui nous concerne). En supposant les nombres d enregistrements suivants : - Nombre de Clients 100 000 - Nombre de produits 10 000 - Nombre de paiement par jour 50 000 - Nombre moyen de contrat par semaine 50 000 - D_tps : 5 * 365 = 1 825 - F_contrat 5*52*50 000 = 13 000 000 - F_facture 1825 * 50 000 = 91 250 000 Nous pouvons saisir le nombre d enregistrement dans Modèle \ Tables\ Nombre comme suit :. La liste de résultats affiche l'estimation de la taille de la base de données comme suit : - Pour l ensemble des tables de dimensions : 400 Mo - Pour la table de faits F_Facture (avec ses indexes) : 19 Go - Pour la table de faits F_Contrat (avec ses indexes) : 3 Go Configuration matérielle et logicielle adaptée Avec des performances minimales égales 8604.7 QphH (minimum que nous avons trouvé pour Oracle 10G), notre choix se porte sur le serveur : - Hardware : Dell PowerEdge 6600/3.0GHz/4MB w - SGBD : Oracle DB 10g R2 - OS : Red Hat Linux AS 3.0 Ahmed BENSI Modélisation multidimensionnelle 12/12