So beschleunigen Sie Ihre ETL-Prozesse



Ähnliche Dokumente
ZWISCHEN ALBTRAUM UND OPTIMALER PERFORMANCE

Data Warehouse schnell gemacht Performanceaspekte im Oracle DWH

Oracle Warehouse Builder 3i

FEHLERTOLERANTE LADEPROZESSE IN ORACLE

Partitionierungsstrategien für Data Vault

Fehlertolerante Ladeprozesse gegen schlaflose Nächte

Laden von Data Marts auch mal komplex DOAG BI, 9. Juni 2016 Dani Schnider, Trivadis AG

Globale Statistiken im Oracle Data Warehhouse

INDEXIERUNGS- STRATEGIE IM DATA WAREHOUSE

Indexierungsstrategie im Data Warehouse Zwischen Albtraum und optimaler Performance

Nützliche Oracle 12c Features für Data Warehousing DOAG BI, 8. Juni 2016 Dani Schnider, Trivadis AG

Oracle In-Memory & Data Warehouse: Die perfekte Kombination?

Haben Sie die Zeit im Griff? Designtipps zur Zeitdimension

Oracle Data Warehouse Integrator Builder Ein Selbstversuch

Wenn die Fakten zu früh eintreffen

Performance-Optimierung bei Datentransformationen. Christian Hellwig Aus unserer Projekt- und Schulungserfahrung

Haben Sie die Zeit im Griff? Designtipps zur Zeitdimension

Das Ende von OWB was nun? Migrationspfade für OWB-Projekte

Fehlerbehandlung mittels DML Error Logging

Indexstrategien im Data Warehouse

Modellierung agiler Data Warehouses mit Data Vault Dani Schnider, Trivadis AG DOAG Konferenz 2015

Modellierung agiler Data Warehouses mit Data Vault

Das Ende von OWB was nun? Migrationspfade für OWB-Projekte Dani Schnider Stanislav Lando

Exadata und In-Memory Datenbewirtschaftung und Analyse Extrem mit Exadata und InMemory (Erfahrungsbericht)

Oracle-Statistiken im Data Warehouse effizient nutzen

Optimiertes Laden in die F-Fakten-Tabelle des SAP BW

Oracle 9i Einführung Performance Tuning

DWH-Modellierung mit Data Vault in Kombination mit ODI 12c - Erfahrungen aus der Praxis - Claus Jordan Trivadis GmbH Stuttgart

Powerful PL/SQL: Collections indizieren mit VARCHAR2-Indizes

Methoden zum Befüllen von SCD2

BESSER WERDEN DURCH ERSE

Die Crux mit dem Delta vom Fullload zum Incremental Load

Wie modelliere ich mein Core Data Warehouse?

SQL-basierte SCD2-Versionierung hierarchischer Strukturen

Fördercontrolling im öffentlichen Bereich Aspekte beim Aufbau eines DWH. Software mit Format.

Viel aus wenig: Enterprise-DWH mit Basic ETL

Für Querdenker Was ODI anders macht als OWB und umgekehrt

Tobias Braunschober DAS GENERISCHE DWH WENIGER CODE WENIGER KOSTEN

GESTERN OWB, HEUTE ODI

Parallele Programmierung in SQL und PL/SQL. Peter Bekiesch Dierk Lenz DOAG 2011 Konferenz und Ausstellung 17. November 2011

Prozedurale Datenbank- Anwendungsprogrammierung

DIMEX Data Import/Export

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Dr. Gernot Schreib, b.telligent GmbH & Co.KG DATENFLÜSSE IM DWH EINSATZ VON 3 RD -PARTY SOFTWARE

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Wir bauen uns ein Data Warehouse mit MySQL

SCD2 mal anders. Andrej Pashchenko Trivadis GmbH Düsseldorf

Optimale Performance durch Constraints im Data Warehouse

SQL als ETL Tool. DOAG Konferenz Nürnberg 2014 Christian König, CGI Business Intelligence Expert 18. November CGI Group Inc.

Performance by Design Wie werden performante ETL-Prozesse erstellt?

Oracle In-Memory & Data Warehouse: Die perfekte Kombination?

