560 likes | 941 Views
Oracle Data Integrator (ODI). 23 octobre 2014. ODI. ODI. Généralités. Plateforme d’intégration de données Ex « Sunopsis » Environnement java (Eclipse) / Génération SQL E-T-L (Extract-Transform-Load) : Analyser et extraire les données à partir de sources et cibles hétérogènes
E N D
Oracle Data Integrator (ODI) 23 octobre 2014
ODI ODI
Généralités • Plateforme d’intégration de données • Ex « Sunopsis » • Environnement java (Eclipse) / Génération SQL • E-T-L (Extract-Transform-Load) : • Analyser et extraire les données à partir de sources et cibles hétérogènes • Traitement diverses • Batch / Intégration sur événement / service de données… • Nettoyer et standardiser les données selon les règles de gestion établies par l'entreprise • Constituer le référentiel des flux d’échanges entre les systèmes • Donner la visibilité sur les traitements et les suivre • Permettre une gestion de cas de reprises
Généralités La suite ETL d’Oracle
Généralités • Les règles déclaratives • Séparation des processus métier • Modules de connaissance (KM) • Modulaires, flexibles et extensibles. • Définissent les modèles nécessaires pour la génération de code sur les systèmes impliqués • Génériques (flux de données indépendant des règles de transformation) • Hautement spécifiques (optimisation par technologie) • Oracle / XML / Teradata / MySql / Flat File…
Généralités • L’approche E-L-T (Extract-Load-Transform) • Exploitation du moteur du SGBDr • Effectué sur le serveur cible • Code spécifique optimisé (KM) • Affranchissement d’un serveur tiers • Economique (licences, serveurs) • Trafic réseau
Généralités E-T-L E-L-T Source Serveur Source Cible Source Source Source Cible Source
Architecture applicative Desktop Weblogic 11g / Application server FMW CONSOLE JVM ODI Studio ODI Plugin Designer Java EE application Servlet container Web Service Container Operator Java EE application ODI console Runtime WS Public WS Data WS ODI SDK Security Java EE agent ODI SDK Topology Data source Connection Pool Repositories Sources and Targets JVM Runtime WS Work Rep Master Rep Work Rep Work Rep Standalone agent DBMS Files / XML ERP/CRM…
Architecture applicative ODI Studio ODI Studio Designer Modèles Interfaces Scénarios Operator Supervisions des exécutions Topology Infrastructures des connexions Security Gestion des privilèges utilisateurs Work Rep Master Rep
Architecture applicative Topology Repository Exp1 SECURITY Master Rep TOPOLOGY VERSIONING 1 3 2 MODELS MODELS PROJECTS PROJECTS EXECUTION EXECUTION EXECUTION Work Rep (DEV) Work Rep (QUA) Exec Rep (PRD)
Architecture applicative Topology Repository Exp2 SECURITY SECURITY Master Rep TOPOLOGY TOPOLOGY 3 VERSIONING VERSIONING 1 2 4 MODELS MODELS PROJECTS PROJECTS EXECUTION EXECUTION EXECUTION Work Rep (DEV) Work Rep (QUA) Exec Rep (PRD) Firewall
Concepts Topology Architecture logique Contexte 3 Contexte 1 Contexte 2 Architecture physique A Architecture physique B BDD BDD
Concepts • Designer • Modèle • Structure des tables • Liée à l’architecture physique • RKM (Reverse Engineering)
Concepts • Designer • Interface • Tables sources • Table Cible • Jointures • Filtres • Mapping
Concepts • Designer • Knowledge modules (KM) : • LKM (Chargement) • IKM (Intégration) • CKM (Vérifications) • L’espace de Travail • Versionning • Solutions
Concepts • Designer • Knowledge modules • Règles déclaratives • Gestion sur erreur • Options paramétrables
Concepts • Designer • Package • Enchainement des Interfaces • Variables • Procédures • Stages
Concepts • Operator • Suivi exécution • Requêtes • Planification • Scénarios
Concepts • Security • Droits spécifiques • Niveau Objet • LDAP
Concepts • Agent ODI • Composant actif orchestrant les processus d’intégration • Programme Java connecté aux Repository • Se connecte aux serveurs de données pour lancer les exécutions • Planification
Concepts Exemple • Ma base Saint Seiya. Modéliser en système transactionnel puis décisionnel les combats des chevaliers de bronze CHEVALIER CH_ID Nom TYPE_ID ATTAQUE AT_Nom Vitesse Puissance TYPE TYPE_ID Nom Niveau COMBAT COM_ID Lieu Date CH_ID1 CH_ID2 ASSAUT COM_ID CH_ID Heure AT_Nom Réussite ATTAQUE_ POSS AT_Nom CH_ID
Concepts TYPE TYPE_ID Nom Niveau Modèle transactionnel CHEVALIER CH_ID Nom TYPE_ID ATTAQUE_ POSS AT_Nom CH_ID ATTAQUE AT_Nom Vitesse Puissance COMBAT COM_ID Lieu Date CH_ID1 CH_ID2 ASSAUT COM_ID CH_NUM Heure AT_Nom Réussite
Concepts Modèle décisionnel ATTAQUE_ POSS AT_Nom CH_ID Vitesse Puissance CHEVALIER CH_ID Nom TYPE_Nom Niveau X 2 ATTAQUE AT_Nom Vitesse Puissance COMBAT Lieu Date CH_ID1 CH_ID2 Heure CH_NUM AT_Nom Réussite JOUR DATE Date_suiv Date_Prec Mois Année
Concepts Exemple • Pour ma base Saint Seiya, à partir des Modèles transactionnels et décisionnels, modéliser les interfaces de chargement des tables cibles • On souhaite par ailleurs intégrer la notion d’armure stockée dans une base annexe ARMURE AR_ID Nom Tournoi Nom_Propriétaire version
Concepts Modèle décisionnel ATTAQUE_ POSS AT_Nom CH_ID Vitesse Puissance CHEVALIER CH_ID Nom TYPE_Nom ARM_Nom Version X 2 ATTAQUE AT_Nom Vitesse Puissance COMBAT Lieu Date CH_ID1 CH_ID2 Heure CH_NUM AT_Nom Réussite JOUR DATE Date_suiv Date_Prec Mois Année
Concepts Exemple • Pour ma base Saint Seiya, il s’avère que le principal rapport utilisé (pour 90% de la population) est le suivant. • Proposer une modification de modélisation pour optimiser au maximum le temps exécution du rapport. Les attaques les plus utilisées avec succès
Concepts Modèle décisionnel ATTAQUE_ POSS AT_Nom CH_ID Vitesse Puissance CHEVALIER CH_ID Nom TYPE_Nom ARM_Nom Version ATTAQUE AT_Nom Vitesse Puissance X 2 COMBAT Lieu Date CH_ID1 CH_ID2 Heure CH_NUM AT_Nom Réussite JOUR DATE Date_suiv Date_Prec Mois Année COMBAT_AGG CH_ID AT_Nom Count(Réussite)
Plan d’exécution Les plan d’exécution sous Oracle • Affiche le plan exécution défini par l’optimiseur • Select, Insert, Udate et Delete • Séquence des opération pour exécuter la requête • Fonction EXPLAIN PLAN • Arbre avec coût et cardinalité à chaque niveau • Permet d’identifier • Full scan • Index utilisés • Ordre des jointures et filtres • Produits cartésiens, redondances de jointure… • Dépendant des statistiques
Plan d’exécution Exemple • select • STPM_ADMNSTRTR, STPM_ADMNSTRTR_NAME • from( • selectDISTINCT • DWS_EXTRACT_MVT.CMMRCL_ACT_ADM STPM_ADMNSTRTR, • DWS_EXTRACT_MVT.CMMRCL_ACT_ADM STPM_ADMNSTRTR_NAME • from ODITMP.DWS_EXTRACT_MVTDWS_EXTRACT_MVT • where(1=1) • And(DWS_EXTRACT_MVT.MVT ='clm_pc') • ) S • whereNOTEXISTS • (select1from TH_D_DW_EXEC.DWA_STPM_ADMNSTRTR T • whereT.STPM_ADMNSTRTR = S.STPM_ADMNSTRTR • and((T.STPM_ADMNSTRTR_NAME = S.STPM_ADMNSTRTR_NAME) • or(T.STPM_ADMNSTRTR_NAME ISNULLand S.STPM_ADMNSTRTR_NAME ISNULL)) • )
Plan d’exécution Exemple 1) Récupération de toutes les lignes de la table 2) Elimination des doublons 3) Création d’une vue comprenant les données de la branche 4) Récupération des données en utilisant l’index 5) Table non partitionnée et lignes localisées par un index 6) Application des filtres de données
Plan d’exécution Exemple • Utilisation des index • Attention aux fonctions : Select * from TAB1, TAB2 Where concat(‘NM_’,TAB1.nom) = decode(TAB2.nom,null,’ANOMYME’) Select * from TAB1, TAB2 Where TAB1.nom like TAB2.nom Select * from TAB1, TAB2 Where TAB1.nom = TAB2.nom And TO_CHAR(TAB1.date_naiss) = ‘1987-07-12’
Plan d’exécution Les fonctions analytiques • Depuis Oracle 8i • Simplicité et performance des requêtes SQL • Appliquer une fonction à une ligne en relation avec les autres lignes • Syntaxe : fonction (expression) over ([clause de partitionnement] [clause d'ordre] [clause de fenêtrage]) fonction : FIRST_VALUE, LAST_VALUE, MAX, SUM, AVG, ROW_NUMBER, RANK, LAG (ligne prec), LEAD (ligne suiv)…
Plan d’exécution Les fonctions analytiques Exemple : Meilleur de la classe FIRST_VALUE(Nom) OVER (PARTITION BY Classe ORDER BY note DESCROWS BETWEEN 1 PRECEDING AND UNBOUNDED FOLLOWING) N1 Nom Classe Note N1 Stan Classe1 16 Stan Kyle Classe1 12 Stan Kenny Classe2 14 Wendy Wendy Classe2 17 Wendy Eric Classe1 8 Kyle
Plan d’exécution Les fonctions analytiques Exemple : Soirée LAN • Nom et prix de l’article le plus cher par catégorie avec le nombre d’article par categorie Createtable SOIREE_LAN as (select'1'asID,'Biere'as nom,35as prix,'Alimentaire'as categorie from dual unionall select'2'asID,'Clef USB'as nom,25as prix,'Technologique'as categorie from dual unionall select'3'asID,'Cable RJ 45'as nom,4as prix,'Technologique'as categorie from dual unionall select'4'asID,'Pizza'as nom,30as prix,'Alimentaire'as categorie from dual unionall select'5'asID,'Aspirine'as nom,2as prix,'Pratique'as categorie from dual unionall select'6'asID,'Sac de couchage'as nom,20as prix,'Pratique'as categorie from dual unionall select'7'asID,'Bassine'as nom,3as prix,'Pratique'as categorie from dual)
Plan d’exécution Les fonctions analytiques Exemple : Soirée LAN select T1.categorie,T1.nom,T1.prix, (selectcount(nom)from SOIREE_LAN T2 where T1.categorie = T2.categorie groupby categorie) nb_art from SOIREE_LAN T1 where(T1.prix,T1.categorie)in(selectmax(prix),categorie from SOIREE_LAN groupby categorie) SOIREE_LAN = TESTADT
Plan d’exécution Les fonctions analytiques Exemple : Soirée LAN selectdistinct first_value(categorie)over(partitionby categorie orderby prix desc) categorie, first_value(nom)over(partitionby categorie orderby prix desc) nom, first_value(prix)over(partitionby categorie orderby prix desc) prix, count(*)over(partitionby categorie) nb_art from SOIREE_LAN SOIREE_LAN = TESTADT
Plan d’exécution La dimension temps • Effectuer des drill up / drill down sur la hiérarchie temps • Contrôles de saisie : (’30/02/2011’…) • Gérer les tables « à trous » JOUR jour mois annee MOIS mois Annee ANNEE Annee CHANGEMENT_PRIX Mois Article Prix ARTICLE_MOIS Mois Article Prix Prix par mois et par article
Plan d’exécution Les costumes de Barney Stinson Préparer une requête « énormissime » pour remplir la table finale (en utilisant les tables MOIS et ARTICLE) CHANGEMENT_PRIX MoisArticle Prix 201101 Costume Noir 400 201103 Costume Noir 350 201101 Costume Bleu 500 201102 Costume Bleu 550 ARTICLE MoisArticle Prix 201101 Costume Noir 400 201102 Costume Noir 400 201103 Costume Noir 350 201101 Costume Bleu 500 201102 Costume Bleu 550 201103 Costume Bleu 550
Plan d’exécution • SELECT TABLE_COMP.MOIS, TABLE_COMP.ARTICLE, • nvl(TABLE_COMP.PRIX,lag(TABLE_COMP.PRIX) • over(partitionby TABLE_COMP.ARTICLE ORDERBY TABLE_COMP.MOIS)) PRIX • FROM • (SELECT MOIS.MOIS, ARTICLE.ARTICLE, CP.PRIX • FROM MOIS • INNERJOIN ARTICLE • ON(1=1) • LEFTOUTERJOIN CHANGEMENT_PRIX CP • ON(CP.MOIS = MOIS.MOIS AND CP.ARTICLE=ARTICLE.ARTICLE)) TABLE_COMP
Plan d’exécution Quelques outils Oracle • DBLINK : TABLE_CIBLE@DBLNK • TRIGGER : déclenchement sur événement • Séquences : numéro incrémental, MA_SEQUENCE.NEXTVAL • Procédures / fonctions : PL/SQL • Vues : exécutée à chaque accès • Vues matérialisées Source Cible TAB1 VIEW TAB2 Select …