Oracle Data Warehouse – Datenbank basierte ETL-Prozesse DATA WAREHOUSE

Download Oracle Data Warehouse – Datenbank basierte ETL-Prozesse DATA WAREHOUSE

Post on 05-Apr-2015

112 views

Category:

Documents

7 download

Embed Size (px)

TRANSCRIPT

<ul><li> Folie 1 </li> <li> Folie 2 </li> <li> Oracle Data Warehouse Datenbank basierte ETL-Prozesse DATA WAREHOUSE </li> <li> Folie 3 </li> <li> Themenbersicht 1/2 Anforderungen an den ETL-Prozess im Data Warehouse Speichermanagement und Grundlagentechniken Blcke, Extents, Segmente, Tablespace Direct Path Load, Mengenbasiertes Laden Logging / NoLogging Partition Exchange and Load (PEL) Zugriff auf Quellsystemen Umgang mit Deltadaten Kopiertechniken / SQL Loader / Data Pump / External Tables / Transportable Tablespace Datenbank-basierte ETL-Prozesse 2 </li> <li> Folie 4 </li> <li> Themenbersicht 2/2 Planung und Organisation des ETL Prozesses Schichten als Planungsgrundlage Umgang mit separaten ETL-Tools und Lade-Engines Prftechniken mit SQL Szenario zum Prfen von Daten Weitere Datenbank-Techniken Ersatz von Aggregat-Tabellen durch MAVs Table Functions Pivoting Multiple Inserts / Merge Zusammenfassung Datenbank-basierte ETL-Prozesse 3 </li> <li> Folie 5 </li> <li> Themenbersicht 1/2 Anforderungen an den ETL-Prozess im Data Warehouse Speichermanagement und Grundlagentechniken Blcke, Extents, Segmente, Tablespace Direct Path Load, Mengenbasiertes Laden Logging / NoLogging Partition Exchange and Load (PEL) Zugriff auf Quellsystemen Umgang mit Deltadaten Kopiertechniken / SQL Loader / Data Pump / External Tables / Transportable Tablespace Datenbank-basierte ETL-Prozesse 4 </li> <li> Folie 6 </li> <li> Das groe Klagen Lieferzeiten der Daten zu lange (Latenzen) Zu schwerfllig bei nderungen Informationen mehrfach vorhanden Fehlende unternehmensweite Sichten Nicht die richtigen Informationen fr die Anwender Anwender haben zu wenig unmittelbaren Einfluss auf die Daten Immer teuerer Maintenance-Aufwand zu hoch / Personal Explodierende Datenmengen -&gt; Storage- / Ladezeitenthematik System-Nutzen Maintenance Technik </li> <li> Folie 7 </li> <li> R R B S S S D D DD Enterprise Information Layer User View Layer Data Integration Layer TTT T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten B F F F D D D D B B B B Zusammenhngender Abfragebereich Flexibilitt und schnelles Bereitsstellen 6 Strategische Daten Taktische Daten integrieren aufbereiten Operative Daten </li> <li> Folie 8 </li> <li> Lade-Aktivitten an Schichtbergngen Integration Enterprise User View Flchtige Daten PersistentKopien / teilpersistent dynamisch Kopieren Selektieren Generische Datenstrukturen (isolierte Tabellen, teil-ausgeprgte Datentypen) Keine Constraints 3 NF Datenstrukturen (ER-Tabellen, ausgeprgte Datentypen) Aktivierte Constraints Multidimensionale Modelle (ER-Tabellen, ausgeprgte Datentypen) Mengenbasiertes Prfen ohne Constraints Umschlsselung Lookups -&gt; Referenz-/Stammdaten Joins Aufbauen von Distinct-Strukturen (Normalisieren) Umschlsselung Lookups -&gt; Dimensionsdaten Joins - Denormalisieren Normalisieren (Granularisieren) 7 Denormalisieren Historisieren z.T. Aggregieren Clearing-Verfahren, technisches, logisches, semantisches Prfen </li> <li> Folie 9 </li> <li> Hilfsmittel in der Datenbank (Auflistung) Parallelisierung Partitioning / Partition Exchange Load (PEL) Direct Path Load Set-Based SQL Pipelined Table Functions Materialized Views External Tables / Loader Transportable Tablespace Data Pump Database Link Direkt FTP-Load </li> <li> Folie 10 </li> <li> Die vier Funktionsbereiche des ETL 1.Integrieren 2.Informations-Mehrwerte 3.Kopieren 4.Sammeln 9 </li> <li> Folie 11 </li> <li> 1. Integrieren Identifizieren von identischen oder zusammenhngenden Informationen Synonymen-/Homonymen-Thematik Aggregationslevel angleichen Identifizieren und Angleichen Formate, Zustnde, Sichtweisen etc... 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln Betrag / Summe Artikel / Produkt Artikel / Artikelgruppe Meter / Kilometer Lose Stcke / Gebinde 10 </li> <li> Folie 12 </li> <li> 2. Informations-Mehrwerte Qualitativ gute Informationen schaffen Datenqualitts-Checks Vollstndigkeit Datentypen Referentielle Integritt Eindeutigkeit Korrekte Werte Fachliche Regeln berprfen Berechnungen / Aggregationen / Zusammenfassungen Anreichern und Vermengen mit Referenzdaten Lookups Marktdaten Vergleichszahlen 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln 11 </li> <li> Folie 13 </li> <li> 3. Kopieren 1:1-Datenbewegung Einfachste Aufgabe Mengen-Operationen Ohne zustzliche Logik berwindung von Systemgrenzen Vorschriften zum Mapping Schnittstellen-Konventionen Aspekt der Performance 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln 12 </li> <li> Folie 14 </li> <li> 4. Sammeln Einlagern von Daten Zeitliche Rahmenvorgaben Historisierung Versionieren von Daten Kategorisieren / Inventarisieren von Daten Dokumentieren der eingelagerten Informationen Referenzen aufbauen Alterungs-Eigenschaften bercksichtigen Dokumentieren Mehr als nur eine Momentaufnahme 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln 13 </li> <li> Folie 15 </li> <li> Daten-nahe Transformation im DWH Den richtigen Platz finden n-tier Application Server n-tier Application Server Quellsystem DWH-System ETL? 14 </li> <li> Folie 16 </li> <li> Themenbersicht 1/2 Anforderungen an den ETL-Prozess im Data Warehouse Speichermanagement und Grundlagentechniken Blcke, Extents, Segmente, Tablespace Direct Path Load, Mengenbasiertes Laden Logging / NoLogging Partition Exchange and Load (PEL) Zugriff auf Quellsystemen Umgang mit Deltadaten Kopiertechniken / SQL Loader / Data Pump / External Tables / Transportable Tablespace Datenbank-basierte ETL-Prozesse 15 </li> <li> Folie 17 </li> <li> Zuordnung Datenobjekten und Speicher Table Index Mview Partition DB-Objekte </li> <li> Folie 18 </li> <li> Speicherobjekte </li> <li> Folie 19 </li> <li> Die automatische Extent-Vergrerung Automatische Allokierung von weiteren Segmenten Exponentielles Vergrerungs-Mass TABLE_NAME BLOCKS EMPTY_BLOCKS AVG_ROW_LEN NUM_ROWS PCT_FREE COMPRESS EXTENTS SEG_BYTES EXT_BLKS EXT_BYTES ----------------- ------------ ----------- -------- -------- -------- ------- ---------- -------- --------- F_UMSATZ 277772 0 34 51200000 10 DISABLED 217 2281701376 8 65536 F_UMSATZ 277772 0 34 51200000 10 DISABLED 217 2281701376 128 1048576 F_UMSATZ 277772 0 34 51200000 10 DISABLED 217 2281701376 1024 8388608 F_UMSATZ 277772 0 34 51200000 10 DISABLED 217 2281701376 8192 67108864 select t.TABLE_NAME, t.blocks,t.EMPTY_BLOCKS,t.AVG_SPACE,t.AVG_ROW_LEN,t.NUM_ROWS, t.pct_free, t.compression,s.EXTENTS,s.bytes seg_bytes,e.blocks ext_blks,e.bytes ext_bytes from user_segments s, user_tables t, user_extents e where t.TABLE_NAME = s.segment_name and e.SEGMENT_NAME = s.SEGMENT_NAME and t.TABLE_NAME = 'F_UMSATZ'; </li> <li> Folie 20 </li> <li> Block- und Satzstruktur Datenbank Block Row header Column length Column value </li> <li> Folie 21 </li> <li> High Water Mark Free space after delete Unused block Extent ID 01234 Used block Nach INSERTS: High-water mark Segment Nach DELETES: </li> <li> Folie 22 </li> <li> Segment Wie wird die High Water Mark bestimmt Extent ID 01234 High-water mark LAST_USED_EXTENT_FILE_ID, LAST_USED_EXTENT_BLOCK_ID TOTAL_BLOCKS UNUSED_BLOCKS </li> <li> Folie 23 </li> <li> Segment Deallocate Space Free space after delete Unused block Before deallocation Used block After deallocation High-water mark Extent ID43210 43210 ALTER TABLE tablename DEALLOCATE UNUSED; </li> <li> Folie 24 </li> <li> Segment Truncate Table High-water mark Free space Extent ID 01 TRUNCATE TABLE tablename </li> <li> Folie 25 </li> <li> Themenbersicht 1/2 Anforderungen an den ETL-Prozess im Data Warehouse Speichermanagement und Grundlagentechniken Blcke, Extents, Segmente, Tablespace Direct Path Load, Mengenbasiertes Laden Logging / NoLogging Partition Exchange and Load (PEL) Zugriff auf Quellsystemen Umgang mit Deltadaten Kopiertechniken / SQL Loader / Data Pump / External Tables / Transportable Tablespace Datenbank-basierte ETL-Prozesse 24 </li> <li> Folie 26 </li> <li> Segment Direct Path Load Free space after delete Blocks used by inserted rows High-water mark Used block F_UMSATZ INSERT /*+APPEND */ INTO DWH.F_UMSATZ NOLOGGING SELECT * FROM OLTP.BESTELLUNGEN; INSERT /*+APPEND */ INTO DWH.F_UMSATZ NOLOGGING SELECT * FROM OLTP.BESTELLUNGEN; Server process </li> <li> Folie 27 </li> <li> Segment Paralleler Direct Path Load Free space after delete Temporary segments High-water mark Used block F_UMSATZ ALTER SESSION ENABLE PARALLEL DML; INSERT /*+APPEND PARALLEL(F_UMSATZ,2) */ INTO DWH.F_UMSATZ NOLOGGING SELECT * FROM OLTP.BESTELLUNGEN; ALTER SESSION ENABLE PARALLEL DML; INSERT /*+APPEND PARALLEL(F_UMSATZ,2) */ INTO DWH.F_UMSATZ NOLOGGING SELECT * FROM OLTP.BESTELLUNGEN; Slave process </li> <li> Folie 28 </li> <li> Convential und Direct Path - Load Conventional Direct path Array insert Extent management Data save Table High-water mark Space used only by conventional load Shared pool </li> <li> Folie 29 </li> <li> Testfall F_Umsatz 51.100.000 Stze ARTIKEL_ID KUNDEN_ID ZEIT_ID REGION_ID KANAL_ID UMSATZ MENGE UMSATZ_GESAMT F_Umsatz_DP 51.100.000 Stze ARTIKEL_ID KUNDEN_ID ZEIT_ID REGION_ID KANAL_ID UMSATZ MENGE UMSATZ_GESAMT SQL&gt; insert into f_umsatz_DP select * from f_umsatz; 51200000 Zeilen erstellt. Abgelaufen: 00:07:57.73 SQL&gt; insert /*+ APPEND */ into f_umsatz_DP select * from f_umsatz; 51200000 Zeilen erstellt. Abgelaufen: 00:00:27.24 SQL&gt; insert /*+ APPEND PARALLEL(F_UMSATZ_DP,2) */ into f_umsatz_DP select * from f_umsatz; 51200000 Zeilen erstellt. Abgelaufen: 00:00:20.68 </li> <li> Folie 30 </li> <li> Direct Path / Convential Path Convential Path Commits Reuse Free Space in Blcken Constraint Checks Immer Undo Data / Logging Daten zunchst immer in SGA Buffer Tabelle fr andere Benutzer offen Direct Path Data Save Schreiben oberhalb der High Water Marks Keine Constraint Checks Nur PK, Not Null, Unique Key Kein Logging Daten nicht in SGA Buffer Tabelle gesperrt fr andere Benutzer </li> <li> Folie 31 </li> <li> Space Management Empfehlung: Locally Managed Tablespace mit ASSM Prfung ob MSSM bei Massen-Inserts schneller ist ASSM MSSM Freelists werden gepflegt Automatische Verwaltung des freien Platzes </li> <li> Folie 32 </li> <li> Bitmap managed Storage Locally managed Tablespace ohne Freelists </li> <li> Folie 33 </li> <li> Empfehlungen bzgl. Spacemanagement PCTFREE auf 0 setzen In der Regel sind keine spteren UPDATES ntig Spart gegenber dem Default von 10% auch 10% IO und jede Verarbeitung ist um 10% schneller Sollten dennoch UPDATES gemacht werden mssen: Partitionieren der Tabelle Die jngsten Partitionen mit separatem Tablespace definieren und PCTFREE auf gewnschten Wert setzen Wenn keine UPDATES mehr zu erwarten sind -&gt; umkopieren auf eine Partition mit einem Tablespace mit PCTFREE=0 Blocksize hochsetzen 16K, 32K Wirkt sich bei Massen-Inserts bei einer geren Datenmenge positiv auf die Performance aus </li> <li> Folie 34 </li> <li> Klassische PL/SQL Cursor Verarbeitung (Negativ Beispiel) t_Ref_1 (z. B. 10000) t_ref_2 (z. B. 5000) t_ref_3 (z. B. 50) t_ref_4 (z. B. 6000) t_Quelle_Stage_1 (z. B. 100000) t_Quelle_Stage_2 (z. B. 5000) t_ref_5 (z. B. 8000) t_ref_6 (z. B. 400) t_ref_7 (z. B. 80) t_ref_8 (z. B. 12000) t_ref_9 (z. B. 15000) select cursor select Faktentabelle Insert select + Diverse Updates und Inserts auf Protokolltabellen Fr alle Bewegeungs- stze z. B. 300.000) Loop (0,1 Sec / Lauf) 8,3 Std* * Wert aus einer Bank (2003), wre heute wesentlich weniger </li> <li> Folie 35 </li> <li> Mengenbasierte Alternative (Performance Optimierung bis zu Faktor 20 und mehr) 300.000 t_Ref_1 t_Ref_2 t_Ref_3 t_Ref_4 t_Ref_5 Outer Join Temp Table t_Ref_6 t_Ref_7 t_Ref_8 t_Ref_9 Cursor loop Satzweise Prfung Protokoll Fakt Table </li> <li> Folie 36 </li> <li> Das Simulations-Szenario F0 F1 F2 F3 F4 F5 F6 F7 ----- --- ---------- ----------------------------------------- --------- ----------------------------------------- --------------------------------- --- 28839 74 3 IamPFnAz6qnhWZlqao1AHgaR9gQczm4SSvtJn9lU 27-JAN-11 upOLaDSvWuxmv4pFlZsgtEPqgi43uRgI1uQjF7kV x2AFYV3W2QIcxf5mPzl39MpErCZI7rc1eQMXuMs8 42 28840 10 89 ESh7uiu6Hqo6cwqqk9B7D1w9biFR3QjCVDyNWjaq 01-MAY-08 Mcj4QZEVmiG5Qof4eoPwqARLFhlc1xpLmgrAzL5i jvuabLwH44YODTusRR3Huyz7sECCTrLFGZA5QJdD 12 28841 4 59 PA2OpnqxTISxHoHsJ5BZrIJArDGhcKCIi1lAzJyj 17-DEC-10 ebU5ogfehM87oO1f8e1VVrFOjJBsZJEUQLcyOls7 GP5zpIb5EzAsPrT9EuL6tdcJ2BVGbFXtch3F4rkO 58 28842 79 74 P4q95WqLs9yWOdx6yryAt7zNgO8YeGzqmXTLdHJe 26-NOV-09 eTsS6sZdjeZbRWSnjq2m3ivoACc29dQENlVYjtkK DTTfROusF1hU1LLGHNRXWWGwpFlO47zedJWgEdX5 55........................................................................................................................................................ Name Type ------------------- F0 NUMBER F1 NUMBER F2 NUMBER F3 VARCHAR2(50) F4 DATE F5 VARCHAR2(50) F6 VARCHAR2(50) F7 NUMBER Tabelle T10 Name Type ------------------- F0 NUMBER F1 NUMBER F2 NUMBER F3 VARCHAR2(50) F4 DATE F5 VARCHAR2(50) F6 VARCHAR2(50) F7 NUMBER Tabelle T20 ~ 10 Millionen Stze </li> <li> Folie 37 </li> <li> Der ungnstigste Fall Einzelinserts Simuliert ber Cursor-Prozedur CREATE OR REPLACE PROCEDURE PR_x AS CURSOR crs_T10 IS SELECT * FROM T10; bstnr number; V_F0 NUMBER; V_F1 NUMBER; V_F2 NUMBER; V_F3 VARCHAR2(50); V_F4 DATE; V_F5 VARCHAR2(50); V_F6 VARCHAR2(50); V_F7 NUMBER; BEGIN open crs_T10; loop FETCH crs_T10 into V_F0,V_F1,V_F2,V_F3,V_F4,V_F5,V_F6,V_F7; insert /*+ NOLOGGING */ into T20 values(V_F0,V_F1,V_F2,V_F3,V_F4,V_F5,V_F6,V_F7); EXIT WHEN crs_T10%NOTFOUND; END loop; END; Laufzeit: 08:31 (Minuten : Sekunden) Lese-Operation T10 Tabelle Datenbewegung ber Variablen Schreibvorgang </li> <li> Folie 38 </li> <li> Der einfache INSERT INSERT in leere Tabelle INSERT in gefllte Tabelle INSERT in gefllte Tabelle (Wiederholung) Laufzeit: 01:46 (Minuten : Sekunden) Laufzeit: 01:58 (Minuten : Sekunden) insert into t20 select * from t10; </li> <li> Folie 39 </li> <li> Logging / Nologging INSERT im Archivelog-Modus INSERT mit NOLOGGING im ARCHIVE-Modus Laufzeit: 02:56 (Minuten : Sekunden) Laufzeit: 01:48 (Minuten : Sekunden) insert into t20 select * from t10; insert /*+ NOLOGGING */ into t20 select * from t10; </li> <li> Folie 40 </li> <li> Logging / Nologging Wird der Archivelog-Modus bentigt oder nicht? Relevant fr Backup DataGuard / Golden Gate Flashback Wichtigster Punkt ist: BACKUP Abhngig vom Backup-Konzept </li> <li> Folie 41 </li> <li> Auswirkungen auf das Backup-Konzept Plattensicherung Oft einfach, weil eingespielte Verfahren Grosser Ressourcenverbrauch Alle (DWH-Bereiche) werden gesichtert -&gt; groer Platzbedarf Teure Backup-Software Nicht immer sicher, weil korrupte Datenbank-Blcke nicht erkannt werden knnen Man kann ohne Archivlog fahren -&gt; ETL schneller und einfacher Sicherung mit RMAN Ressourcen-gnstigstes Verfahren Man muss mit Archivlog fahren ETL etwas langsamer Massenloads mssen mit NOLOGGING gefahren werden -&gt; separate Sicherung </li> <li> Folie 42 </li> <li> R R B S S S D D DD Enterprise Information Layer User View Layer Data Integration Layer TTT T: Transfertabellen R: Referenztabellen S: Stammdaten B: Bewgungsdaten D: Dimensionen F: Fakten B...</li></ul>