Performance in der Oracle Datenbank von Anfang an

Optimale Performance durch Constraints im Data Warehouse

Wie sicher sind Database Links?

Die View von der View von der View PERFORMANTES SQL SCHREIBEN

Oracle DWH Konferenz Neuss

DWH-Modellierung mit Data Vault

Regressionstesten und Testdatenanonymisierung von DWH-Ladestrecken

Elegant und effizient: Stilstudien in SQL. DOAG Konferenz, November 2018 Dani Schnider, Trivadis AG

ETL-Prozesse in der Oracle-Datenbank

Können "fast changing monster dimensions" gezähmt werden?

Das Ende von OWB - was nun?

ETL Prozesse in der Oracle-Datenbank

Datenbanken Implementierungstechniken SS2015

Automatische Generierung der ETL-Prozesse: OWB vs. ODI

Brücken bauen im dimensionalen Modell

Historisierung auf Knopfdruck

Automatische Korrektur der NULL-Werte durch Defaultwerte (Singlestones)

Kapitel 4 Dynamisches SQL

MCSA: SQL 2016 Database Development

Performante Verarbeitung großer Datenbanken am praktischem Beispiel

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Oracle Data Integrator (ODI): Elegante und effiziente Umsetzung der Best Practice leicht gemacht!

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Near Realtime ETL mit Oracle Golden Gate und ODI. Lutz Bauer

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Das ungleiche Paar Koexistenz von OWB und ODI

Performance-Vergleich zwischen InterSystems Caché und Oracle in einer Data-Mart-Applikation

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Flexible Schnittstelle für Flat Files in das DWH

1001 Möglichkeiten eine Staging Area zu füllen. Sven Bosinger its-people GmbH

Vollständig generisches DWH für kleine und mittelständische Unternehmen

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Regressionstesten und Testdatenanonymisieung von DWH Ladestrecken

Fehlertoleranz und Robustheit von ETL-Prozessen Wie gestalten wir Abläufe möglichst widerstandsfähig. Christian Borghardt I BI Consultant

Merge und andere schnelle Statements

Oracle OLAP 11g: Performance für das Oracle Data Warehouse

Oracle 10g Einführung

Oracle DB 12c: Die In-Memory-Option Oliver Zandner System-Berater für Oracle-DB-Technologien Oracle Hannover. Available July 2014

Partitioning mit Oracle Text 9i

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Outsourcing von Big Data //

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Es geht also im die SQL Data Manipulation Language.

Shaping the Future of Intelligence. PLATH Group 1

Transkript:

So beschleunigen Sie Ihre ETL-Prozesse Dani Schnider Principal Consultant 15. September 2015

