<style> .hidden-xs { visibility: hidden; } .navbar-default .navbar-brand { color: white; } .fa-file-text{ visibility: hidden; } body > nav > div.navbar-header > a:after{ content: 'UNC'; font-size: xx-large; font-weight: bold; } .navbar-collapse { background-color: #046FB7; color: white; } tr:nth-child(even) { background-color: #f2f2f2; } H2 { background-color: lightsteelblue; border-color: #d6e9c6; padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } </style> ## SID - infrastructure, architecture, ETL ![](https://i.imgur.com/Bwsc8qN.png) --- ## Définitions <!-- .element: class="fragment" data-fragment-index="1" --> - **BO**: Business Objects was an enterprise software company, specializing in business intelligence. Business Objects was acquired in 2007 by German company SAP AG (outil utilisé à l'unc). Concurrent: Cognos (dinum), Microsoft Power BI <!-- .element: class="fragment" data-fragment-index="2" --> - **ETL**: Extract, transform, and load. (wiki) technologie informatique intergicielle permettant d'effectuer des synchronisations massives d'information d'une source de données (le plus souvent une base de données) vers une autre <!-- .element: class="fragment" data-fragment-index="3" --> --- ## Définitions <!-- .element: class="fragment" data-fragment-index="1" --> **Designer** : outil de construction des univers <!-- .element: class="fragment" data-fragment-index="2" --> **Webi**: outil de création des rapports <!-- .element: class="fragment" data-fragment-index="3" --> **Cmc**: outil d'administration (utilisateur, droits etc...) <!-- .element: class="fragment" data-fragment-index="4" --> --- ## Définitions <!-- .element: class="fragment" data-fragment-index="1" --> - **SID**: système d'information décisionnel - Ensemble des moyens, outils et méthodes qui permettent à l’entreprise de **collecter**, **transformer**(renforcer, stocker, agréger) et **restituer** les **données importantes** afin de fournir une **aide à la décision**. <!-- .element: class="fragment" data-fragment-index="2" --> --- ## Base de données relationnel (cocktail) ![](https://hackmd.io/_uploads/SyIkVTdea.jpg) <!-- .element: class="fragment" data-fragment-index="1" --> - **Minimal data redundancy** - **Optimised for fast read + fast write** - **Current data only** (non historisé) - **Realtime data**: (transactional) <!-- .element: class="fragment" data-fragment-index="2" --> --- ## Star schéma ![](https://hackmd.io/_uploads/HyOHHpdg6.png =400x300) <!-- .element: class="fragment" data-fragment-index="1" --> - **Redundant data storage for performance** - **Fast reads only** - **Non-realtime data** - **Current + historical data** <!-- .element: class="fragment" data-fragment-index="2" --> --- ## Qui fait quoi ? ```graphviz digraph G { graph [rankdir=LR] subgraph cluster_0 { style=filled; color=lightblue; node [style=filled]; oracleProd; odata; sise; parcoursup; fichiers; scriptSQL; Entrepot; univers; label = "DNSI"; } subgraph cluster_1 { style=filled; color=lightpink; node [style=filled]; n1 [style=invisible] n2 [style=invisible] boOutil; n3 [style=invisible] n4 [style=invisible] label = "CAPE"; } subgraph cluster_2 { style=filled; color=lightyellow; node [style=filled]; n5 [style=invisible] Dupont; Durant; Dubois; n6 [style=invisible] label = "Utilisateurs"; } oracleProd [label="Cocktail", shape=cylinder] odata [label="open data", shape=note] sise [label="Sise", shape=note] parcoursup [label="Parcoursup", shape=note] fichiers [label="Fichiers", shape=note] univers [label="Univers", shape=rect] scriptSQL [label="ETL\n(3x / jour)", shape=box3d] boOutil [label="Webi\n(création des rapports)", shape=rect] Entrepot [label="Entrepot", shape=cylinder] oracleProd->scriptSQL odata->scriptSQL sise ->scriptSQL parcoursup->scriptSQL fichiers->scriptSQL scriptSQL-> Entrepot Entrepot-> univers univers -> boOutil boOutil->Dupont boOutil->Durant boOutil->Dubois } ``` --- ## Architecture - **Définir** l’architecture de l’ETL en fonction des volumes de données, des sources et des besoins en transformation. <!-- .element: class="fragment" data-fragment-index="1" --> - **Analyser** les contraintes de performance (latence, temps de traitement), de stockage (base de données, data lake) et de sécurité. <!-- .element: class="fragment" data-fragment-index="2" --> - **Évaluer** les ressources disponibles (capacités de calcul, infrastructure cloud ou on-premise, budget, compétences de l’équipe). <!-- .element: class="fragment" data-fragment-index="3" --> - **Choisir** entre un ETL batch (traitement par lots) ou streaming (temps réel) selon les exigences métier. <!-- .element: class="fragment" data-fragment-index="4" --> --- ## Architecture - **Sélectionner** les technologies adaptées (Airflow, Talend, Spark, DBT, SQL, Python, etc.) en fonction de la scalabilité et de la facilité de maintenance. <!-- .element: class="fragment" data-fragment-index="1" --> - **Optimiser** les transformations pour limiter la consommation de ressources et éviter les goulots d’étranglement. <!-- .element: class="fragment" data-fragment-index="2" --> - **Gérer** les erreurs et les reprises en cas d’échec (logging, monitoring, gestion des données corrompues). <!-- .element: class="fragment" data-fragment-index="3" --> - **Adapter** l’ETL en fonction des évolutions des sources de données et des besoins métier. <!-- .element: class="fragment" data-fragment-index="4" --> --- ## Ressources - oracle (maitrisé, facilement clonable )<!-- .element: class="fragment" data-fragment-index="1" --> - gitlab (usine logicielle)<!-- .element: class="fragment" data-fragment-index="2" --> - Maitrise d'équipe du language SQL<!-- .element: class="fragment" data-fragment-index="3" --> --- ## Contraintes UNC - petite équipe<!-- .element: class="fragment" data-fragment-index="1" --> - ne pas impacter la production<!-- .element: class="fragment" data-fragment-index="2" --> - rafraichissement rapide, modifications faciles<!-- .element: class="fragment" data-fragment-index="3" --> --- ```graphviz digraph summary { node [ shape=box] "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] } ``` --- ```graphviz digraph summary { node [ shape=box] "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] } ``` --- ```graphviz digraph summary { node [ shape=box] "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Script SQL (ETL)"-> "Oracle SID (destination)"[label=" Ecriture"] } ``` --- ```graphviz digraph summary { node [ shape=box] "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Script SQL (ETL)"-> "Oracle SID (destination)"[label=" Ecriture"] "Oracle SID (destination)"->"BO (outil)" [label=" Lecture"] } ``` --- ```graphviz digraph summary { node [ shape=box] subgraph cluster_0 { style=filled; color=lightblue; node [style=filled,color=white]; "Oracle PROD (sources)"; "Fichiers XLS (sources)"; "Autres (sources)"; label = "collecter"; } "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Script SQL (ETL)"-> "Oracle SID (destination)"[label=" Ecriture"] "Oracle SID (destination)"->"BO (outil)" [label=" Lecture"] } ``` --- ```graphviz digraph summary { node [ shape=box] subgraph cluster_0 { style=filled; color=lightblue; node [style=filled,color=white]; "Oracle PROD (sources)"; "Fichiers XLS (sources)"; "Autres (sources)"; label = "collecter"; } subgraph cluster_1 { style=filled; color=lightpink; node [style=filled,color=white]; "Script SQL (ETL)"; label = "renforcer agréger"; } "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Script SQL (ETL)"-> "Oracle SID (destination)"[label=" Ecriture"] "Oracle SID (destination)"->"BO (outil)" [label=" Lecture"] } ``` --- ```graphviz digraph summary { node [ shape=box] subgraph cluster_0 { style=filled; color=lightblue; node [style=filled,color=white]; "Oracle PROD (sources)"; "Fichiers XLS (sources)"; "Autres (sources)"; label = "collecter"; } subgraph cluster_1 { style=filled; color=lightpink; node [style=filled,color=white]; "Script SQL (ETL)"; label = "renforcer agréger"; } subgraph cluster_3 { style=filled; color=chocolate1; node [style=filled,color=white]; "Oracle SID (destination)"; label = "stocker"; } "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Script SQL (ETL)"-> "Oracle SID (destination)"[label=" Ecriture"] "Oracle SID (destination)"->"BO (outil)" [label=" Lecture"] } ``` --- ```graphviz digraph summary { node [ shape=box] subgraph cluster_0 { style=filled; color=lightblue; node [style=filled,color=white]; "Oracle PROD (sources)"; "Fichiers XLS (sources)"; "Autres (sources)"; label = "collecter"; } subgraph cluster_1 { style=filled; color=lightpink; node [style=filled,color=white]; "Script SQL (ETL)"; label = "renforcer agréger"; } subgraph cluster_2 { style=filled; color=darkseagreen1; node [style=filled,color=white]; "BO (outil)"; label = "restituer"; } subgraph cluster_3 { style=filled; color=chocolate1; node [style=filled,color=white]; "Oracle SID (destination)"; label = "stocker"; } "Oracle PROD (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Fichiers XLS (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Autres (sources)"->"Script SQL (ETL)"[label=" Lecture"] "Script SQL (ETL)"-> "Oracle SID (destination)"[label=" Ecriture"] "Oracle SID (destination)"->"BO (outil)" [label=" Lecture"] } ``` --- ## Démo --- ## Conclusion - simple - versionné - automatisé - autodocumenté
{"metaMigratedAt":"2023-06-18T03:05:16.134Z","metaMigratedFrom":"YAML","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"theme\":\"white\",\"spotlight\":{\"enabled\":false}}","title":"SID - infrastructure, architecture, ETL, 2025","contributors":"[{\"id\":\"de007113-612d-4b2a-a91c-6a3e348b3f22\",\"add\":27530,\"del\":16041}]"}
    130 views