Erleben Sie auch hin und wieder die Situation, dass die Nacht zu kurz ist? Oder mit anderen Worten: Der nächtliche ETL-Lauf dauert so lange, dass die Daten am Morgen nicht rechtzeitig in den Data Marts zur Verfügung stehen. Um für diese Problematik Abhilfe zu schaffen, gibt es ein paar grundlegenden Maßnahmen, die beim Entwickeln von ETL-Prozessen beachtet werden sollten. ETL-Tools und Datenbanksysteme stellen verschiedene Features und Möglichkeiten zur Verfügung, die ein effizientes Laden von Daten ins Data Warehouse erlauben oder mit denen die bestehenden Ladeprozesse beschleunigt werden können. Doch leider werden diese Möglichkeiten oft nicht optimal ausgenutzt. Immer wieder muss der Autor im Rahmen von Performanceeinsätzen und Reviews von Data Warehouses feststellen, dass teilweise elementare Regeln zur effizienten Realisierung von ETL-Prozessen missachtet werden. Ohne hier zu stark auf die Spezialitäten der einzelnen Tools einzugehen, sollen auf den folgenden Seiten einige wichtige Grundlagen erläutert werden, die Voraussetzung für eine gute Performance der Ladeprozesse sind. ELT statt ETL Je nach verwendeter Technologie der ETL-Tools werden die Transformationen auf einem ETL- Server durchgeführt oder finden innerhalb der Datenbank statt. Im zweiten Fall wird auch oft der Begriff ELT (Extraction, Loading, Transformation) statt ETL verwendet. Insbesondere bei großen Datenmengen sowie langsamen Netzverbindungen zwischen ETL-Server und Datenbank können diese zwei Arbeitsweisen markante Unterschiede in der Laufzeit von ETL- Prozessen zur Folge haben. In der Regel sind ELT-Verarbeitungen schneller, da der Datentransfer zwischen ETL-Server und Datenbank entfällt. Durch geeignete Maßnahmen wie schnelle Netzwerkverbindungen oder Bulk-Verarbeitung zwischen ETL-Server und Datenbank kann die Verarbeitungszeit soweit optimiert werden, dass sie in einer ähnlichen Größenordnung wie die ELT-Verarbeitung liegt. Abbildung 1: Arbeitsweise von ETL (links) und ELT (rechts) In vielen Data Warehouses werden Integrationswerkzeuge eingesetzt, die ausschließlich ETL- Funktionalität verwenden, ohne dass dies zu Performanceproblemen führt. Solange die zu ladenden Datenmengen genügend klein sind, fällt die Verarbeitungszeit meistens nicht ins Gewicht. Für größere Datenmengen stehen zum Teil spezielle ELT-Features zur Verfügung, die es erlauben, die Transformationsprozesse auf der Zieldatenbank durchzuführen (beispielsweise Pushdown Optimization in Informatica PowerCenter oder ELT-Komponenten in Talend Open Studio). Bietet ein ETL-Tool keine entsprechende Funktionalität an, wird oft die Möglichkeit gewählt, zeitkritische Verarbeitungen mittels SQL in der Datenbank zu implementieren (z.b. in PL/SQL-Packages) und aus dem ETL-Tool aufzurufen. info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 2 / 9

Bei den Integrationstools von Oracle ist dies nicht notwendig: Sowohl Oracle Warehouse Builder (OWB) als auch Oracle Data Integrator (ODI) arbeiten standardmäßig als ELT- Werkzeuge. OWB generiert PL/SQL-Packages in der Zieldatenbank. ODI führt die Transformationen in den meisten Fällen als SQL-Befehle in der Zieldatenbank aus, unterstützt aber in heterogenen Umgebungen auch ETL-Verarbeitungen. Mengenbasierte statt datensatzbasierte Verarbeitung Die Verarbeitung eines Transformationsprozesses sei es als ETL oder ELT kann entweder mengenbasiert (set-based) oder datensatzbasiert (row-based) ausgeführt werden. Wer Oracle Warehouse Builder einsetzt, kennt diese Unterscheidung, denn der OWB unterstützt beide Ausführungsarten. Beim Oracle Data Integrator wird in den meisten Knowledge Modulen eine mengenbasierte Verarbeitung verwendet. Verschiedene ETL-Tools von Fremdherstellern arbeiten datensatzbasiert, erlauben aber mit mehr oder weniger Komfort auch die Ausführung von mengenbasierten Ladeprozessen. Die unterschiedliche Verarbeitungsweise soll an einem einfachen Beispiel mit PL/SQL und SQL aufgezeigt werden. Eine Stage-Tabelle STG_SALES soll in eine Cleanse-Tabelle CLS_SALES geladen werden, wobei folgende Transformationen durchgeführt werden sollen: Der Datumschlüssel DATE_ID wird aus dem Verkaufsdatum (ohne Uhrzeit) ermittelt. Der Produktschlüssel PRODUCT_ID wird mittels Key Lookup auf der Core-Tabelle COR_PRODUCT ermittelt. Ist kein entsprechendes Produkt vorhanden, soll ein Singletonwert (-1) eingefügt werden. Der Verkaufskanal CHANNEL_ID wird anhand eines Flags ONLINE_FLAG ermittelt. Fehlt die Mengenangabe für einen Verkauf, wird für das Attribut QUANTITY der Wert 1 verwendet. Listing 1 zeigt, wie diese Anforderungen mittels PL/SQL-Block als datensatzbasierte Verarbeitung implementiert werden könnte. Über einen SQL-Cursor wird jeder Datensatz aus der Stage-Tabelle gelesen, transformiert und in die Cleanse-Tabelle geschrieben. Die Lösung funktioniert, ist aber alles andere als schnell. Insbesondere der ausprogrammierte Key Lookup und das COMMIT nach jedem Datensatz können als performancetechnische Todsünden bezeichnet werden. Deutlich effizienter ist es, die gleiche Logik mittels mengenbasiertem SQL-Befehl zu formulieren. Dies ermöglicht das effiziente Laden von Daten aus einer oder mehrerer Quelltabellen in eine Zieltabelle mittels SQL-Befehlen (INSERT- oder MERGE-Befehl). Das SQL-Statement in Listing 2 umfasst die gleiche Funktionalität wie der zuvor beschriebene PL/SQL-Block, wird aber bei großen Datenmengen viel schneller ausgeführt. Um die Verarbeitung zusätzlich zu beschleunigen, wird in Oracle ein Direct-Load INSERT (mit dem append-hint) verwendet. Was hier mit PL/SQL und SQL aufgezeigt wird, funktioniert auch in zahlreichen Integrationswerkzeugen. Bei OWB und ODI entspricht die mengenbasierte Verarbeitung der (empfohlenen) Standardausführung. Andere ETL-Tools bieten zum Teil Operatoren zur Ausführung von SQL- Befehlen an oder ermöglichen es, die Datensätze mit Hilfe von Array-Verarbeitung aufzubereiten und mittels Bulk-Operationen in die Datenbank zu schreiben. Werden beispielsweise jeweils 1000 oder 10000 Datensätze mit einem INSERT-Befehl in die Datenbank geschrieben, ist dies schon deutlich schneller, als wenn für jeden einzelnen Datensatz ein SQL-Befehl ausgeführt werden muss. info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 3 / 9

DECLARE CURSOR cur_stage IS SELECT sales_date, product_code, online_flag, quantity FROM stg_sales; v_cls cls_product%rowtype; BEGIN FOR v_stg IN cur_stage LOOP -- convert sales date v_cls.date_id := TRUNC(v_stg.sales_date); -- lookup product id BEGIN SELECT dwh_id INTO v_cls.product_id FROM cor_product WHERE product_code = v_stg.product_code; EXCEPTION WHEN NO_DATA_FOUND THEN v_cls.product_id := -1; END; -- define sales channel IF v_stg.online_flag = 'Y' THEN v_cls.channel_id = 1; -- internet ELSIF v_stg.online_flag = 'N' THEN v_cls.channel_id = 2; -- shop ELSE v_cls.channel_id = -1; -- unknown END IF; -- cleansing action for quantity IF v_stg.quantity IS NULL THEN v_cls.quantity := 1; ELSE v_cls.quantity := v_stg.quantity; END IF; -- insert row in cleanse table INSERT INTO cls_sales VALUES v_cls; COMMIT; END LOOP; END; Listing 1: Datensatzbasierte Verarbeitung (row-based) INSERT /*+ append */ INTO cls_sales ( date_id, product_id, channel_id, quantity) SELECT TRUNC(stg.sales_date), NVL(lkp.dwh_id, -1), CASE stg.online_flag WHEN 'Y' THEN 1 WHEN 'N' THEN 2 ELSE -1 END, NVL(stg.quantity, 1) FROM stg_sales stg LEFT OUTER JOIN cor_product lkp ON (stg.store_number = lkp.store_number); COMMIT; Listing 2: Mengenbasierte Verarbeitung (set-based) info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 4 / 9

Reduktion der Komplexität Unabhängig von der eingesetzten Technologie ist folgende Performancemaßnahme immer zu empfehlen: Komplexe ETL-Prozesse sollten wenn immer möglich in mehrere, überschaubare Einzelschritte aufgeteilt werden. Dies gilt sowohl bei der Implementierung mit SQL oder mit einer prozeduralen Programmiersprache als auch bei der Realisierung mit einem ETL-Tool. Bei prozeduralen Sprachen gehört es zum guten Programmierstil, komplexe Abläufe zu modularisieren und in mehrere Subprogramme oder Prozeduren aufzuteilen. Das gleiche Prinzip gilt auch bei der Entwicklung von komplexen ETL-Prozessen, die als Mappings oder Jobs mit einem ETL-Tool implementiert werden. Der in Abbildung 2 schematisch dargestellte ETL-Prozess kann und soll in mehrere Teilschritte aufgeteilt werden, die nacheinander oder parallel ausgeführt werden können. Abbildung 2: Beispiel für komplexen ETL-Prozess Anstatt den komplexen ETL-Prozess in einem umfangreichen Mapping zu implementieren, wird der Ablauf in mehrere Subprozesse unterteilt, welche als separate Mappings implementiert werden (siehe Abbildung 3). Dies hat mehrere Vorteile: Die Summe der Ausführungszeiten der einzelnen Subprozesse ist viel kürzer als die Ausführungszeit des gesamten Prozesses, da für die einfacheren Operationen viel weniger Ressourcen benötigt werden. Bei ELT-Tools oder SQL-Statements, welche direkt in der Datenbank ausgeführt werden, kommt hinzu, dass der Query Optimizer der Datenbank die einfacheren Statements leichter optimieren kann. Die einzelnen Mappings sind einfacher überschaubar, was die Weiterentwicklung bei zukünftigen Erweiterungen sowie die Einarbeitung neuer ETL-Entwickler vereinfacht. Auch hier gilt das gleiche wie bei Programmiersprachen: Überschaubare Programme sind leichter zu verstehen als Spaghetti-Code. Schließlich ist auch die Fehlersuche einfacher, da die Zwischenresultate in Stage- Tabellen oder weiteren Zwischentabellen abgespeichert und dort vom nächsten Verarbeitungsschritt wieder gelesen werden. Somit lässt sich im Falle von fehlerhaften Daten einfacher nachvollziehen, in welchem Teilschritt der Fehler auftritt, da die Zwischenresultate analysiert werden können. info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 5 / 9

Abbildung 3: Aufteilung in fünf überschaubare Subprozesse Die Reduktion der Komplexität bewirkt somit nicht nur kürzere Laufzeiten der ETL-Prozesse, sondern führt auch zu Zeiteinsparungen bei der Entwicklung und beim Testen der Ladestrecken. Wir haben also durch diese Maßnahme auch Performanceverbesserungen bei der Realisierungszeit erreicht. Frühzeitige Mengeneinschränkung Je kleiner die zu verarbeitende Datenmenge ist, desto schneller lässt sich ein ETL-Prozess ausführen. Deshalb ist es wichtig, dass bei der ETL-Entwicklung darauf geachtet wird, die Datenmenge so früh wie möglich einzuschränken. Wird ein Mapping so aufgebaut wie in Abbildung 4 gezeigt, kann dies negative Auswirkungen auf die Performance des ETL-Prozesses haben 1. Nach aufwendigen Zwischenschritten und Transformationen wird am Ende ein Filter eingefügt, welcher nur eine Teilmenge der Daten in die Zieltabelle schreibt. Das bedeutet, dass für alle nicht relevanten Datensätze die Transformationsschritte ebenfalls ausgeführt wurden und zwar vergeblich. Dies sollte möglichst vermieden werden. Abbildung 4: Mengeneinschränkung am Ende des ETL-Prozesses 1 Bei ELT-Tools ist es möglich, dass der Query Optimizer der Datenbank die ausgeführten SQL-Befehle so optimieren kann, dass trotz schlechtem Design des Mappings die frühzeitige Mengeneinschränkung funktioniert. info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 6 / 9

Besser ist es, die Filterkriterien so früh wie möglich anzuwenden und so die Datenmenge für die nachfolgenden Transformationsschritte zu reduzieren. Das Beispiel in Abbildung 5 ist ein optimaler Fall, da eine Filterung der Daten bereits auf einer der beiden Quelltabellen erfolgen kann (z.b. Lesen der aktuellen Version aus einer Dimensionstabelle). Das ist nicht immer möglich. Unter Umständen kann ein Filterkriterium erst aus dem Ergebnis eines Joins, eines Key Lookups oder einer Transformation ermittelt werden (z.b. Eliminieren aller Datensätze, für die beim Key Lookup kein passender Schlüssel gefunden wurde). Aber auch dann sollte die Filterung so früh wie möglich stattfinden und nicht erst vor dem Schreiben in die Zieltabelle. Abbildung 5: Frühzeitige Mengeneinschränkung am Anfang des ETL-Prozesses Parallelisierung Um die Ladezeit ins Data Warehouse zu verkürzen, besteht die Möglichkeit, die ETL-Prozesse zu parallelisieren. Dabei stehen verschiedene Varianten zur Verfügung. Einerseits können die einzelnen SQL-Befehle zum Lesen und Schreiben der Datenbanktabellen parallelisiert werden. Andrerseits können mehrere separate ETL-Prozesse gleichzeitig ausgeführt werden. Idealerweise sollte die Parallelisierung den gesamten ETL-Ablauf umfassen: Die Daten werden zum Beispiel mit mehreren parallelen Subprozessen aus der Stage-Tabelle gelesen, transformiert und anschließend in die Cleansing-Tabelle geschrieben. Wird einer der Schritte (z.b. die Transformation) seriell ausgeführt, so führt dies zu einem Flaschenhals in der Verarbeitung und somit zu einer längeren Ausführungszeit. Autofahrer kennen die Situation, wenn sie auf einer mehrspurigen Autobahn unterwegs sind. Eine Reduktion der Spuranzahl zum Beispiel durch eine Baustelle führt unweigerlich zu einem Rückstau und somit zu Performanceproblemen im Straßenverkehr. Zurück vom der Autobahn ins Data Warehouse: Idealerweise erfolgt die Parallelisierung der Ladeprozesse mittels ELT-Technologien, d.h. es werden die Parallelisierungsmöglichkeiten der Datenbank ausgenutzt. Bei einer mengenbasierten Ausführung mit Datenbank-Features wie Parallel Query und Parallel DML Operationen lässt sich ein optimaler Datendurchsatz erreichen. Das Listing 3 zeigt das bereits beschriebene Beispiel einer mengenbasierten Verarbeitung, allerdings 8-fach parallelisiert. Je 8 SQL-Subprozesse lesen die Daten aus der Stage-Tabelle STG_SALES und schreiben sie in die Cleanse-Tabelle CLS_SALES. info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 7 / 9

INSERT /*+ parallel(cls, 8) */ INTO cls_sales cls ( date_id, product_id, channel_id, quantity) SELECT /*+ parallel (stg, 8) */ TRUNC(stg.sales_date), NVL(lkp.dwh_id, -1), CASE stg.online_flag WHEN 'Y' THEN 1 WHEN 'N' THEN 2 ELSE -1 END, NVL(stg.quantity, 1) FROM stg_sales stg LEFT OUTER JOIN cor_product lkp ON (stg.store_number = lkp.store_number); COMMIT; Listing 3: Parallele Ausführung von SQL-Befehlen Eine andere Variante der Parallelisierung besteht darin, mehrere ETL-Prozesse gleichzeitig auszuführen. Solange die einzelnen Abläufe unabhängig voneinander sind und verschiedene Quellen und Ziele haben, ist dies eine einfache Maßnahme, um die Ausführungszeit eines ETL- Laufs zu reduzieren. Ein typischer Anwendungsfall ist beispielsweise das parallele Laden aller Dimensionen. Das Laden der Faktentabelle kann hingegen erst beginnen, wenn alle Dimensionstabellen vollständig geladen sind. Vermieden werden sollte hingegen die gleichzeitige Ausführung von ETL-Prozessen, die in dieselbe Zieltabelle schreiben. Dies kann zu Lockingproblemen auf der Datenbank führen, wenn mehrere Client-Prozesse in die gleichen Tabellen oder Partitionen schreiben. Bei Oracle ist dies vor allem dann der Fall, wenn auf der Zieltabelle Bitmap Indizes vorhanden sind. Aus Sicht der Datenbank ist dieses Verfahren vergleichbar mit einem Multiuser-Betrieb in einem OLTP-System und nicht geeignet für die Massenverarbeitung von großen Datenmengen. Möglich ist dieses Prinzip höchstens in Kombination mit partitionierten Tabellen. Kann sichergestellt werden, dass jeder Prozess in eine separate Zielpartition schreibt, so können mehrere ETL-Prozesse parallel ausgeführt werden, um Daten in die gleiche Tabelle zu schreiben. Datenbank-Konfiguration Die bisher beschriebenen Performancemaßnahmen betreffen hauptsächlich Design und Entwicklung der ETL-Prozesse. Daneben ist aber auch die korrekte Konfiguration der Datenbank sowie das physische Datenbankdesign wichtig, um die Ladezeiten möglichst klein zu halten. In Data Warehouses gelten andere Regeln als in OLTP-Systemen. Dies hat Auswirkungen auf die Konfiguration der Datenbanken. Eine DWH-Datenbank wird so konfiguriert, dass sie für nicht-selektive Abfragen optimiert ist, genügend Arbeitsspeicher für Massenverarbeitungen zur Verfügung hat und die parallele Ausführung von ETL-Prozessen und Auswertungen erlaubt. 2 2 Eine Zusammenstellung von wichtigen Oracle-Initialisierungsparametern für Data Warehouses ist hier zu finden: https://danischnider.wordpress.com/2015/04/29/oracle-initialization-parameters-for-data-warehouses/ info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 8 / 9

Auch die Indexierung ist in einem Data Warehouse unterschiedlich zu einem operativen System. Für effiziente ETL-Prozesse ist es zweckmäßig, so wenige Indizes wie möglich anzulegen. Einzig auf den Data Marts, die für Benutzerabfragen optimiert sind, werden Indizes angelegt in der Regel Bitmap Indizes. In allen anderen DWH-Schichten werden nur wenige oder gar keine Indizes erstellt. 3 Je nach Art der Ladeverarbeitung (initiale oder inkrementelle Ladeprozesse) kann es sogar sinnvoll sein, die Indizes vor dem Laden auf UNUSABLE zu setzen und nach dem Laden mittels REBUILD neu zu erstellen. Für die Abfragen, aber auch für nachfolgende ETL-Prozesse ist es wichtig, dass nach dem Laden von Daten die Optimizer-Statistiken der geladenen Tabellen und Indizes aktualisiert werden. Dies sollte nicht erst am Ende eines kompletten Ladelaufs erfolgen, sondern nach jedem Zwischenschritt. Die zuerst geladenen Tabellen werden in weiteren ETL-Prozessen als Quellen verwendet. Insbesondere bei der mengenbasierten ELT- Verarbeitung ist es wichtig, dass der Query Optimizer korrekte Statistiken für die Optimierung der nachfolgenden Transformationsschritte verwenden kann. 4 Sind Konfiguration und Design der Datenbank für ein Data Warehouse ausgelegt, und werden die ETL-Prozesse gemäß den hier beschriebenen Grundprinzipien implementiert, steht einem erfolgreichen und effizienten Laden des Data Warehouses nichts mehr im Wege. Die Nacht ist somit nicht mehr zu kurz, und die Daten im Data Warehouse stehen am Morgen für die Endanwender rechtzeitig zur Verfügung. Dani Schnider Trivadis AG Europa-Strasse 5 Tel: +41(0)44-808 70 20 CH-8152 Glattbrugg Fax: +41(0)44-808 70 21 Internet: www.trivadis.com Mail: info@trivadis.com 3 Der DOAG-Vortrag Indexierungsstrategie im Data Warehouse gibt einige Empfehlungen, welche Indizes in welchen DWH- Schichten angelegt werden sollen: http://www.slideshare.net/trivadis/indexierungsstrategie-im-data-warehouse-zwischenalbtraum-und-optimaler-performance-39738594 4 Verschiedene Tipps im Zusammenhang mit Optimizer-Statistiken in Data Warehouses sind im Blog Data Warehousing mit Oracle zu finden: https://danischnider.wordpress.com/ info@trivadis.com. www.trivadis.com. Info-Tel. 0800 87 482 347. Datum 15.09.2015. Seite 9 / 9