Upload
phunghanh
View
214
Download
1
Embed Size (px)
Citation preview
ETL-Design Optimierung Seite 2 von 108
Kurzfassung
Thema dieser Projektarbeit ist die ETL-Design Optimierung. ETL-Design ist die Modellierung von
Datenflüssen und Datentransformationen. Grundlage für eine Optimierung sind Ziele und
Vergleichbarkeit zwischen Designvarianten. Zu diesem Zweck werden in dieser Arbeit, nach einer
Einführung in die zum Verständnis notwendigen Grundlagen, Designziele und darauf wirkende Maße
vorgestellt. Anhand von praktischen Beispielen werden die Zusammenhänge zwischen Maßen und
Zielen nach einem einheitlichen Vorgehen untersucht. Als Modellierungswerkzeug kommt dabei
Informatica PowerCenter 8 Designer zum Einsatz. Nach den praktischen Analysen werden aus den
gewonnenen Erkenntnissen generelle Designempfehlungen im Ergebnisteil der Arbeit vorgestellt. Die
Arbeit schließt mit einer Zusammenfassung sowie einem Ausblick auf Möglichkeiten weiterer
Forschung ab.
Abstract
Subject of this project thesis is ETL-Design optimization. ETL-Design describes the modeling of data
flows and data transformations. Precondition of optimization are knowledge about objectives and
comparability between different approaches. Therefore, after an introduction to the theoretical
fundamentals, objectives and measures are introduced. Then different approaches of optimization are
analyzed in practical examinations. Focus of these analyses are the interdependencies between
measures und objectives. After the practical part, the introduced measures are evaluated. Additionally
based on observations and the gained knowledge general design recommendations are presented in the
conclusion part of this thesis.
Finally, this thesis ends with a summary and an outlook on possible future research.
ETL-Design Optimierung Seite 3 von 108
Markenrechtlicher Hinweis
Die in dieser Arbeit wiedergegebenen Gebrauchsnamen, Handelsnamen, Warenzeichen usw. können
auch ohne besondere Kennzeichnung geschützte Marken sein und als solche den gesetzlichen
Bestimmungen unterliegen.
Sämtliche in dieser Arbeit abgedruckten Bildschirmabzüge unterliegen dem Urheberrecht © des
jeweiligen Herstellers.
Informatica und Informatica PowerCenter sind Marken oder eingetragene Marken der Informatica
Corporation, Redwood /CA United States.
Oracle und Oracle XE sind eingetragene Marken der Oracle Corporation, Redwood Shores/CA United
States.
ETL-Design Optimierung Seite 4 von 108
Inhaltsverzeichnis
Kurzfassung............................................................................................................................................. 2
Abstract ................................................................................................................................................... 2
1 Einleitung ........................................................................................................................................ 7
2 Grundlagen ...................................................................................................................................... 9
2.1 Terminologie ........................................................................................................................... 9
2.2 Einordnung und Bedeutung von ETL Prozessen................................................................... 10
2.2.1 Extraktion ...................................................................................................................... 11
2.2.2 Transformation .............................................................................................................. 12
2.2.3 Laden ............................................................................................................................. 13
2.3 Modellierung von ETL Prozessen mit Informatica Powercenter 8 ....................................... 14
2.3.1 Transformationen in Informatica PowerCenter 8.......................................................... 15
2.3.2 Mappings in Informatica PowerCenter.......................................................................... 18
2.3.3 Mapplets ........................................................................................................................ 19
2.3.4 Sessions ......................................................................................................................... 22
2.3.5 Workflows ..................................................................................................................... 22
3 Designziele und Maße für ETL Prozesse ...................................................................................... 23
3.1 Designziele ............................................................................................................................ 24
3.1.1 Korrektheit..................................................................................................................... 24
3.1.2 Wartbarkeit .................................................................................................................... 24
3.1.3 Wiederverwendbarkeit .................................................................................................. 24
3.1.4 Performance................................................................................................................... 24
3.1.5 Zuverlässigkeit .............................................................................................................. 25
3.1.6 Bewertung der Zielerfüllung ......................................................................................... 25
3.2 Maße...................................................................................................................................... 25
3.2.1 Übersicht ....................................................................................................................... 25
3.2.2 Quantitative Maße ......................................................................................................... 26
3.2.3 Qualitative Maße ........................................................................................................... 27
4 ETL-Design Optimierung.............................................................................................................. 30
4.1 Vorgehensweise..................................................................................................................... 31
4.2 Beispielszenario..................................................................................................................... 32
ETL-Design Optimierung Seite 5 von 108
4.2.1 Datenquellen.................................................................................................................. 32
4.2.2 Zieltabellen.................................................................................................................... 34
4.3 Positionierung von Transformationen ................................................................................... 34
4.3.1 Filtertransformation - Fallbeispiel 1 .............................................................................. 34
4.3.2 Joinertransformation - Fallbeispiel 2............................................................................. 45
4.3.3 Zusammenfassung Positionierung von Transformationen ............................................ 51
4.4 Austauschbarkeit von Transformationen............................................................................... 52
4.4.1 Lookup vs. Join ............................................................................................................. 52
4.4.2 Lookup vs. Join - Fallbeispiel 3 .................................................................................... 53
4.4.3 Lookup vs. Join - Fallbeispiel 4 .................................................................................... 57
4.4.4 Zusammenfassung Lookup vs. Join............................................................................... 64
4.5 Weitere Optimierungsansätze - Fallbeispiel 5....................................................................... 65
4.5.1 Datenquellen.................................................................................................................. 65
4.5.2 Zieltabellen.................................................................................................................... 65
4.5.3 Ausgangsbeispiel........................................................................................................... 67
4.5.4 Variante 1 - Merge and Split ......................................................................................... 72
4.5.5 Variante 2 - Modularisierung ........................................................................................ 79
4.5.6 Variante 3 - Parameter und Sortierungen ...................................................................... 87
5 Ergebnis......................................................................................................................................... 93
5.1 Bewertung der Maße ............................................................................................................. 93
5.1.1 Quantitative Maße ......................................................................................................... 93
5.1.2 Qualitative Maße ........................................................................................................... 95
5.1.3 Zusammenfassung ......................................................................................................... 96
5.2 Klassifizierung von Mappings............................................................................................... 97
5.3 Designempfehlungen............................................................................................................. 97
5.3.1 Wartbarkeit .................................................................................................................... 97
5.3.2 Wiederverwendbarkeit .................................................................................................. 98
5.3.3 Performance................................................................................................................... 99
5.3.4 Zuverlässigkeit .............................................................................................................. 99
6 Zusammenfassung und Ausblick................................................................................................. 101
a. Tabellenverzeichnis..................................................................................................................... 104
b. Abbildungsverzeichnis ................................................................................................................ 106
c. Literaturverzeichnis..................................................................................................................... 107
d. Eidesstattliche Erklärung.........................................................Fehler! Textmarke nicht definiert.
ETL-Design Optimierung Seite 7 von 108
1 Einleitung
ETL steht für Extract, Transform, Load und bezeichnet einen Prozess, mit dem Daten aus
verschiedenen Quellen extrahiert, verarbeitet und anschließend in Zielsysteme transportiert werden.
ETL Prozesse spielen insbesondere in Business Intelligence und in Data Mining Szenarien eine
wichtige Rolle, da sie hier dazu genutzt werden, die zu analysierenden Daten aufzubereiten und zur
Verfügung zu stellen. Hierfür werden Daten aus häufig verteilten, heterogenen, meist operativen
Quellsystemen extrahiert und in Zielsysteme, häufig Data Warehouses, überführt. Neben ihrer
Bedeutung in den genannten Szenarien dienen ETL Prozesse auch der Datenintegration im
Allgemeinen, zum Beispiel bei der Konsolidierung operativer Systeme.
In Data Warehouse Projekten kann die Implementierung von ETL Prozessen bis zu 50% des
Gesamtaufwandes bedeuten (Kurz, 1999, S. 266), andere Schätzungen sprechen sogar von bis zu 80%
(Bange, 2006, S. 64).
Hieraus resultiert, dass Projekterfolge maßgeblich von der Qualität der ETL Prozesse abhängen. Die
Basis bei der Entwicklung von ETL Prozessen stellt dabei das ETL-Design, also die Modellierung von
Datenflüssen und Transformationsregeln dar. Diese Abhängigkeit verdeutlicht die hohe Bedeutung
von gutem ETL-Design. Wodurch gutes Design charakterisiert ist, beziehungsweise wie gutes ETL
Design erreicht wird, ist dabei nicht trivial zu erkennen. Entsprechend stellt es eine Herausforderung
dar, ETL Design zu analysieren, zu vergleichen und zu bewerten.
Während es auf Geschäftsprozessebene umfangreiche Untersuchungen zu ETL Prozessen gibt und aus
diesen verschiedene Vorgehensmodelle hervorgegangen sind1, wurde die Modellierungs- oder
Designebene von ETL Prozessen bisher nicht ausführlich untersucht. Designentscheidungen werden
bei der Modellierung von ETL Prozessen häufig auf Grundlage der Erfahrungen von Entwicklern und
dadurch oft intuitiv gefällt. Hierdurch ist die Qualität starken Schwankungen unterworfen.
Personenunabhängige, kontinuierliche Verbesserung ist schwierig und Fehler werden häufig erst spät
oder gar nicht entdeckt.
Ziel dieser Arbeit ist es, ETL-Design anhand verschiedener Szenarien unter Berücksichtigung von
Zielen und Maßen zu problematisieren, Designvarianten aufzuzeigen und zu bewerten. Auf Basis der
gewonnenen Erkenntnisse sollen Richtlinien für verschiedene, in der Praxis auftretende
Problemstellungen entwickelt werden.
Für das weitere Verständnis werden in Kapitel 2 zunächst theoretische Grundlagen von ETL-
Prozessen vermittelt. Außerdem wird das Werkzeug Informatica PowerCenter 8, mit dem die
Untersuchungen durchgeführt werden, in seiner Funktionsweise vorgestellt.
Anschließend werden in Kapitel 3 Ziele, die beim Design von ETL Prozessen relevant sind,
eingeführt. Neben den Zielen werden quantitative und qualitative Maße vorgestellt, die die Ziele
1 Vergleiche (Kimball, Reeves, Ross, & Thornthwaite, 1998), (Kimball & Caserta, The Data
Warehouse ETL Toolkit, 2004), (Bauer & Günzel, 2004), (Goeken, 2006)
ETL-Design Optimierung Seite 8 von 108
beeinflussen. Sowohl Maße als auch Ziele werden dabei aus verschiedenen Fachbereichen der
Informatik hergeleitet.
Nach der Einführung von Zielen und Maßen wird in Kapitel 4 ein Beispielszenario eingeführt. Anhand
dieses Szenarios werden verschiedene Optimierungsansätze in einzelnen Fallbeispielen untersucht.
Um ihre Vergleichbarkeit sicherzustellen, werden die Analysen nach einem einheitlichen Vorgehen,
das ebenfalls in Kapitel 4 eingeführt wird, durchgeführt. Die Untersuchungen finden dabei auf
Modellierungs- beziehungsweise Designebene statt.
Auf den praktischen Teil der Arbeit und die darin vorgenommenen Untersuchungen anhand von
Beispielen folgen in Kapitel 5 eine Bewertung der eingeführten Maße sowie ein auf den Erkenntnissen
basierender Vorschlag zur Klassifizierung von Mappings. Außerdem werden die in den
Untersuchungen gewonnenen Erfahrungen genutzt, um daraus Empfehlungen für ETL-Design unter
Berücksichtigung der verschiedenen Ziele abzuleiten.
Zum Abschluss der Arbeit werden in Kapitel 6 eine Zusammenfassung der Ergebnisse sowie ein
Ausblick gegeben.
ETL-Design Optimierung Seite 9 von 108
2 Grundlagen
2.1 Terminologie
Im Verlaufe dieser Arbeit werden einige ETL spezifische Begriffe verwendet. Darüber hinaus benutzt
das verwendete Werkzeug Informatica Powercenter 8 zum Teil eine eigene Terminologie. Zum
besseren Verständnis der folgenden Abschnitte werden die wichtigsten Begriffe hier definiert.
• ETL: Extract, Transform, Load
ETL bezeichnet einen Prozess, bei dem Daten aus einer oder mehreren Quellen extrahiert,
verarbeitet bzw. transformiert und anschließend in ein Ziel oder mehrere Ziele geschrieben
werden.
• Quelle: Die zu verarbeitenden Daten können aus einer oder mehreren Quellen verschiedenen
Typs extrahiert werden. In Informatica PowerCenter 8, dem verwendeten Werkzeug, werden
Daten aus einer Quelle in den sogenannten Source Qualifier gelesen und somit in das Mapping
geladen.
• Ziel: Nach der Verarbeitung werden die Daten in ein oder mehrere Ziele, die von
verschiedenem Typ sein können, geschrieben.
• Transformation: Eine Transformation bezeichnet im ETL-Kontext eine Aktivität, die
Manipulationen an Daten bzw. an deren Schema vornimmt. In dieser Arbeit wird, soweit nicht
anders angegeben, davon ausgegangen, dass die Daten in Form eines relationalen Schemas,
also in Tabellenform mit Zeilen und Spalten vorliegen. Die Zeilen beschreiben dabei die
Datentupel, die Spalten deren Attribute.
Zu unterscheiden sind aktive und passive sowie verbundene und nicht verbundene
Transformationen.
Eine aktive Transformation verändert die Anzahl der Zeilen einer Tabelle, dagegen bleibt die
Zeilenanzahl bei passiven Transformationen gleich.
Zu beachten ist, dass sich das Kriterium nur auf die Zeilen bezieht. Eine Transformation, die
die Anzahl der Spalten durch Projektion ändert, die Zeilenanzahl aber unverändert lässt, ist
passiv.
Neben aktiven und passiven gibt es verbundene und nicht verbundene Transformationen als
wesentliche Typen. Eine Transformation wird als verbundene Transformation bezeichnet,
wenn sie über verbundene Ein- und Ausgabeports in den Datenfluss integriert ist. Neben
verbundenen gibt es auch nicht verbundene Transformationen. Diese haben keine direkte
Verbindung zum Datenfluss des Mappings, sondern werden aus anderen Transformationen
aufgerufen.
• Mapping: Eine Menge von Transformationen mit mindestens einer Quelle und einem Ziel
wird als Mapping bezeichnet. In Informatica Powercenter werden innerhalb eines Mappings
Daten aus einer oder mehreren Quellen gelesen, dann optional in weiteren Transformationen
manipuliert und anschließend in ein oder mehrere Ziele geschrieben.
Das Mapping kann hierbei als gerichteter, zyklenfreier Graph gesehen werden. Die einzelnen
ETL-Design Optimierung Seite 10 von 108
Transformationen sind seine Knoten, die Verbindungen zwischen Ports die Kanten (Simitsis,
Vassiliadis, & Sellis, 2005). Die Betrachtung als Graph dient im Verlaufe dieser Arbeit als
Grundlage für die Diskussion verschiedener Qualitätsmerkmale.
• Mapplet: Mapplets sind eine Besonderheit von Informatica Powercenter. Sie bieten die
Möglichkeit, mehrere Transformationen zu einem Modul zusammenzufassen und als eine
Einheit über definierte Ein- und Ausgabetransformationen anzusprechen. Bei sehr
umfangreichen Mappings ist es häufig sinnvoll, zusammengehörige Transformationen in
Mapplets zu kapseln. Hierdurch wird die Übersichtlichkeit erhöht und Wiederverwendung
ermöglicht.
• Session: In Informatica PowerCenter werden einzelne Mappings in Sessions eingebunden, um
diese auszuführen. Für die Session werden die notwendigen Parameter, wie Verbindungen zu
Quell und Zielsystemen, definiert. Außerdem bieten Sessions die Möglichkeit Variablen und
Parameter, die im ETL Prozess genutzt werden, zu definieren. Sessions werden zur
Ausführung in ein Worklet oder einen Workflow integriert.
• Worklet: Ein Worklet fasst mehrere Sessions zu einem Modul zusammen. Als Module lassen
sich Worklets in verschiedenen Workflows wiederverwenden.
• Workflow: Der Workflow ist die höchste logische Ebene in Informatica Powercenter und
bildet einen gesamten ETL Prozess ab. Ein Workflow kann dabei aus 1-n Sessions oder
Worklets und somit aus 1-n Mappings bestehen.
2.2 Einordnung und Bedeutung von ETL Prozessen Das Datenaufkommen in heutigen Unternehmen wächst kontinuierlich, gleichzeitig steigt der Bedarf,
diese Daten in einer unternehmensweiten, einheitlichen Sicht zu analysieren, überproportional zu
diesem Wachstum. Analysen sollen sowohl Erkenntnisse über das operative Geschäft liefern, als auch
entscheidungsunterstützend bei der strategischen Planung und Steuerung helfen. Grundlage für
derartige Analysesysteme bilden häufig Data Warehouse Systeme. In einem Data Warehouse werden
Daten aus allen relevanten Datenquellen eines Unternehmens zusammengeführt und, von den
operativen Daten physikalisch getrennt, in einem einheitlichen Schema vorgehalten. (Inmon, 2002, S.
31)
Die Versorgung eines Data Warehouses findet üblicherweise durch ETL Prozesse statt.
Während eines ETL Prozesses werden zuerst Daten aus Quellsystemen extrahiert. Während der
folgenden Transformationsphase werden Daten bereinigt, verarbeitet und in das Zielschema
transformiert. Anschließend werden während der Ladephase die zuvor extrahierten und
transformierten Daten in das Zielsystem, zum Beispiel ein Data Warehouse geschrieben.
Außer in Data Warehouse Szenarien spielen ETL Prozesse auch bei der Datenintegration im
Allgemeinen eine wichtige Rolle. Sie kommen überall dort zum Einsatz, wo Daten aus verschiedenen
Quellensystemen in andere Datenhaltungssysteme überführt und dabei an neue Anforderungen
angepasst werden müssen.
Grundsätzlich können ETL Prozesse entweder individuell programmiert werden, oder mit Hilfe von
Werkzeugen entwickelt und durchgeführt werden. Im Rahmen dieser Arbeit wird von der Nutzung
eines Werkzeugs, konkret dem Informatica PowerCenter Server 8, ausgegangen.
Durch die hohe Komplexität von ETL Prozessen, ist der Einsatz eines Werkzeugs in den meisten
ETL-Design Optimierung Seite 11 von 108
Fällen sehr empfehlenswert. (Kimball & Caserta, The Data Warehouse ETL Toolkit, 2004, S. 10)
(Kurz, 1999, S. 268)
Nachfolgend wird jede der drei ETL-Phasen näher beschrieben.
2.2.1 Extraktion In der Extraktionsphase werden Daten aus verschiedenen operativen Datenquellen eines
Unternehmens gelesen und in den ETL Arbeitsbereich geladen.
Für ETL Prozesse kommen verschiedene Arten von Datenquellen in Frage. Beispiele sind Textdateien,
relationale Datenbanken und proprietäre Systeme.
Vor der eigentlichen Extraktion müssen die relevanten Quellen und Daten identifiziert und selektiert
werden. Dies sind fachliche Entscheidungen, die von den entsprechenden Abteilungen, in
Zusammenarbeit mit dem ETL-Team, getroffen werden müssen.
Für die Selektion spielen verschiedene Faktoren eine Rolle. So muss zum einen die Verfügbarkeit von
Daten berücksichtigt werden. Bei externen Datenquellen kann diese schwanken und somit nicht immer
auf Dauer gewährleistet werden.
Neben der Verfügbarkeit spielt vor allem die Qualität der Daten bei deren Auswahl eine wichtige
Rolle.
2.2.1.1 Data Profiling Sind die relevanten Daten identifiziert, müssen diese während des sogenannten Data Profilings
analysiert und auf ihre fachliche und technische Qualität überprüft werden.
Nach Bauer und Günzel gibt es 7 Kriterien, anhand derer die Qualität von Daten überprüft werden
kann.
1. Konsistenz: Daten werden als konsistent bezeichnet, wenn sie untereinander, gegenüber den
jeweiligen Metadaten widerspruchsfrei sind.
2. Korrektheit: Bilden Daten die jeweiligen Sachverhalte in der Realität richtig ab, so werden sie als
korrekt bezeichnet.
3. Vollständigkeit: Sind alle benötigten Daten vorhanden, um die jeweiligen Sachverhalte in der
Realität abzubilden, sind diese vollständig.
4. Genauigkeit und Granularität: Dieses Kriterium ist erfüllt, falls die Daten anhand ihrer Ausprägung
unterscheidbar sind und einem geforderten Detaillierungsgrad genügen.
5. Zuverlässigkeit und Glaubwürdigkeit: Um dieses Kriterium zu erfüllen, muss die Herkunft der
Daten nachvollziehbar und vertrauenswürdig sein.
6. Verständlichkeit: Daten werden als verständlich bezeichnet, falls die Bedeutung der Daten für die
Anwender ersichtlich ist.
7. Verwendbarkeit und Relevanz: Nur Daten, die eine entsprechend den anderen 6 Kriterien hohe
Qualität aufweisen und gleichzeitig für die durchzuführenden Analysen relevant sind, werden in das
Data Warehouse überführt.
ETL-Design Optimierung Seite 12 von 108
Mit Hilfe dieser Kriterien können Mindestanforderungen an Datenqualität definiert werden, die zur
Auswahl der Daten erfüllt werden müssen. Zwar können in Phase 2 des ETL Prozesses, der
Transformationsphase, Maßnahmen zur Verbesserung der Datenqualität vorgenommen werden, eine
Verbesserung ist aber nur in bestimmten Fällen und bis zu einem gewissen Maß möglich.
Das Verbesserungspotential der Datenqualität muss dementsprechend bei der Selektion von Daten
berücksichtigt werden. (Bauer & Günzel, 2004, S. 40 ff.)
2.2.1.2 Staging Nach der Selektion der zu extrahierenden Daten werden diese in der Regel in eine sogenannte Staging
Area geladen. Hierbei handelt es sich um einen Arbeitsbereich, in dem alle weiteren Maßnahmen bis
zum Laden vorgenommen werden. Der Vorteil des Zwischenspeicherns der Daten liegt zum einen in
geringeren Sperrzeiten der operativen Systeme begründet. Zum anderen wird durch Staging die
Zuverlässigkeit des Prozesses verbessert. So können ETL Prozesse, bei denen die Daten in einer
Staging Area vorgehalten werden, im Fehlerfall neu gestartet werden, ohne dass erneut auf die Quellen
zugegriffen werden muss. (Kimball & Caserta, The Data Warehouse ETL Toolkit, 2004, S. 29-31)
2.2.2 Transformation Während der Transformationsphase findet die eigentliche Verarbeitung der Daten statt. Dies geschieht
in drei Unterphasen: Der Datenbereinigung, der Schemaintegration und Datentransformation.
2.2.2.1 Datenbereinigung Während der Datenbereinigung werden fehlerhafte Quelldaten behandelt. Dies ist notwendig, da diese
die Ergebnisse der auf den Daten durchgeführten Analysen verfälschen könnten. Außerdem werden
von inkonsistenten Daten Probleme beim späteren Laden verursacht.
Die typischerweise auftretenden Fehler in Quelldaten lassen sich nach (Bauer & Günzel, 2004) in fünf
Klassen unterteilen:
Referenzielle Integrität: Stehen Daten miteinander in einer Fremdschlüsselbeziehung und ist ein Datensatz, auf den verwiesen
wird, nicht vorhanden, liegt eine Verletzung der referenziellen Integrität vor. In einem solchen Fall
kann der fehlende Datensatz entweder ergänzt oder, falls dies nicht möglich ist, der verweisende
Datensatz gelöscht werden.
Fehlerhafte Werte und unzulässige Werte Daten können fehlerhaft in Quellen vorliegen. Dies geschieht zum Beispiel bei der Erfassung durch
Tippfehler oder durch Fehler in den operativen Systemen. Durch Plausibilitätsprüfungen, zum Beispiel
durch den Vergleich mit Referenzdatenquellen und Überprüfung des zulässigen Wertebereichs,
können solche Fehler erkannt und eventuell korrigiert werden. Ist keine automatische Korrektur
möglich, müssen Fehler entweder manuell überprüft und behoben, die betroffenen Daten verworfen
oder die Fehler toleriert werden.
Fehlende Werte und Nullwerte Enthält ein Feld keine Daten, kann dies zwei Ursachen haben. Entweder gibt es zu diesem Feld keinen
Wert in der Realität oder es gibt einen, der aber nicht erfasst wurde. Falls ein Wert nicht erfasst wurde,
kann dieser unter Umständen ergänzt werden. Dies erfordert aber in den meisten Fällen eine manuelle
Prüfung und genaue fachliche Kenntnis der Daten.
ETL-Design Optimierung Seite 13 von 108
Redundanz Redundanzen beziehungsweise Duplikate treten häufig bei Inkonsistenzen auf. In diesem Fall müssen
die Daten untereinander, zum Beispiel mit Hilfe von Zeitstempeln, abgeglichen werden. Erkennung
von Duplikaten und deren Beseitigung ist häufig ein Funktionsmerkmal von ETL-Werkzeugen.
Trotzdem ist die Behandlung von Duplikaten eine große Herausforderung im ETL Kontext.
Unverständliche oder nicht eindeutige Kodierungen In Softwaresystemen werden Daten häufig kodiert gespeichert. Da es keine einheitlichen Standards zur
Kodierung gibt, können Kodierungen in verschiedenen Quellen voneinander abweichen. Ein Beispiel
hierfür sind Angaben zum Geschlecht, die mit m/w, m/f oder 0/1 kodiert werden können. Solche
Konflikte müssen aufgelöst und in eine standardisierte Form überführt werden.
2.2.2.2 Schemaintegration Da die Quelldaten aus verschiedenen operativen Systemen stammen, sind sie oft schemaheterogen.
Für die Integration in das Zielsystem müssen diese jedoch in ein einheitliches Schema überführt
werden. Typische Aufgaben hierbei sind Typkonvertierungen, zum Beispiel verschiedener DATE
Typen, oder die Umwandlung von als Zeichenketten gespeicherten Daten in numerische Werte. Zur
Schemaanpassung werden häufig Metadaten verwendet. Soweit sich die Quellschemata nicht
verändern, sind die Transformationsregeln zur Schemaintegration nach erstmaliger Definition
wiederverwendbar. (Lehner, 2003)
2.2.2.3 Datentransformation Nachdem die Quelldaten bereinigt und Transformationsregeln zur Schemaintegration definiert sind,
können fachlich Transformationen definiert werden, die die Daten den Anforderungen des Zielsystems
entsprechend anpassen und gegebenenfalls erweitern (Lehner, 2003).
Eine typische Anforderung ist die Datenfilterung anhand von Wertebereichen. Außerdem werden
Daten häufig voraggregiert, falls für die Verarbeitung in den Zielsystemen nur eine höhere
Aggregationsstufe benötigt wird. Hierdurch wird der Speicherbedarf in den Zielsystemen zum Teil
drastisch reduziert. Neben diesen Maßnahmen können anhand der bereinigten Daten auch zusätzliche
Attribute aus bestehenden Attributen abgeleitet werden.
Anschließend werden die zuvor definierten Transformationen an den Daten durchgeführt. Die
Transformation findet üblicherweise im Staging Area statt. Nach Durchführung aller
Transformationen folgt die Ladephase.
2.2.3 Laden In der Load- oder Ladephase von ETL Prozessen werden transformierte Daten in Zielsysteme
geschrieben. Dies kann ein Data Warehouse sein, ETL ist jedoch nicht zwangsläufig nur im Data
Warehouse Umfeld anzusiedeln, weswegen auch andere Zielsysteme in Frage kommen. Um das Laden
möglichst performant durchzuführen, werden häufig spezielle Funktionen der Zielsysteme genutzt.
Zum Beispiel bietet sich bei relationalen Datenbanken der sogenannte Bulk Modus an. Hierbei werden
beim Schreiben Protokollfunktionen und Transaktionskontrollen umgangen, wodurch die Leistung
erheblich gesteigert werden kann.
2.2.3.1 Ladestrategien Zur Versorgung eines Data Warehouses sind grundsätzlich drei Ladestrategien denkbar. Diese sind
Initial Load, Full Refresh und Incremental Load.
ETL-Design Optimierung Seite 14 von 108
Mit Initial Load wird das erstmalige Schreiben in die Zielsysteme bezeichnet. Im Data Warehouse
Umfeld werden hierfür alle Tabellen mit den in der Transformationsphase erzeugten Daten bevölkert.
Ein Initial Load findet üblicherweise nur einmal bei der Einführung eines neuen Systems statt.
Full Refresh löscht den Inhalt einer oder mehrerer Zieltabellen und füllt diese mit neuen Daten. Dieses
Verfahren entspricht weitestgehend einem Initial Load, mit dem Unterschied, dass nicht alle Tabellen
des Zielsystems betroffen sein müssen.
Da Full Refresh entsprechend der zu ladenden Datenmenge äußerst aufwendig werden kann, ist
aufgrund der zeitlichen Restriktionen, denen der Ladeprozess unterliegt, das Verfahren eines
Incremental Load häufig sinnvoll. Hierbei werden nur geänderte Daten erneut geschrieben. Dies
reduziert die zu verarbeitende Datenmenge erheblich. Für Incremental Load können Daten in zwei
Klassen unterteilt werden, in neue Daten, die dem Data Warehouse hinzugefügt werden müssen, und
geänderte Daten, für die entsprechend eines Historisierungskonzepts verfahren werden muss.
Im Betrieb eines Data Warehouses wird üblicherweise mit Incremental Load gearbeitet (Bauer &
Günzel, 2004).
2.3 Modellierung von ETL Prozessen mit Informatica Powercenter 8 Zwischen der Modellierung, der Entwicklung und der Durchführung von ETL Prozessen sollen
Brüche vermieden werden. Es soll aus dem Modell direkt in die Entwicklung und zur Wartung und
Weiterentwicklung aus der Entwicklung zurück in das Modell überführt werden können.
Momentan existieren nur sehr wenige Ansätze zur Standardisierung der Modellierung von ETL
Prozessen. Die wenigen, vielversprechenden Ansätze2 werden nicht von ETL Werkzeugen unterstützt,
da die Hersteller hier ihre proprietären Ansätze verfolgen.
In der Praxis bietet es sich daher an, die Modellierung mit dem Werkzeug, in dem die Umsetzung und
der Betrieb der ETL Prozesse realisiert werden sollen, durchzuführen.
Die Entscheidung für ein Werkzeug ist also gleichzeitig eine Entscheidung für die
Modellierungssprache, umgekehrt kann die verwendete Modellierungssprache die Entscheidung für
ein Werkzeug beeinflussen.
Für diese Arbeit wurde Informatica Power Center 8 als ETL Werkzeug gewählt.
Neben einer graphischen Entwicklungsumgebung zum Design von ETL Prozessen bietet es einen
Integrationsserver, um diese auszuführen. Darüber hinaus verfügt Informatica Power Center 8 über ein
sogenanntes Repository. Das Repository ist eine relationale Datenbank, in der alle relevanten
Informationen inklusive Metadaten zu den ETL Prozessen vorgehalten werden. Für Informatica
sprechen insbesondere der große Reifegrad, die hohe Marktdurchdringung und Akzeptanz sowie die
umfassende Konnektivität zu verschiedensten Quell- und Zielsystemen.
In Informatica Power Center 8 existieren verschiedene Betrachtungsebenen für einen ETL Prozess.
Auf höchster Ebene steht der Workflow, welcher einen gesamten ETL Prozess abbildet. Ein Workflow
besteht aus Sessions, die jeweils einzelne Mappings zusammenfassen. Außerdem können mehrere
Sessions zu einem Worklet zusammengefasst werden. Die nächste Ebene unterhalb der Sessionebene
ist die des Mappings. In einem Mapping werden Daten von Quellen durch verschiedene
Transformationen in Ziele transferiert. Ein Mapping ist also eine Menge von Transformationen mit
mindestens einer Quelle und mindestens einem Ziel. Die einzelnen Transformationen leisten hierbei
2 (Vassiliadis, Simitsis, & Skiadopoulus, 2002), (Luján-Mora, Vassiliadis, & Trujillo, 2004)
ETL-Design Optimierung Seite 15 von 108
die notwendige Verarbeitung der Daten, die Transformationsebene stellt gleichzeitig die tiefste
Betrachtungsebene dar.
Nachfolgend werden die Grundlagen zu Transformationen, Mappings, Sessions und Workflows
anhand von Beispielen dargestellt. Hierbei wird nach dem bottom-up Prinzip vorgegangen, es werden
zuerst Transformationen als unterste Betrachtungsebene vorgestellt. Anschließend werden die nächst
höheren Ebenen, Mapping und Mapplet, betrachtet. Abschließend werden Sessions und die darauf
aufbauenden Workflows kurz vorgestellt. Der Betrachtungsschwerpunkt der durchgeführten
Untersuchungen liegt auf den unteren Ebenen, also Transformations-, Mapplet- und Mappingebene.
2.3.1 Transformationen in Informatica PowerCenter 8 Eine Transformation verfügt über Ports, die die Attribute von Daten repräsentieren. Es werden hierbei
Ein- und Ausgabeports getrennt betrachtet. Über die Ein- und Ausgabeports werden Daten
beziehungsweise Attribute zwischen Transformationen weitergeleitet. Neben den Ein- und
Ausgabeports existieren Variablenports, die zur Verarbeitung von Daten innerhalb einer
Transformation genutzt werden.
2.3.1.1 Beispiel einer Transformation Nachfolgend wird eine Transformation inklusive der Ein- und Ausgabeports dargestellt. Als Beispiel
wurde eine EXPRESSION Transformation gewählt.
Abbildung 1 Expression Transformation mit Ein- und Ausgabeports
In Abbildung 1 sind am Beispiel einer EXPRESSION Transformation die verschiedenen Ports zu
erkennen. Von links gelangen Daten über die Inputports SUM_HOURS_PER_PROJECT und
TASK_LOG_COSTCODE in die Transformation. Rechts werden die in der Transformation
berechneten Daten über die Outputports COST_PER_PROJECT, COST_IN_DOLLAR und
COST_IN_FRANKEN zur weiteren Verarbeitung ausgegeben. Variablenports, in diesem Beispiel
FACTOR_COSTCODE, werden auf Mappingebene nicht dargestellt, sondern werden erst beim
Editieren von Transformationen ersichtlich. Folgende Abbildung 2 zeigt dies.
ETL-Design Optimierung Seite 16 von 108
Abbildung 2 Expression Transformation Detailansicht
Für jeden Port werden sein Name, der im relationalen Modell dem Spaltenname entspricht, sein
Datentyp mit Länge und Präzision sowie seine Rolle definiert. Die Rollen können hierbei Eingabe-
Ausgabe- und Variablenports sein. Sie werden in der Detailansicht durch I, O und V definiert und
durch die Checkboxen gewählt. Diese Attribute sind bis auf wenige Ausnahmen für alle
Transformationen gleich. In weiteren Merkmalen unterscheiden sich Transformationen jedoch. In
einer EXPRESSION Transformation, wie sie beispielhaft in der Abbildung dargestellt ist, können für
jeden Port entsprechende Berechnungsanweisungen definiert werden.
2.3.1.2 Transformationstypen Informatica Powercenter 8 bietet Transformationen für viele ETL Anforderungen an. Tabelle 1 bietet
einen Überblick und eine kurze Beschreibung der in Informatica vorhandenen Transformationen. Wo
es zum Verständnis der Beispiele notwendig ist, wird die Funktionsweise einzelner Transformationen
an der Stelle der Verwendung genauer erklärt.
Transformation Typ Kurzbeschreibung
Aggregator aktiv / verbunden Führt Aggregationskalkulationen durch.
Application Source Qualifier
aktiv / verbunden Liest Zeilen aus einer Applikation, z.B. einem ERP System ein.
Custom aktiv oder passiv / verbunden
Ruft eine Prozedur aus einer Shared Library oder DLL auf.
Expression Passiv / verbunden Berechnet Werte.
External Procedure
Passiv /verbunden oder nicht verbunden
Ruft eine Prozedur aus einer Shared Library oder dem Windows COM Layer auf.
Filter aktiv / verbunden Filtert Daten nach dem Prinzip einer Where-Klausel.
Input Passiv / verbunden Definiert die Eingabeports eines Mapplets.
ETL-Design Optimierung Seite 17 von 108
Java Aktiv oder passive / verbunden
Führt benutzerdefinierte Anwendungslogik, die in Java entwickelt wurde, aus. Der Bytecode wird im Informatica PowerCenter Repository gespeichert.
Joiner Aktiv / verbunden Führt Daten aus verschiedenen Datenbanktabellen oder Flatfiles spaltenweise zusammen. Die Daten können aus verschiedenen Quellsystemen stammen.
Lookup Passiv / verbunden oder nicht verbunden
Schlägt Werte in Quellen nach.
Normalizer Aktiv / verbunden Source Qualifier für COBOL Quellen. Kann darüberhinaus zum Normalisieren von Daten aus relationalen oder flachen Quellen verwendet werden.
Output Passiv / verbunden Definiert die Ausgabeports eines Mapplets.
Rank Aktiv / verbunden Beschränkt die Daten auf eine Gruppe von maximal oder minimal Werten.
Router Aktiv /verbunden Teilt den Datenfluss anhand von Bedingungen auf und leitet die Teilströme an verschiedene Transformationen weiter.
Sequence Generator
Passiv / verbunden Generiert Sequenzen, z.B. Primärschlüssel.
Sorter Aktiv / verbunden Sortiert Daten anhand eines Sortierkriteriums.
Source Qualifier Aktiv / verbunden Liest Daten aus relationalen oder flachen Quellen ein.
Stored Procedure
Passiv / verbunden oder nicht verbunden
Ruft eine, in der Datenbank hinterlegte, Stored Procedure auf.
Transaction Control
Aktiv / verbunden Definiert commit und rollback Transaktionen.
Union Aktiv / verbunden Führt Daten aus verschiedenen Datenbanktabellen oder Flatfiles zeilenweise zusammen. Die Daten können aus verschiedenen Quellsystemen stammen.
Update Strategy Aktiv / verbunden Dient im Kontext von Historisierung zur Festlegung, ob Zeilen mit insert, delete, update oder reject verarbeitet werden.
XML Generator Aktiv / verbunden Liest Daten über einen oder mehrere Eingabeports ein und gibt XML über einen Ausgabeport aus.
XML Parser Aktiv / verbunden Liest XML über einen Eingabeport ein und gibt die Daten über einen oder mehrere Ausgabeports aus.
XML Source Qualifier
Aktiv / verbunden Liest Daten aus XML Quellen ein.
Tabelle 1: Übersicht über die Transformationen in Informatica PowerCenter 8 (Informatica, PowerCenter
Transformation Guide, 2006)
ETL-Design Optimierung Seite 18 von 108
Wiederverwendbarkeit von Transformationen Informatica PowerCenter 8 bietet ein Konzept der Wiederverwendbarkeit von Transformationen.
Hierfür wird bei der Erstellung von Transformationen das „reusable“ Merkmal aktiviert. Dies führt
dazu, dass Transformationen in mehreren Mappings verwendet werden können. Die
wiederverwendbare Transformation wird im Repository von Informatica unabhängig von einzelnen
Mappings hinterlegt. Sobald eine solche Transformation in einem Mapping verwendet wird, wird eine
Instanz der Transformation erstellt. Wiederverwendbare Transformationen zeichnen sich vor allem
dadurch aus, dass Änderungen an der Transformation von all ihren Instanzen automatisch
übernommen werden. Standardmäßig ist das Wiederverwendbarkeitsmerkmal für alle
Transformationen aktiviert. Es kann aber für alle Transformationen außer der External Procedure
deaktiviert werden. Grundsätzlich ist die Nutzung von wiederverwendbaren Transformationen
empfehlenswert. Die Auswirkungen von Änderungen auf alle Instanzen einer Transformation können
bei Wartungsarbeiten allerdings auch zu nicht vorhergesehenem Verhalten in anderen Mappings
führen. Bei vorausschauender Anwendung erhöhen sie jedoch sowohl die Wiederverwendbarkeit als
auch die Wartbarkeit. (Informatica, Informatica PowerCenter Designer Guide 8.1, 2006, S. 209)
2.3.2 Mappings in Informatica PowerCenter Innerhalb eines ETL Prozesses durchlaufen Daten einzelne Transformationen. Werden verschiedene
Transformationen zu einem Datenfluss verbunden, stellen diese ein Mapping dar. Hierbei muss ein
Mapping mindestens eine Quelle sowie mindestens ein Ziel aufweisen. Als Quellen und Ziele
kommen in Informatica PowerCenter 8 relationale Tabellen in Datenbanken und flache Dateien in
Frage. Darüber hinaus ist auch Zugriff auf andere Speicherformate, wie zum Beispiel XML oder
Cobol, möglich. Zwischen Quellen und Zielen können beliebig viele Transformationen eingesetzt
werden, in denen die Daten verarbeitet werden.
Innerhalb eines Mappings werden also Daten von Quellen auf Ziele abgebildet und dabei in
Transformationen verarbeitet. Die Daten fließen hierbei immer in eine Richtung von der Quelle zum
Ziel. Der ETL Prozess wird also durch einen gerichteten, azyklischen Graphen beschrieben
(Vassiliadis, Simitsis, & Skiadopoulus, 2002). Das heißt, es sind zwar Aufspaltungen des Datenflusses
möglich, aber keine Umkehrung der Flussrichtung und somit auch keine Schleifen.
Abbildung 3 auf der folgenden Seite zeigt ein einfaches Mapping
Abbildung 3: Einfaches Mapping mit Filter
Das Beispielmapping verfügt über eine Quelle und ein Ziel, in einer FILTER Transformation werden
dabei nur Daten in das Ziel übergeben, für die Start und Ende der Aufgabe im Jahr 2006 lagen.
ETL-Design Optimierung Seite 19 von 108
Die SOURCE QUALIFIER Transformation, die in dem abgebildeten Mapping zu sehen ist, ist eine
Informatica PowerCenter spezifische Transformation. Sie dient dazu, die Daten per SELECT aus
Quellen zu extrahieren und dem Integrationsdienst zur Weiterverarbeitung zu übergeben. Für jede
Quelle wird ein Source Qualifier benötigt. Er kann bereits beim Einlesen einer Quelle in den
Integrationsdienst Operationen, wie zum Beispiel Filterung oder Join durchführen. Die Bedingungen
dafür werden durch eine WHERE Klausel im Source Qualifier definiert. Unter anderem werden die
hieraus entstehenden Potentiale in dieser Arbeit untersucht.
2.3.2.1 Parameter und Variablen Mit Parametern und Variablen wird die Wiederverwendbarkeit von Mappings und den nachfolgend
erläuterten Mapplets verbessert.
Bei Parametern handelt es sich um konstante Werte, auf die während einer Session in
Transformationen zurückgegriffen werden kann. Hierdurch können zum Beispiel Mappings, die sich
strukturell gleichen, aber unterschiedliche Filterbedingungen anwenden, mehrfach mit verschiedenen
Parametern verwendet werden. Ein Parameter wird hierbei für ein Mapping oder Mapplet deklariert
und vor dem Starten einer Session mit einem Wert belegt. Dies kann entweder direkt im Informatica
Mapping- beziehungsweise Mappletdesigner geschehen oder mittels einer Parameterdatei, in der die
Werte hinterlegt werden.
Variablen werden wie Parameter während einer Session in Transformationen einbezogen, um dort eine
höhere Flexibilität und damit Wiederverwendbarkeit zu gewähren. Dies kann zum Beispiel durch
Nutzung einer Variablen für Selektionsbedingungen geschehen. Im Unterschied zu Parametern können
Variablen während einer Session geändert werden. Sie sind also nicht konstant, sondern können in
verschiedenen Durchläufen mit unterschiedlichen Werten belegt werden (Informatica, Informatica
PowerCenter Designer Guide 8.1, 2006).
2.3.3 Mapplets Im Informatica PowerCenter 8 Designer bieten Mapplets die Möglichkeit Mappings zu
modularisieren. Hierdurch können Transformationen, also zusammengehörige Verarbeitungsschritte,
zusammengefasst werden. In komplexen Mappings wird hierdurch die sichtbare Anzahl an
Transformationen verringert. Andererseits wird die Komplexität nicht reduziert, sondern nur durch
Internalisierung verborgen. Wenn sie fachkonzeptionell sinnvoll, also zur Zusammenfassung enger
logischer Gruppen genutzt werden, erhöhen Mapplets jedoch die Übersichtlichkeit. Außerdem sind sie
als modulare Einheiten wiederverwendbar.
Anhand eines Beispiels wird nachfolgend der Einsatz eines Mapplets erläutert. An dieser Stelle soll
dabei nur ein Überblick verschafft werden. Eine Diskussion über den Nutzen und die Risiken findet
später in Kapitel 4 statt. Auch eine Beschreibung des Anwendungsfalls wird später vorgenommen, da
dieses Beispiel wieder verwendet wird.
Im zur Veranschaulichung gewählten Beispiel müssen drei Quellen eingelesen und danach über zwei
JOINER Transformationen zusammengeführt werden. Danach stehen die Daten in der benötigten
Struktur für eine Berechnung der Projektkosten zur Verfügung.
ETL-Design Optimierung Seite 20 von 108
Abbildung 4 zeigt zunächst ein Mapping ohne den Einsatz von Mapplets. Da einzelne Ports für das
Verständnis des Beispiels nicht relevant sind und um die Übersichtlichkeit zu erhöhen, wurde eine
minimierte Darstellung der Transformationen gewählt.
Abbildung 4 Mapping ohne Mapplets
Am Beispiel fällt auf, dass die Transformationen zum Einlesen und Zusammenführen der
Quelltabellen mehr als die Hälfte des gesamten Mappings in Bezug auf die Anzahl der
Transformationen ausmachen. In einem Mapplet können diese Transformationen zu einem Modul
zusammengefasst werden.
Die Zusammenfassung von Transformationen findet mit Hilfe des Mappletsdesigners statt.
Im gewählten Beispiel sind die Quellen, Source Qualifier und Joiner Transformationen, in einem
Mapplet mit der Bezeichnung MLTP_EXTRACT_AND_JOIN_SOURCES zusammengefasst.
Zusätzlich verfügt das Mapplet über eine OUTPUT Transformation. Mapplets können über eine
INPUT und müssen über eine OUTPUT Transformation verfügen. Diese besonderen
Transformationen stellen die Schnittstelle des Mapplets zu dem Mapping, in dem sie genutzt werden,
dar. Da in diesem Beispiel die Quellen in das Mapplet integriert sind, wird keine INPUT
Transformation benötigt. Ziele hingegen lassen sich nicht in Mapplets einbinden, daher ist eine
OUTPUT Transformation immer notwendig. Nachfolgend ist das Mapplet mit den darin enthaltenen
Transformationen dargestellt.
ETL-Design Optimierung Seite 21 von 108
Abbildung 5: Mapplet MLTP_EXTRACT_AND_JOIN_SOURCES
Wird das neu erstellte Mapplet in das Mapping eingebunden, stellt sich das Mapping wie in folgender
Abbildung gezeigt dar.
Abbildung 6 Mapping mit Mapplet
Die Zusammenfassung von der genannten Transformationen reduziert die Gesamtzahl der sichtbaren
Transformationen um die Hälfte.
Wie das Beispiel zeigt, kann der Einsatz von Mapplets die Übersichtlichkeit von ETL Prozessen auf
der Ebene der Mappings erhöhen. Außerdem können Mapplets durch ihre Modularität relativ einfach
wiederverwendet werden.
ETL-Design Optimierung Seite 22 von 108
2.3.4 Sessions Sessions werden mit Task Developer des Workflow Managers von Informatica PowerCenter erstellt.
Eine Session führt immer genau ein Mapping aus und dient als Arbeitseinheit eines Workflows. Neben
dem zugrunde liegenden Mapping werden für eine Session Verbindungen zu den Quell- und
Zielsystemen eingerichtet. Außerdem können innerhalb einer Session Parameter und Variablen
eingesetzt werden. Für jede Session kann die Art der Fehlerbehandlung gewählt werden. Diese reicht
von Ignorieren bis zum Abbrechen des übergeordneten Workflows.
2.3.5 Workflows Der Workflow ist die höchste Ebene des ETL Prozesses in Informatica PowerCenter 8. In ihm werden
eine oder mehrere Sessions ausgeführt. Der Workflow nutzt zur Durchführung des ETL Prozesses den
Integration Service. Außerdem können Workflows über einen Scheduler automatisiert, zeitgesteuert
gestartet werden. Auch für Workflows können unterschiedlich restriktive Arten der Fehlerbehandlung
definiert werden.
ETL-Design Optimierung Seite 23 von 108
3 Designziele und Maße für ETL Prozesse
Im Folgenden wird zunächst eine Liste von denkbaren Designzielen aufgestellt. Danach werden Maße,
die die Ziele beeinflussen, eingeführt.
Da die Gewichtung der einzelnen Ziele stark vom jeweiligen Anwendungskontext abhängt, wird diese
in dieser Arbeit vorerst nicht vorgenommen. Stattdessen werden die Entwicklung der Maße und die
daraus resultierende Zielbeeinflussung anhand verschiedener Beispielen untersucht. Hierdurch
können Zusammenhänge erkannt und daraus Wirkprinzipien abgeleitet werden. Auf Basis der
gewonnenen Erkenntnisse wird im Schlussteil der Arbeit eine Klassifizierung von Mappings
vorgenommen. Diese soll bei der Gewichtung der Ziele in einzelnen Szenarien helfen. Darüber hinaus
werden, ebenfalls im Schlussteil, generelle Empfehlungen für ETL-Design unter Betrachtung der
einzelnen Ziele gegeben.
ETL Designziele Die wesentlichen Ziele, die durch Designentscheidungen beeinflusst werden können, sind:
• Korrektheit
• Wartbarkeit
• Wiederverwendbarkeit
• Performance
• Zuverlässigkeit
Maße Der Erreichungsgrad dieser Ziele wird von verschiedenen quantitativen und qualitativen Maßen
beeinflusst.
Quantitative Maße
• Datenmenge
• Anzahl der Knoten
• Länge
• Komplexität
Qualitative Maße
• Modularität
• Kapselung
• Kohäsion
• Kopplung
ETL-Design Optimierung Seite 24 von 108
3.1 Designziele
3.1.1 Korrektheit
Der Begriff der Korrektheit eines ETL Prozesses wird in dieser Arbeit analog zum Korrektheitsbegriff
in der Softwaretechnik genutzt.
Unter Korrektheit versteht man die Eigenschaft einer Software, die an sie gestellten Spezifikationen zu
erfüllen. Nicht betrachtet wird, ob die Spezifikationen zur Lösung eines fachkonzeptionellen Problems
richtig sind (Liggesmeyer, 2002, S. 7).
Im ETL-Kontext bedeutet Korrektheit, dass die bewirtschaftenden Daten nach Durchführung des ETL
Prozesses vollständig, fehlerfrei, typrichtig, gemäß des spezifizierten Zusammenhangs und Schemas in
den Zielsystemen vorliegen.
Korrektheit ist in ETL Prozessen analog zur Softwaretechnik immer stärkstes Ziel, da fachliche oder
technische Fehler nicht kalkulierbare Probleme nach sich ziehen können.
Dies wird im ETL Kontext insbesondere dadurch verschärft, dass ETL als
Datenbewirtschaftungsprozess häufig die Grundlage für entscheidungsunterstützende Systeme in
unternehmenskritischen Bereichen bildet.
3.1.2 Wartbarkeit Auch Wartbarkeit ist ein aus der Softwaretechnik übernommener Begriff.
Eine hohe Wartbarkeit reduziert den Aufwand für Pflege und Erweiterung einer Software. Hierdurch
werden Kosten gesenkt und eine Weiterentwicklung vereinfacht. Dies steigert in der Regel die
Qualität der Lösungen. Gleichzeitig ist eine gute Wartbarkeit ein wichtiges Kriterium für erfolgreiche
Teamarbeit, da weniger Abstimmungs- und Schulungsaufwand notwendig ist. Dies gilt analog auch
für ETL Prozesse, daher ist auch hier eine hohe Wartbarkeit grundsätzlich erstrebenswert.
3.1.3 Wiederverwendbarkeit Unter Wiederverwendbarkeit versteht man die Möglichkeit ein Softwareprodukt ganz oder teilweise in
weiteren Anwendungsfällen nutzen zu können.
Ein hohes Maß an Wiederverwendbarkeit eines Produkts oder einer Komponente steigert die
Kosteneffizienz bei der Entwicklung zukünftiger Lösungen und kann gleichzeitig bei der
Wiederverwendung ausgereifter Produkte, andere Qualitätsmerkmale, wie die Zuverlässigkeit, positiv
beeinflussen. Dies reduziert zum Beispiel den Aufwand für Validierung und Verifikation stark.
Diese Definition lässt sich in dieser Form auf das Design von ETL Prozessen übertragen.
Das Anstreben einer hohen Wiederverwendbarkeit wird in manchen Fällen den Aufwand für die
initiale Erstellung eines ETL Prozesses erhöhen, dieser Nachteil wird aber vermutlich in den meisten
Fällen von den oben genannten Vorteilen aufgewogen.
3.1.4 Performance Unter Performance wird der Durchsatz bzw. die Durchführungsgeschwindigkeit und damit Dauer
eines ETL Prozesses verstanden.
Im Rahmen von ETL Prozessen ist die Performance häufig ein wichtiges Kriterium.
ETL-Design Optimierung Seite 25 von 108
Während der Extraktion von Daten aus operativen Quellen müssen diese in vielen Fällen gesperrt
werden, wodurch die Arbeit mit diesen Systemen stillsteht. Selbst wenn keine Sperrung der operativen
Systeme erforderlich ist, werden diese durch den Extraktionsprozess stark belastet. Diese Punkte
begründen, warum die Extraktion meistens in einem kleinen Zeitfenster außerhalb der üblichen
Geschäftszeiten stattfinden soll (Bauer & Günzel, 2004).
Neben den Anforderungen der Umgebung ist zu beachten, dass aufgrund der häufig sehr großen
Datenmengen, die in ETL Prozessen verarbeitet werden, diese sehr ressourcenintensiv werden können.
Eine Verbesserung der Leistung kann daher sehr erstrebenswert sein.
Die Leistung von ETL Prozessen wird von vielen Faktoren beeinflusst. In dieser Arbeit sollen nur die
Faktoren betrachtet werden, die durch Designentscheidungen beeinflusst werden können. Die
physikalisch technischen Aspekte, die neben den logisch konzeptionellen eine wichtige Rolle für die
Leistung spielen, sollen hier nicht näher betrachtet werden. Aus diesem Grund wird zur Bewertung der
Performance kein Benchmarking anhand von Durchlaufzeiten eingeführt, sondern lediglich die
Entwicklungstendenz, also ob eine Verbesserung oder Verschlechterung stattgefunden hat, dargestellt.
3.1.5 Zuverlässigkeit Zuverlässigkeit beschreibt die Eigenschaft, unter gleichen Bedingungen reproduzierbar korrekte
Ergebnisse zu erzielen.
Außerdem bezeichnet sie die Fähigkeit eines Systems, bei Erreichen eines unerwarteten Zustands,
etwa durch Fehlbedienung oder Teilausfälle, wieder in einen stabilen Zustand zurückzukehren.
Wichtig für die Bewertung der Zuverlässigkeit ist, ob Fehler bereits bei der Implementierung erkannt
werden können oder erst zur Laufzeit auftreten (Liggesmeyer, 2002, S. 9).
Im Zusammenhang von ETL Prozessen wird Zuverlässigkeit unter anderem durch die Fähigkeit zur
Wiederaufnahme gescheiterter bzw. zur Fortsetzung unterbrochener Prozesse gewährleistet.
3.1.6 Bewertung der Zielerfüllung Um in den folgenden Abschnitten die Auswirkungen von Veränderungen am Design bewerten zu
können, wird die Veränderung der Zielerfüllung anhand einer fünfstelligen Skala dargestellt. Hierbei
findet immer ein Vergleich zwischen dem jeweiligen Ausgangsbeispiel und der jeweilig aktuellen
Variante statt. Die Bewertungsskala ist nachfolgend in einer Tabelle dargestellt
Symbol -- - 0 + ++
Veränderung
gegenüber
Referenz
stark
verschlechtert verschlechtert unverändert verbessert
stark
verbessert
Tabelle 2: Symbolik zur Bewertung der Zielerfüllung
3.2 Maße
3.2.1 Übersicht
Verschiedene Maße beeinflussen die definierten Designziele. In den folgenden Untersuchungen dienen
Sie dazu, Auswirkungen von Veränderungen an Beispielen in einer systematischen Form zu erfassen
und dadurch Vergleichbarkeit zu schaffen.
ETL-Design Optimierung Seite 26 von 108
Zum Teil beeinflussen sich die Maße gegenseitig, so dass es zu Wechselwirkungen kommt.
Die Maße können in zwei Gruppen, quantitative und qualitative, unterteilt werden. Beide Gruppen
unterscheiden sich durch die Art ihrer Erhebung.
Quantitative und qualitative Maße Während sich quantitativen Maße berechnen und in Form eines Messwertes darstellen lassen, müssen
die qualitativen diskutiert und begründet werden. Hierdurch unterliegen qualitativen Maße, im
Gegensatz zu den quantitativen, einer subjektiven Beurteilung. Dementsprechend muss ihre
Ausprägung begründet werden und kann im Einzelfall zur Diskussion stehen.
Quantitative Maße werden in den folgenden Beispielen anhand ihres Messwerts erhoben. Für
qualitative wird eine fünfstellige Bewertungsskala eingeführt, anhand derer die Ausprägung dargestellt
wird. Die Ausprägungen reichen dabei von „sehr schwach“ bis „sehr stark“, wie in der nachfolgenden
Tabelle verdeutlicht wird. Neutral beschreibt dabei eine durchschnittliche Ausprägung.
Symbol n/a n.v. -- - 0 + ++
Ausprägung nicht
erhoben
nicht
vorhanden
sehr
schwach schwach neutral stark sehr stark
Tabelle 3: Ausprägung der qualitativen Einflussfaktoren
Diese Skala bewertet Veränderungen an Maßen nicht, sondern erfasst sie ausschließlich. Welche
Ausprägung sich positiv auf Designziele auswirkt, ist unterschiedlich. So wird beispielsweise im
Allgemeinen eine möglichst starke Kohäsion angestrebt, die Kopplung hingegen sollte möglichst
gering sein. Welchen Einfluss die jeweiligen Ausprägungen haben, wird in den Beispielen für jedes
Designziel diskutiert.
3.2.2 Quantitative Maße
3.2.2.1 Datenmenge Die Datenmenge kann auf mehreren Ebenen betrachtet werden.
Zum einen als Anzahl der Tupel, wobei hier die Breite der Tupel nicht berücksichtigt wird. Diese
Betrachtung ist, bei der Diskussion von Transformationen die die Zeilenanzahl manipulieren,
ausreichend. Eine weitere, genauere Möglichkeit besteht darin, Zeilen und Spalten der Tupel
miteinander zu multiplizieren. Diese Betrachtung liefert eine Kenngröße der tatsächlichen
Datenmenge. Bei der Diskussion von Transformationen, die die Anzahl der Spalten manipulieren,
muss diese Art der Betrachtung gewählt werden.
Zur Bewertung von Optimierungsmaßnahmen muss die Datenmenge auf Transformationsebene
betrachtet werden, das heißt, es wird betrachtet, wie eine Transformation die Datenmenge verändert.
Grundsätzlich ist eine Verringerung der Datenmenge anzustreben. Dies kann beispielsweise durch
Selektionen und Aggregationen, was die Zahl der Tupel verringert, oder durch Projektion, wodurch
nicht benötigte Attribute entfallen, erzielt werden.
Die Datenmenge lässt sich quantitativ erheben:
ETL-Design Optimierung Seite 27 von 108
Da sich in Transformationen häufig nur die Zeilenanzahl ändert, ist zum Aufzeigen der Entwicklung
eine vereinfachte Betrachtung der Datenmenge:
häufig ausreichend. Solange nicht anders angegeben, wird unter Datenmenge die Anzahl der Tupel
verstanden. Beide Varianten der Messgröße stellen nur eine logische Erhebung der Datenmenge dar,
der physikalische Speicherbedarf wird damit nicht berücksichtigt.
3.2.2.2 Anzahl der Knoten Sieht man einen ETL Prozess beziehungsweise ein Mapping als Graphen, kann man die Anzahl der
Knoten innerhalb dieses Graphen betrachten. Innerhalb eines Mappings ist jede Transformation, also
jeder dedizierte Verarbeitungsschritt, ein Knoten. Auf höherer Ebene können auch Mapplets oder
Sessions als Knoten des ETL Prozess-Graphen angesehen werden.
Dieses Maß entspricht der von (Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005) eingeführten
„Size“. Die Bezeichnung Anzahl der Knoten wurde für ein intuitiveres Verständnis gewählt.
3.2.2.3 Komplexität Unter Komplexität wird im ETL Kontext die Anzahl der verbundenen Kanten zwischen den Knoten
verstanden (Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005).
Die Komplexität kann ab der Mappingebene und für alle höheren Betrachtungsebenen untersucht
werden. In Informatica wird die Komplexität durch die Anzahl der verbundenen Ports der einzelnen
Transformationen bestimmt.
3.2.2.4 Länge Die Länge beschreibt nach (Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005) die maximale
Anzahl an Weiterleitungen, die ein Attribut durchläuft.
Die Länge eines Mappings berechnet sich durch die maximale transitive Abhängigkeit eines Attributs
von vorherigen Transformationen.
3.2.3 Qualitative Maße Neben den quantitativen gibt es qualitative Maße zur Formalisierung bestimmter Einflussfaktoren.
Diese werden nachfolgend eingeführt.
3.2.3.1 Modularität Unter Modularität versteht man die Aufteilung von Funktionalität auf Module. Ein Modul stellt dabei
eine in sich geschlossene Einheit dar, die Funktionen über Schnittstellen zur Nutzung bereitstellt.
ETL-Design Optimierung Seite 28 von 108
Wesentlich für ein Modul ist die aus technischer Sicht weitestgehend kontextunabhängige Nutzbarkeit.
Dieses qualitative Maß ist aus der Softwaretechnik abgeleitet, wo Modularität eine wichtige Rolle
spielt (Balzert H. , 1998, S. 572).
3.2.3.2 Kapselung Mit dem Begriff der Modularität geht eng der Begriff der Kapselung einher. Kapselung beschreibt,
wie stark die Funktionalität eines Elements oder eines Moduls nach außen verborgen ist. Zusätzlich
spielt hierbei eine Rolle, wie viele Funktionen innerhalb eines Elements zusammengefasst werden. Zur
Verdeutlichung kann hier das Geheimnisprinzip aus der Softwaretechnik herangezogen werden.
Dieses besagt, dass Funktionen eines Elements innerhalb des selbigen verborgen sein sollen. Die
Details der Implementierung sind also den Nutzern der Funktionen des Elements nicht bekannt
(Balzert H. , 1998, S. 572).
3.2.3.3 Universalität Wie universell ein Element beziehungsweise eine Komponente einsetzbar ist, hängt davon ab, wie
generell sie entwickelt wurde. Das Gegenteil von Universalität ist Spezifität. Ein Element mit hoher
Universalität kann in verschiedenen Szenarien mit geringem Anpassungsaufwand eingesetzt werden,
wohingegen ein spezialisiertes Element üblicherweise nur in einem konkreten Anwendungsfall genutzt
werden kann.
3.2.3.4 Kohäsion Nach (Balzert H. , 1998, S. 474) ist die Kohäsion oder auch Bindung in der Softwaretechnik ein
„qualitatives Maß für die Kompaktheit einer Systemkomponente“. Aus dieser Beschreibung geht
hervor, dass die Kohäsion im Zusammenhang von Modularisierung und Strukturierung eine wichtige
Rolle spielt. Beleuchtungsgegenstand der Kohäsion ist, wie eng die einzelnen Elemente einer
Komponente verbunden sind und wie viele Aufgaben durch sie erledigt werden.
Das Maß der Kohäsion soll in dieser Arbeit aus der Softwaretechnik auf ETL Prozesse und Mappings
übertragen werden und zur Bewertung des Zielerfüllungsgrades dienen. Die Kohäsion spielt
insbesondere bei der Untersuchung von Mapplets eine Rolle, kann aber auch auf
Transformationsebene aufschlussreich sein.
Eine gute, also starke Kohäsion liegt nach (Balzert H. , 1998, S. 474) dann vor, „wenn nur solche
Elemente zu einer Einheit zusammengefasst werden, die auch zusammengehören“. In der Literatur
wird zwischen verschiedenen Arten von Kohäsion unterschieden. Diese reicht in sieben Stufen von der
zufälligen Kohäsion als schwächste bis zur funktionalen Kohäsion als stärkste Form. Letztere liegt
dann vor, „wenn alle Elemente an der Verwirklichung einer einzigen, abgeschlossenen Funktion
beteiligt sind.“ (Balzert H. , 1998, S. 475) Die Art und Stärke der Kohäsion lässt sich laut (Balzert H. ,
1998) nicht automatisch ermitteln. Balzert nennt jedoch Kennzeichen zur Identifikation der
funktionalen Kohäsion. Diese sind:
• Alle Elemente tragen zur Erreichung eines einzelnen, spezifischen Ziels bei.
• Es gibt keine überflüssigen Elemente.
• Die Aufgabe der Komponente lässt sich durch genau ein Verb beschreiben.
• Eine Komponente ist durch eine andere, die den gleichen Zweck erfüllt, aber unterschiedlich
implementiert ist, austauschbar.
• Es liegt eine hohe Kontextunabhängigkeit vor, das heißt, es bestehen einfache Beziehungen zu
anderen Komponenten.
ETL-Design Optimierung Seite 29 von 108
Aus den beschriebenen Merkmalen resultieren nach Balzert folgende Vorteile:
• Hohe Kontextunabhängigkeit
• Geringere Fehleranfälligkeit bei Änderungen
• Geringere Spezialisierung und dadurch hoher Grad an Wiederverwendbarkeit
• Verbesserte Erweiterbarkeit und Wartbarkeit, da sich Änderungen auf isolierte Teile
beschränken. (Balzert H. , 1998, S. 476)
Es liegt die Vermutung nahe, dass diese Kennzeichen und Auswirkungen sich aus der Softwaretechnik
direkt auf die hier durchgeführten Untersuchungen übertragen lassen. In der Auseinandersetzung mit
Beispielen soll diese Vermutung überprüft werden.
3.2.3.5 Kopplung Der Begriff der Kopplung ist eng mit dem der Kohäsion verbunden. Während die Kohäsion die
Aufgabenspezifität der Elemente beschreibt, ist die Kopplung ein qualitatives Maß für die
Schnittstellen zwischen Komponenten. Nach (Balzert H. , 1998, S. 474) ist in der Softwaretechnik
eine ausgeprägte Struktur eines Systems erstrebenswert, da sie zu einem hohen Maß an Einfachheit,
guter Verständlichkeit und leichter Einarbeitung führt. Die Strukturausprägung ist umso größer, „je
stärker die Bindungen der Systemkomponenten im Vergleich zu den Kopplungen zwischen ihnen
sind.“
Diese Forderung und ihre Bedingungen sind vermutlich aus der Softwaretechnik auf die hier
untersuchten ETL Prozesse übertragbar. In den zu behandelnden Beispielen wird dies näher
untersucht.
Zur Bestimmung der Kopplung wird untersucht, wie stark einzelne Elemente Verbindungen
miteinander eingehen. Zu unterscheiden ist dabei zwischen Mappings, die Mapplets verwenden, und
solchen, die nur aus Transformationen bestehen.
Auf Transformationsebene wird die Kopplung durch die ein- beziehungsweise ausgehenden Kanten,
also die verbundenen Ports, bestimmt. Auf dieser Ebene korreliert sie dementsprechend sehr stark mit
der Komplexität. Für Mapplets wird die Anbindung der Ein- und Ausgabetransformationen an das
außenliegende Mapping betrachtet. Innerhalb von Mapplets liegt wiederum Transformationskopplung
vor. Die Transformationskopplung wird auch als intramodulare Kopplung bezeichnet, die zwischen
Mapplets als intermodulare.
In der Softwaretechnik wird angenommen, dass eine schwache Kohäsion zu einer stärkeren Kopplung
führt, sich also bei einer geringeren Spezifikation einzelner Elemente die Anzahl der Verbindungen in
der Regel erhöht. Das würde eine direkte Abhängigkeit dieser Maße bedeuten. Dieser Zusammenhang
soll anhand von Beispielen auf seine Gültigkeit im ETL Kontext überprüft werden.
(Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005) gehen davon aus, dass eine schwächere
Kopplung, vor allem in Verbindung mit stärkerer Kohäsion, zu einer Verbesserung in Bezug auf
Wartbarkeit und Wiederverwendbarkeit führt.
ETL-Design Optimierung Seite 30 von 108
4 ETL-Design Optimierung
Oft ist es möglich, die gleichen fachkonzeptionellen Anforderungen auf verschiedene Weise zu
erfüllen. Um ein optimales Ergebnis zu erreichen, müssen dem Entwickler Alternativen bekannt sein,
und er muss diese für sein Szenario gegeneinander abwägen.
Um Alternativen vergleichbar zu machen, wurden in dieser Arbeit bereits Designziele und darauf
wirkende Maße identifiziert.
Nach (Simitsis, Vassiliadis, & Sellis, 2005) sind bei allen Optimierungsmaßnahmen im Wesentlichen
zwei Punkte zu prüfen:
1. Bleibt die Korrektheit erhalten? Dies ist gegeben, wenn die geänderte Variante aus fachlicher
Sicht äquivalent zur ursprünglichen ist,
2. Werden die angestrebten Ziele durch die Änderungen in höherem Maße erfüllt? Dies ist die
Voraussetzung dafür, dass eine Optimierung stattgefunden hat.
Im Folgenden sollen anhand verschiedener Beispiele typische Szenarien, in denen mehrere
Alternativen möglich sind, vorgestellt, diskutiert und bewertet werden.
Folgende Fälle werden untersucht:
• Positionierung von Transformationen (Swap)
Oft kann eine Transformation an verschiedenen Stellen innerhalb eines Mappings, und damit
innerhalb des Datenflusses, eingebunden werden. Hierbei bieten sich verschiedene Vorgehen
zur Erreichung bestimmter Ziele an. Dieser Ansatz wird von (Vassiliads, Simitsis, Terrovitis,
& Skiadopoulos, 2005) als „Swap“ bezeichnet. Ein besonderer Fall der Umpositionierung ist
die Auslagerung von Funktionalität in die Datenbank. Auch dies wird anhand von Beispielen
diskutiert.
• Austausch von Transformationen
Sollten gleiche Anforderungen unter Nutzung verschiedener Transformationen umsetzbar
sein, muss überprüft werden, welche Transformation am besten geeignet ist sowohl die
Aufgabe zu lösen als auch die vereinbarten Ziele in möglichst großem Maß zu erfüllen.
• Zusammenfassen oder Aufteilen (Merge and Split) Von (Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005) wird der „Merge and Split“
Ansatz eingeführt. Bei dem Optimierungsansatz Zusammenführen (merge) werden
Operationen, die ursprünglich auf mehrere Transformationen verteilt waren, in einer
Transformation zusammengefasst. Im Gegensatz dazu werden bei Aufteilen (split) die in einer
Transformation durchzuführenden Operationen auf mehrere Transformationen verteilt.
• Modularisierung
Mapplets bieten die Möglichkeit Transformationen zu Modulen zusammenzufassen, die
ETL-Design Optimierung Seite 31 von 108
anschließend über Ein- und Ausgabeschnittstellen genutzt werden. Als Module verbergen
Mapplets Implementierungsdetails. Außerdem sind sie wiederverwendbar.
• Parametrisierung
Parameter können in Transformationen dazu eingesetzt werden, Bedingungen dynamisch
festzulegen. Dies wirkt sich meist auf die Universalität und damit auf die
Wiederverwendbarkeit aus.
• Sortierung von Daten Ob und wenn ja welchen Einfluss eine Vorsortierung von Daten hat, wird in einem Beispiel
untersucht.
4.1 Vorgehensweise Nachfolgend wird zuerst ein Beispielszenario vorgestellt. Anhand dieses Szenarios werden
anschließend verschiedene Beispiele und Varianten davon analysiert.
Das Vorgehen dabei folgt jedes Mal dem gleichen Schema.
1) Optimierungsansatz Zuerst wird der zu untersuchende Optimierungsansatz vorgestellt. Dabei werden, wenn diese
schon absehbar sind, Potentiale dieser Ansätze aufgezeigt.
2) Vorstellung verwendeter Transformationen Wo es zum Verständnis notwendig ist, werden die eingesetzten Transformationen in ihrer
Funktionsweise vorgestellt.
3) Ausgangsbeispiel Dann wird eine Ausgangsituation in Form eines konkreten Mappings geschaffen. Anhand dieser
Ausgangssituation wird ein bestimmter Optimierungsaspekt untersucht. Hierbei werden die
fachliche Intension und die daraus resultierenden Rahmenbedingungen des jeweiligen Beispiels
dargestellt.
a) Erfassung der Maße Für jedes Ausgangsmapping werden zuerst die quantitativen Maße erhoben. Anschließend
wird die Ausprägung der qualitativen Maße festgestellt. Aufgrund ihres subjektiven
Charakters wird jede Ausprägung begründet. Nach der Erhebung der Maße im
Ausgangsbeispiel, werden diese zusammengefasst in einer Übersichtstabelle dargestellt.
b) Designziele des Ausgangsbeispiels Für das Ausgangsbeispiel werden Die Designziele nicht ausführlich diskutiert. Es wird nur auf
besondere Auffälligkeiten hingewiesen. Das Ausgangsbeispiel dient mit den dafür erfassten
Maßen als Vergleichsreferenz für weitere Varianten desselben Beispiels.
4) Voraussetzungen der Änderungen Bevor Varianten des Ausgangsbeispiels vorgestellt werden, werden eventuelle, fachliche und
technische, Voraussetzungen für die vorgesehenen Änderungen aufgezeigt.
5) Variante des Ausgangsbeispiels Die Ausgangsvariante wird zur Untersuchung des Optimierungsansatzes in einem Punkt geändert.
a) Erfassung der Maße Für die geänderte Variante werden die Maße erfasst. Dies erfolgt nach dem gleichen Vorgehen
wie im Ausgangsbeispiel.
b) Analyse der Designziele
ETL-Design Optimierung Seite 32 von 108
Auf Grundlage der Maße werden die Auswirkungen der vorgenommen Änderungen für jedes
Ziel diskutiert und bewertet. Als Vergleich dient hierbei die Ausgangsvariante. Jede Analyse
wird mit einer Übersichtstabelle und einer Zusammenfassung abgeschlossen.
6) Untersuchung weiterer Varianten Gegebenenfalls werden in weiteren Varianten die Auswirkungen anderer Änderungen untersucht.
Das Vorgehen entspricht dabei dem der ersten Variante. Jede weitere Variante geht wieder vom
Ausgangsbeispiel aus und zieht dieses zur Bewertung der Ziele heran.
7) Zusammenfassung des Optimierungsansatzes Nach der Vorstellung und Analyse verschiedener Varianten, werden die in den Untersuchungen
gewonnenen Erkenntnisse über den Optimierungsansatz zusammengefasst.
Dieses einheitliche Untersuchungsschema dient für die folgenden Analysen als Schablone. Durch das
systematische Vorgehen wird die Vergleichbarkeit einzelner Analysen gewährleistet. Darüber hinaus
ermöglicht es jederzeit das Vorgehen nachzuvollziehen.
4.2 Beispielszenario Die Untersuchungen der Ziele und der auf sie wirkenden Maße finden anhand von verschiedenen
Beispielen statt.
Alle Beispiele basieren auf der Datenbank des Open Source Programms für Projektmanagement
„dotProject“. Da die Datenbank sehr komplex ist, wird im Rahmen dieser Arbeit nur ein kleiner
Ausschnitt der fachlich besonders interessanten Tabellen und ihrer jeweiligen Attribute verwendet.
Durch diese Vereinfachung wird gewährleistet, dass die Beispiele nachvollziehbar bleiben.
Vor Beginn der Untersuchungen dieser Arbeit wurde die vollständige Datenbank der Anwendung von
MySQL nach Oracle XE 10g migriert. Dies ist unter anderem dadurch begründet, dass für
Verbindungen zu Oracle in Informatica PowerCenter 8 native Treiber zur Verfügung stehen, während
auf MySQL Datenbanken mittels ODBC zugegriffen werden muss. Hierin besteht das Risiko, dass der
ODBC Treiber sich auf Untersuchungen auswirkt und Ergebnisse verfälscht. Alle nachfolgenden
Untersuchungen finden daher auf einer Oracle XE 10g Datenbank statt.
Um die Untersuchungen dieser Arbeit zu unterstützen, wurden sowohl die Schemata einiger Tabellen
als auch die darin enthaltenen Daten manipuliert.
4.2.1 Datenquellen In dotProject werden Projekte, Aufgaben und Aufgabenlogs in separaten Tabellen vorgehalten.
Hierbei beinhalten sie unterschiedlichen Informationsgehalt und stehen zueinander durch
Fremdschlüssel in Beziehung. Bei der Migration auf Oracle wurden die Fremdschlüsselbeziehungen
entfernt. Dies war notwendig, da Oracle für Schlüsselattribute automatisch einen Index erzeugt. Zur
Untersuchung der Auswirkungen eines Indexes musste aber die Möglichkeit geschaffen werden,
diesen zu aktivieren, bzw. zu deaktivieren. Im Rahmen dieser Arbeit kann aber davon ausgegangen
werden, dass sich die Quellen in einem konsistenten Zustand befinden.
4.2.1.1 Aufgabenlogbuch Die Zeiterfassung in dotProject geschieht auf Basis des Aufgabenlogbuchs, dem die Tabelle
TASK_LOG zugrunde liegt. In dieser Tabelle werden geleistete Stunden sowie ein zugehöriger
Kostenfaktor pro Eintrag erfasst. Ein Tupel aus dem Aufgabenlogbuch besitzt jedoch keinen Namen,
ETL-Design Optimierung Seite 33 von 108
sondern wird über eine Fremdschlüsselbeziehung mit dem Attribut TASK_LOG_TASK einer Aufgabe
zugeordnet.
CREATE TABLE task_log_new_1 (
task_log_id INTEGER(11) NOT NULL,
task_log_task INTEGER(11) NOT NULL,
task_log_hours FLOAT NOT NULL,
task_log_costcode VARCHAR(8) NOT NULL,
);
4.2.1.2 Aufgaben Aufgaben werden von der Anwendung in der Tabelle TASKS gespeichert. Eine Aufgabe besitzt eine
ID (TASK_ID), einen Namen (TASK_NAME) und gehört immer zu einem Projekt
(TASK_PROJECT).
CREATE TABLE tasks (
task_id INTEGER(10) NOT NULL,
task_name VARCHAR(255) NOT NULL,
task_project INTEGER(11) NOT NULL,
);
4.2.1.3 Projekte
Einzelne Aufgaben werden in Projekten zusammengefasst. Die Daten eines Projekts werden in der
Tabelle PROJECTS gespeichert. Für jedes Projekt wird die ID (PROJECT_ID) und der Name
(PROJECT_NAME) gespeichert.
CREATE TABLE projects (
project_id INTEGER(11) NOT NULL,
project_name VARCHAR(255) NOT NULL,
);
Die 1:n Beziehung zwischen den Entitäten gestaltet sich wie folgt:
Abbildung 7: Schematische Darstellung der Fremdschlüsselbeziehungen
Zu beachten ist, dass die Fremdschlüsselbeziehungen hier nur die Ausgangssituation der Datenbank
darstellen. Diese wurden aufgrund der geschilderten Indexproblematik entfernt.
ETL-Design Optimierung Seite 34 von 108
4.2.1.4 Datenmenge der Quelltabellen Für die Untersuchung einiger Maße kann die Datenmenge relevant sein. In der Ausgangssituation
waren nur sehr wenige Tupel in der dotProject Datenbank enthalten. Eine geringe Datenmenge lässt
Untersuchungen der Performance ungenau werden, da die Initialisierungsdauer des Integrationsservers
in diesem Fall größer ist als die eigentliche Verarbeitung der Daten. Daher wurden die Daten mittels
eines PL/SQL Scripts künstlich erhöht. Um die Beziehung zwischen den Entitäten zu erhalten, wurden
nur der Tabelle TASK_LOG Tupel hinzugefügt.
Die Tabellen enthalten folgende Anzahl an Tupeln:
Tabelle Anzahl Tupel Tupel * Attribute
TASK_LOG 1098106 4392424
TASKS 133 399
PROJECTS 57 114
Tabelle 4: Datenmengen im Beispielszenario
4.2.2 Zieltabellen In den Beispielen werden die vorgestellten Quelldaten verwendet, um verschiedene Transformationen
durchzuführen. Zum Teil werden zusätzliche Attribute zum Beispiel durch Berechnungen generiert, in
anderen Fällen können Attribute entfallen. Die Zielschemata unterscheiden sich entsprechend
zwischen den verschiedenen Beispielen. Aus diesem Grund werden diese jeweils in den Beispielen
vorgestellt. Grundsätzlich sind alle Ziele Tabellen in einer Oracle XE 10g Datenbank.
4.3 Positionierung von Transformationen Durch eine unterschiedliche Positionierung von Transformationen innerhalb eines Mappings kann der
Erfüllungsgrad der angestrebten Ziele positiv beeinflusst werden.
Anhand von zwei Beispielen in verschiedenen Varianten wird diese Option diskutiert.
4.3.1 Filtertransformation - Fallbeispiel 1 Sollen aus einem ETL Workflow Daten gefiltert werden, steht hierfür in Informatica PowerCenter 8
die Filtertransformation zur Verfügung. Sie funktioniert wie eine where Klausel in einem SQL
Statement, es passieren also diejenigen Daten den Filter, auf die die Filterbedingung zutrifft.
(Informatica, PowerCenter Transformation Guide, 2006, S. 216)
Filtertransformationen können unter bestimmten Voraussetzungen an verschiedenen Stellen in den
Datenfluss eingebunden werden. Neben der expliziten Filtertransformation ist auch eine Filterung im
Source Qualifier, also auf der Datenbank beim Einlesen der Datenquellen, möglich.
Soll die Filterung anhand von Charakteristika der Daten, die sich erst durch andere Transformationen
ergeben, durchgeführt werden, bleibt nur die Möglichkeit einer expliziten Filterung. Dies können
beispielsweise vorangegangene Expression-, Aggregations-, Lookup- oder Joinertransformationen
oder andere sein.
Nachfolgend werden anhand mehrerer Varianten eines Beispiels die Auswirkungen verschiedener
Filterpositionen auf die Maße und die Ziele verdeutlicht. Neben einer Untersuchung der
ETL-Design Optimierung Seite 35 von 108
Auswirkungen verschiedener Positionen einer expliziten Filtertransformation soll auch die Filterung
im Source Qualifier untersucht werden.
4.3.1.1 Fallbeispiel 1 - Positionierung eines Filters Es sollen Daten aus den Tabellen TASK_LOG und TASKS anhand der Bedingung
TASK_LOG.TASK_LOG_TASK = TASKS.TASK_ID per Joinertransformation zusammengeführt
werden und in ein Ziel geschrieben werden. Für das Beispiel sei angenommen, dass aus fachlichen
Gründen eine Filterung der Daten vorgenommen werden soll. Die Filterbedingung des
Ausgangsbeispiels wird durch TASK_LOG.TASK_LOG_HOURS > 5 definiert. Diese Bedingung
bewirkt, dass nur Tupel, in denen mehr als fünf Stunden verbucht sind, den Filter passieren.
Abbildung 8: Fallbeispiel 1 –Ausgangsbeispiel - Filtertransformation
Die Filterbedingung bestimmt die Abhängigkeit von vorausgehenden Transformationen und somit ob,
die Filtertransformation an anderer Position in den Datenfluss einfügt werden kann. In den folgenden
Varianten wird untersucht, wann unterschiedliche Positionen möglich sind und wie diese sich auf die
Maße auswirken. Aus dieser Analyse werden anschließend Schlussfolgerungen auf den jeweiligen
Zielerfüllungsgrad gezogen.
Erhebung der Maße im Ausgangsbeispiel Um eine Vergleichbarkeit der Varianten zu ermöglichen, müssen zuerst die quantitativen und
qualitativen Maße des Fallbeispiels untersucht werden.
Quantitative Maße
Datenmenge
Aus der Tabelle TASK_LOG werden 1098106 Tupel eingelesen, aus der Tabelle TASKS 133. In der
JOINER Transformation werden diese, unter der Joinbedingung TASK_LOG_TASK = TASK_ID,
zusammengeführt, so dass danach alle 1098106 in die Filtertransformation eingehen. Die
Filtertransformation passieren 350 Tupel, die danach in das Ziel geschrieben werden. 1097756 Tupel
werden verworfen, da sie der Filterbedingung widersprechen.
Anzahl der Knoten
Das Referenzbeispiel weist inklusive der Quellen und des Ziels 7 Transformationen auf.
Länge
Im Beispiel durchlaufen alle Tupel das gesamte Mapping. Die maximale Anzahl an Weiterleitungen
beträgt 4.
ETL-Design Optimierung Seite 36 von 108
Komplexität
Die Transformationen sind über 28 Kanten miteinander verbunden, was der Komplexität entspricht.
Qualitative Maße
Modularität
Im Referenzbeispiel ist keine Modularität zu erkennen. Jede Transformation führt exakt eine Aufgabe
aus und es gibt keine Zusammenfassung von Transformationen. Eine Modulbildung findet nicht statt.
Kapselung
Das vorliegende Beispiel weist keine über das Minimalmaß hinausgehende Kapselung auf. Jede
Transformation führt genau eine Operation aus, die anhand ihres Typs und Namens in der Mapping-
Übersicht erkennbar ist.
Universalität
Das Mapping ist sehr spezifisch auf den entsprechenden Anwendungsfall zugeschnitten. Die
Universalität ist also schwach ausgeprägt.
Kohäsion
Durch die fehlende Modularität ist das Mapping bezüglich der Kohäsion wenig aussagekräftig. Die
Kohäsion der einzelnen Transformationen ist aufgrund der eindeutigen Aufgabenspezifität sehr hoch.
Diese soll jedoch nicht explizit betrachtet werden, da Transformationen als das atomare Element
betrachtet werden und Kohäsion erst auf Modulebene sinnvoll analysiert werden kann. In
Ausnahmefällen ist eine Betrachtung bei Transformationen, die mehrere Funktionen in sich vereinen,
möglich und sinnvoll. In diesem Beispiel ist das jedoch nicht der Fall, weswegen die Kohäsion nicht
erhoben wird.
Kopplung
Das Fallbeispiel weist eine starke Kopplung zwischen den Transformationen auf. Intermodulare
Kopplung ist aufgrund der fehlenden Module nicht zu erkennen.
Übersicht über die Maße Die zwei folgenden Tabellen liefern eine Übersicht über die soeben erhobenen Maße. Hierbei werden
zuerst die quantitativen, danach die qualitativen Maße dargestellt.
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Eingehende Tupel
350
Tupel nach Filter
7 4 28
Tabelle 5: Fallbeispiel 1 - Ausgangsbeispiel - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
ETL-Design Optimierung Seite 37 von 108
Ausprägung n.v. n.v. - n/a +
Tabelle 6: Fallbeispiel 1 - Ausgangsbeispiel - Qualitative Maße
Untersuchung der Ziele Das vorliegende Ausgangsbeispiel soll für die nächsten Varianten als Referenz dienen. Die
Zielerfüllung wird relativ durch den Vergleich der verschiedenen Varianten bewertet. Es werden also
Verbesserungen beziehungsweise Verschlechterungen aufgezeigt. Entsprechend seiner Funktion als
Referenz wird dieses Beispiel neutral bewertet.
Da Verletzung der Korrektheit alle weiteren Betrachtungen obsolet macht, wird diese immer als erstes
verifiziert. Innerhalb der Übersichtstabellen wird sie nicht explizit dargestellt, da sie im Regelfall
unverletzt sein sollte. Im gegenteiligen Fall wird keine Übersicht über die Ziele dargestellt, sondern
auf die Verletzung der Korrektheit verwiesen.
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausprägung 0 0 0 0
Tabelle 7: Fallbeispiel 1 - Ausgangsbeispiel - Übersicht über die Ziele
4.3.1.2 Voraussetzungen für eine Umpositionierung der Filtertransformation Die Positionsänderung soll zu einem äquivalenten Ergebnis in den Zieltabellen führen, was Bedingung
für das definierte Ziel Korrektheit ist. Dies ist nur unter bestimmten Voraussetzungen gewährleistet.
Drei Fälle beeinflussen hier die Auswahlmöglichkeiten.
1. Die Filterbedingung ist von einer vorausgehenden Transformation abhängig:
• Wenn das in der Filterbedingung zu prüfende Attribut erst in einer Transformation „generiert“
wird, kann die Filtertransformation nicht vor dieser Transformation positioniert werden.
2. Die Filterbedingung ist von der vorherigen Transformation unabhängig:
• Die Filtertransformation kann mit ihrem Vorgänger die Position tauschen und somit früher
ausgeführt werden.
3. Die Filterbedingung ist von keiner Transformation des Mappings abhängig:
• Eine Filterung im Source Qualifier ist möglich. Hierbei werden die Zeilen beim Lesen aus der
Quelle verworfen und gelangen somit gar nicht in das Mapping. Diese Möglichkeit existiert
jedoch nur für relationale Quellen.
ETL-Design Optimierung Seite 38 von 108
4.3.1.3 Variante 1 Als Beispiel für die erste Variation werden wieder beide Tabellen mittels Joinertransformation
zusammengeführt. Die Filtertransformation selektiert alle Tupel, bei denen das Attribut
TASK_LOG.TASK_LOG_HOURS mehr als fünf Stunden geleistete Arbeit aufweist, und lässt diese
den Filter passieren. Die Bedingung ist also die gleiche wie im Ausgangsbeispiel und die
Filtertransformation von der vorhergehenden Joinertransformation unabhängig.
Daraus folgt, dass ein Positionswechsel möglich ist.
In der folgenden Abbildung wird das geänderte Mapping, in dem die Filtertransformation vor der
Joinertransformation stattfindet, dargestellt.
Abbildung 9: Fallbeispiel 1 - Variante 1 - Nach vorne verschobener Filter
Auswirkungen auf die Maße Nachfolgend wird untersucht, inwiefern sich die Maße durch die Manipulationen in der neuen
Variante verändert haben.
Quantitative Maße
Datenmenge
Wie im Ausgangsbeispiel gehen 1098106 Tupel aus TASK_LOG und 133 Tupel aus TASKS in das
Mapping ein. Erneut passieren 350 Tupel den Filter, während 1097756 verworfen werden. Dies
geschieht in der Variante 1 früher, wodurch in der Joinertransformation nur noch 350 Tupel aus
TASK_LOG und 133 aus TASKS also insgesamt 483 Tupel verarbeitet werden.
Anzahl der Knoten
Diese Messgröße wird durch die Veränderungen nicht beeinflusst und beträgt somit weiterhin 7.
Länge
Die Länge bleibt gleich wie im Ausgangsbeispiel, sie beträgt 4.
Komplexität
Die Komplexität wird durch die frühe Filterung leicht reduziert und beträgt jetzt 25. Dies entspricht
einer Reduktion um 3 Kanten.
ETL-Design Optimierung Seite 39 von 108
Qualitative Maße Von den qualitativen Maßen ändert sich nur die Kopplung. Da die Filterung nur noch unter
Einbeziehung der Attribute aus TASK_LOG stattfindet, verringert sich die Kopplung der
Filtertransformation. Da weiterhin alle Attribute jeweils über ein- und ausgehende Ports verbunden
sind, wird die Kopplung mit durchschnittlich (0) bewertet.
Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106 Eingehende
Tupel
350
Tupel nach Filter
7 4 25
Tabelle 8: Fallbeispiel 1 - Variante 1 - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. n.v. - n/a 0
Tabelle 9: Fallbeispiel 1 - Variante 1 - Qualitative Maße
Auswirkungen der Alternative auf den Erfüllungsgrad der Ziele Durch die Veränderungen an dem Ausgangsmapping haben sich einige Maße geändert. Dies wirkt
sich auf die Ziele aus, was nachfolgend erläutert und diskutiert werden soll.
Korrektheit
Variante eins und das Ausgangsbeispiel sind bezüglich der Daten die in das Ziel geschrieben werden
äquivalent. Das heißt, das Mapping bleibt durch die neue Position der Filtertransformation fachlich
korrekt. Dies macht eine Betrachtung der weiteren Ziele erforderlich.
Wartbarkeit
Die Wartbarkeit des Mappings wird durch die neue Position des Filters gegenüber dem
Ausgangsmapping nicht wesentlich beeinflusst. Die Verringerung von Komplexität und Kopplung ist
so gering, dass dies die Wartbarkeit nicht verbessert.
Wiederverwendbarkeit
Die Wiederverwendbarkeit wird nicht beeinflusst.
Performance
Durch die frühere Reduktion der Datenmenge wird die Effizienz gesteigert beziehungsweise die
Durchlaufzeit verringert. Da die Joinertransformation sehr aufwendig ist, kann diese Variante deutlich
von der reduzierten Zahl an Tupeln, die in sie eingehen, profitieren.
ETL-Design Optimierung Seite 40 von 108
Zuverlässigkeit
Die Zuverlässigkeit ist im Wesentlichen unbeeinflusst, durch die frühere Filterung werden eventuell
korrupte Daten früher bearbeitet und führen damit zu einem früheren Erkennen von Fehlern.
Außerdem gehen durch die vorgelagerte Filterung weniger Daten in die Joinertransformation ein,
wodurch auch hier die Fehleranfälligkeit reduziert wird. Insgesamt ist die Verbesserung der
Zuverlässigkeit gering.
Übersicht über die Ziele:
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 0 0 + +
Tabelle 10: Fallbeispiel 1 - Variante 1 - Zielerfüllung
4.3.1.4 Variante 2 In der zweiten Variante des Beispiels wird wiederum von derselben Anforderung wie in den beiden
vorangegangen Beispielen ausgegangen. Es werden also alle Zeilen, für die weniger als fünf Stunden
Arbeitszeit verbucht sind, ausgefiltert. Die Filterbedingung ist nur von einer der beiden Quellen
abhängig. Da keine weitere Transformation vor der Filterung stattfindet, kann diese im Source
Qualifier durchgeführt werden.
Abbildung 10: Fallbeispiel 1 - Variante 2 - Filterung im Source Qualifier
Statt in einer expliziten Filtertransformation wird in Variante 2 in der Source Qualifier
Transformation, also beim Einlesen der Quelltabelle TASK_LOG gefiltert. Dies geschieht über die
Definition der Filterbedingung in den Optionen des Source Qualifiers. Hierfür nutzt der Source
Qualifier beim Einlesen der Daten aus der Quelltabelle eine where Klausel. Im vorliegenden Beispiel
lautet das dem Source Qualifier zugrunde liegende SQL Statement dementsprechend:
ETL-Design Optimierung Seite 41 von 108
SELECT TASK_LOG.TASK_LOG_ID, TASK_LOG.TASK_LOG_TASK,
TASK_LOG.TASK_LOG_HOURS, TASK_LOG.TASK_LOG_COSTCODE FROM TASK_LOG
WHERE TASK_LOG.TASK_LOG_HOURS > 5
Durch die Verlagerung der Filterung weist das Mapping in dieser Variante bei gleicher Funktionalität
eine Transformation weniger auf. Dass eine Filterung stattfindet, ist nicht mehr direkt erkennbar. Die
Auswirkung auf Maße und Ziele werden nachfolgend dargestellt und diskutiert.
Erhebung der Maße in Variante 2
Quantitative Maße
Datenmenge
In der Quelltabelle TASK_LOG liegen wie in den bereits dargestellten Beispielen 1098106 Zeilen
beziehungsweise Tupel vor. In TASKS sind es wieder 133.
Die Datenmenge wird in der Variante insofern beeinflusst, dass durch die Filterung im Source
Qualifier nur die Tupel eingelesen werden, die den Filter passieren. Dies betrifft wie in den vorherigen
Varianten 350 Tupel. Die anderen 1097756 werden bereits beim Lesen der Quelle durch die WHERE
Klausel verworfen. Es gelangen also nur sehr wenige Tupel überhaupt in das Mapping.
Anzahl der Knoten
Da der Source Qualifier sowohl die Aufgabe des Einlesens als auch die Filterung der Quellen
bearbeitet kann, die Filtertransformation wegfallen. Hierdurch weist Variante 2 eine Transformation
weniger als das Ausgangsbeispiel auf, besteht also aus 6 Knoten.
Länge
Durch den Wegfall eines Knotens wurde die Länge auf 3 reduziert.
Komplexität
Die Komplexität sinkt um 7 Kanten und beträgt nun 21. Auch dies ist auf die eingesparte
Transformation zurückzuführen.
Qualitative Maße
Modularität
Es ist keine ausgeprägte Modularität in der Variante zu erkennen. Der um Filterfunktionen erweiterte
Source Qualifier kann nicht als Modul betrachtet werden, da dieser nicht außerhalb seines Kontextes
verwendet werden kann, sondern immer in Bezug auf die zugehörige Quelle steht.
Kapselung
In Variante 2 ist die Kapselung höher als im Ausgangsbeispiel und als in Variante 1. Ursache ist die
Verlagerung der Filterfunktion in einen der Source Qualifier, der diese Funktionalität nun zusätzlich
zu seiner ursprünglichen Aufgabe, dem Einlesen der Daten, übernimmt. Da diese zusätzliche
Funktionalität von außen nicht erkennbar ist, kann hier von Kapselung gesprochen werden.
Universalität
War die Universalität in den vorherigen Beispielen schon gering, wurde sie durch die Verlegung des
Filters in den Source Qualifier noch weiter reduziert
ETL-Design Optimierung Seite 42 von 108
Dies ist darauf zurückzuführen, dass eine Filterung von Daten im Source Qualifier nur bei relationalen
Quellen möglich ist. Wird die Filterung dagegen erst später in einer expliziten Filtertransformation
durchgeführt, können auch andere Quellen wie zum Beispiel Textdateien verarbeitet werden.
Kohäsion
Die im Source Qualifier durchgeführten Operationen „Einlesen der Quellen“ und „Filtern der Daten“
sind nur durch eine mäßige Kohäsion verbunden. Wie bereits erwähnt, ist die Kohäsion innerhalb von
Transformationen im Gegensatz zur Modulebene nur schlecht zu erfassen. Die Kohäsion dieser
Variante wird in Bezug auf die Mehrfachfunktionalität des Source Qualifiers als schwach gewertet.
Kopplung
Die Kopplung zwischen den Transformationen ist unverändert. Alle Ports sind jeweils einmal
verbunden. Eine Verringerung der Kopplung durch Umpositionierung ist nicht möglich, daher wird für
die Kopplung 0 festgelegt. Intermodulare Kopplung kommt nach wie vor nicht vor.
Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Tupel in Quelle
vorhanden
350
Tupel werden
eingelesen
6 3 21
Tabelle 11: Fallbeispiel 1 – Variante 2 - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. + -- - 0
Tabelle 12: Fallbeispiel 1 – Variante 2 - Qualitative Maße
Auswirkungen auf die Ziele in Variante 2
Korrektheit:
Bei der Verlegung der Filterfunktionalität in den Source Qualifier bleibt die Korrektheit erhalten.
Wartbarkeit:
Die Wartbarkeit wird durch die Kapselung des Filters verschlechtert, da dieser nicht mehr auf den
ersten Blick zu erkennen ist.
Wiederverwendbarkeit:
Da die Filterung im Source Qualifier nur für relationale Quellen möglich ist, ist die Universalität in
dieser Variante schwächer ausgeprägt. Dies verursacht eine geringere Wiederverwendbarkeit.
ETL-Design Optimierung Seite 43 von 108
Performance:
Die Änderungen wirken sich positiv auf die Performance aus, was darauf zurückzuführen ist, dass
wesentlich weniger Tupel in die Verarbeitung innerhalb des Mappings eingehen. Jedoch sind diese
Verbesserungen relativ gering. Im Vergleich ist die Filterung im Source Qualifier trotzdem die
Variante mit der besten Performance. Dieser Vorsprung kann sich noch einmal drastisch erhöhen,
wenn auf der zugrunde liegenden Datenbank ein Index definiert ist, der von einem im Source Qualifier
platzierten Filter genutzt werden kann. Da dies jedoch außerhalb der Modellierungsmöglichkeiten
liegt, soll diese Option hier nicht weiter betrachtet werden.
Zuverlässigkeit
Es kann davon ausgegangen werden, dass sich die geringere Anzahl von zu verarbeitenden Tupel
positiv auf die Zuverlässigkeit auswirkt. Gleichzeitig führt aber die Abhängigkeit von relationalen
Quellen zu einer geringeren Zuverlässigkeit, da die Filterung nicht mehr funktioniert, wenn andere
Quellen eingesetzt werden sollen. Da die Abhängigkeit von relationalen Quellen erst bei
Wiederverwendung negative Auswirkungen hat, wird die Zuverlässigkeit hier gegenüber dem
Ausgangsbeispiel als unverändert bewertet.
Übersicht über die Ziele:
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 0 0 + +
Variante 2 - - ++ 0
Tabelle 13: Übersicht über die Zielerfüllung der Varianten
4.3.1.5 Zusammenfassung Filterpositionierung. Zusammenfassend gilt, dass eine Variation der Position eines Filters sich vor allem auf Performance
als auch auf Wartbarkeit und Wiederverwendbarkeit auswirkt. Die Filterposition kann nicht frei
gewählt werden, da bei einer falschen Anwendung die Korrektheit verletzt wird.
Anhand der Beispiele wird deutlich, dass der Erfüllungsgrad nicht für alle Ziele gleichzeitig maximiert
werden kann. So können durch die frühere Positionierung des Filters in der ersten Variation des
Ausgangsbeispiels die Zuverlässigkeit, vor allem aber die Performance verbessert werden. Die
anderen Ziele bleiben dabei unbeeinflusst. Die Integration der Filterung in den Source Qualifier in der
zweiten Variation maximiert zwar die Performance, führt aber gleichzeitig dazu, dass sich die
Wartbarkeit sowie die Wiederverwendbarkeit verschlechtern. Da die Verbesserung bei der
Performance bei der Filterung im Source Qualifier recht gering ausfällt, wird die Verschlechterung bei
den anderen Zielen in den meisten Fällen schwerer ins Gewicht fallen. Es ist anzumerken, dass bei
einer Filterung im Source Qualifier die Quelldatenbank das performancebestimmende Element ist,
also die Leistungsfähigkeit des eingesetzten Datenbank Management Systems und der Hardware, auf
der dieses läuft, sich maßgeblich auswirken.
ETL-Design Optimierung Seite 44 von 108
Ein guter Kompromiss zwischen den verschiedenen Zielen ist, eine Filtertransformation so früh wie
möglich in den Datenstrom einzubinden, diese aber nicht in den Source Qualifier auszulagern, sondern
als explizite Transformation beizubehalten.
ETL-Design Optimierung Seite 45 von 108
4.3.2 Joinertransformation - Fallbeispiel 2 Nachdem die Positionierung von Filtertransformationen untersucht wurde, wird nun anhand einer
Joinertransformation überprüft, wie sich dort eine Umpositionierung auswirkt. Zuerst wird jedoch
zum Verständnis die Funktionsweise der Joinertransformation in Informatica PowerCenter 8
dargestellt.
4.3.2.1 Joinertransformationen in Informatica PowerCenter 8 Die Joinertransformation ist eine aktive, verbundene Transformation. Mit ihr können zwei Quellen
zusammengeführt werden, wenn diese in mindestens einem Attribut jeweils übereinstimmende Werte
aufweisen.
Master- und Detailpipeline Informatica unterscheidet bei Joinertransformationen zwischen der Master- und der Detailpipeline. Die
Masterpipeline endet nach der Joinertransformation, während die Detailpipeline bis zum Ziel
weiterläuft. Abbildung 11 stellt dies schematisch dar.
Abbildung 11: Master- und Detailpipeline bei einer Joinertransformation (Informatica, PowerCenter Transformation
Guide, 2006, S. 266)
Aus Performancegründen sollte immer die Quelle mit weniger Zeilen als Master definiert werden.
Dies ist darin begründet, dass jede Zeile der Masterquelle gegen die Zielquelle verglichen wird.
Hierfür wird die Masterquelle vollständig im Speicher vorgehalten. Bei sehr großen Quellen kann der
Speicher unzureichend sein, so dass auf Festplatten ausgelagert werden muss. Dies hat sehr große,
negative Auswirkungen auf die Performance.
Bei der Modellierung im Informatica PowerCenter Designer wird immer die Quelle als Master
gewählt, die als zweite in die Joinertransformation gezogen wird. Die Wahl von Master- und
Detailpipeline sonst keine Wechselwirkung mit anderen Zielen hat, wird sie in allen folgenden
Beispielen beachtet.
ETL-Design Optimierung Seite 46 von 108
Jointypen Ein Join kann auf verschiedene Weise durchgeführt werden. Die Unterschiede beziehen sich dabei
darauf, wie mit Attributen umgegangen wird, bei denen die für die Joinoperation definierte Bedingung
nicht zutrifft. Die Bezeichnungen für die Jointypen weichen in Informatica PowerCenter 8 zum Teil
von den im SQL Standard typischen Bezeichnungen ab. Es gibt vier Typen von Joins.
1. Normal Join: Der Normal Join in Informatica entspricht dem im SQL Standard. Es werden nur
diejenigen Tupel in die neue Tabelle aufgenommen, für die die Joinbedingung zutrifft. Andere
Tupel werden verworfen.
2. Detail outer Join: Entspricht einem Left- beziehungsweise Right outer Join in SQL. Es werden
alle Tupel der Master Quelle behalten, auch wenn die Joinbedingung für ein Tupel nicht
zutrifft. Die davon betroffenen Tupel aus der Detail Quelle werden verworfen
3. Master outer Join: Verhält sich wie ein Detail Outer Join, mit dem Unterschied, dass alle
Tupel der Detail Quelle auch bei nicht Zutreffen der Joinbedingung behalten werden.
Entsprechend werden Tupel der Master Quelle verworfen, wenn für das Tupel die
Joinbedingung nicht erfüllt ist.
4. Full outer Join: Entspricht wiederum dem SQL Standard. Es werden alle Tupel aus beiden
Quellen übernommen, unabhängig von der Erfüllung der Joinbedingung.
Für Joinertransformationen gilt unabhängig von ihrem Typ, dass immer alle Zeilen der Quellen
verarbeitet werden und entsprechend die Joinbedingung für jedes Tupel geprüft wird. Sollte die
Joinbedingung auf mehr als ein Tupel zutreffen, wird jedes dieser Tupel übernommen.
4.3.2.2 Fallbeispiel 2 – Positionierung von Joinertransformationen Zwei Fälle wurden indirekt schon durch die vorherigen Betrachtungen zu Filtertransformationen
beleuchtet; eine Joinertransformation vor und nach einem Filter.
Aus den Betrachtungen zur Filtertransformation lässt sich direkt herleiten, dass, falls im Datenfluss
eines Mappings die Datenmenge reduziert wird, die Joinertransformation erst danach durchgeführt
werden sollte. Hierfür muss im Einzelfall anhand der Join Bedingung geprüft werden, ob dies fachlich
möglich ist.
Wie schon für Filtertransformationen gibt es auch für Joiner die Möglichkeit, diese in den Source
Qualifier zu integrieren. Diese Möglichkeit soll nun auf ihre Auswirkungen untersucht werden.
ETL-Design Optimierung Seite 47 von 108
Beispielszenario Als Ausgangsbeispiel soll dasselbe Mapping wie das in den Betrachtungen zu Filtertransformationen
dargestellte verwendet werden. Da dieses bereits ausführlich beschrieben wurde, sei an dieser Stelle
darauf verwiesen (4.3.1.1) und hier nur noch einmal der Überblick eingefügt.
Abbildung 12: Fallbeispiel 2 – Ausgangsbeispiel – Expliziter Join
4.3.2.3 Voraussetzungen für das Joinen im Source Qualifier
Sollen Quellen statt in einer Joinertransformation bereits im Source Qualifier zusammengeführt
werden, müssen drei Voraussetzungen erfüllt sein:
1. Die Quellen müssen relational sein, es kommen also nur Datenbanktabellen in Frage.
2. Die zu verbindenden Tabellen müssen vom selben Datenbankserver stammen, also über die
selbe Verbindung angesprochen werden.
3. Die in die Joinbedingung eingehenden Attribute müssen bereits in den Datenquellen
vorhanden sein. Werden Attribute erst in Transformationen generiert, können diese vorher
nicht in eine Bedingung einfließen.
Für die folgende Variante sind alle Bedingungen erfüllt.
Standardmäßig werden die Tabellen anhand einer Beziehung zwischen gleichbenannten Attributen, die
in einer Primary Key <-> Foreign Key Beziehung stehen, verknüpft. Besteht eine solche Beziehung in
den Quelltabellen nicht, muss eine selbstdefinierte Verknüpfungsbedingung eingetragen werden. Dies
erfolgt über Eigenschaften der Source Qualifier Transformation. Hier werden äquivalent zu einer
WHERE Klausel die auf Gleichheit zu prüfenden Spalten definiert.
ETL-Design Optimierung Seite 48 von 108
4.3.2.4 Variante 1 Ausgehend von dem bekannten Mapping werden die beiden Source Qualifier sowie die
Joinertransformation entfernt und durch einen Source Qualifier, der eine benutzerdefinierte Join
Bedingung (TASK_LOG_TASK = TASK_ID) enthält, ersetzt. Das Mapping sieht nach den
Veränderungen folgendermaßen aus:
Abbildung 13: Fallbeispiel 2 – Variante 1 – Joinen im Source Qualifier
Quantitative Maße
Datenmenge
In der Quelltabelle TASK_LOG liegen 1098106 und in TASKS 133 Tupel vor. Alle Tupel werden
eingelesen und im Source Qualifier durch Join zusammengeführt.
Anzahl der Knoten
Da keine explizite Joinertransformation und nur noch ein Source Qualifier benötigt werden, sinkt die
Anzahl der Knoten von 7 auf 5.
Länge
Die Länge reduziert sich von 4 auf 3 Weiterleitungen.
Komplexität
In der Variante reduziert sich die Komplexität von 28 auf 21 Kanten.
Qualitative Maße
Modularität
Da die Integration des Joins in den Source Qualifier nicht als Modulbildung angesehen wird, kann im
vorliegenden Beispiel keine solche beobachtet werden.
Kapselung
Durch die Integration von Funktionalität im Source Qualifier ist die Kapselung in der Variante leicht
erhöht.
ETL-Design Optimierung Seite 49 von 108
Universalität
Grundsätzlich müssen Quellen, die in eine Joinoperation im Source Qualifier einbezogen werden,
relational sein und vom selben Datenbankserver stammen. Ein Join über heterogene Quellen ist im
Source Qualifier nicht möglich, sondern muss mittels einer expliziten Joinertransformation
durchgeführt werden. Dementsprechend wirkt sich, ähnlich wie schon bei der Filterung, auch das
Joinen im Source Qualifier negativ auf die Universalität aus.
Kohäsion
Die Source Qualifier Transformation integriert zwei Funktionen, das Auslesen der Quellen und das
Verbinden der enthaltenen Daten mittels Join. Die Kohäsion zwischen diesen Funktionen ist nur
schwach ausgeprägt.
Kopplung
Jeder Port ist jeweils über eine Kante mit einem anderen Port verbunden. Eine Reduzierung zum
Beispiel durch Umpositionierung ist nicht möglich, daher wird die Kopplung mit 0 erhoben.
Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Tupel werden
eingelesen und
verarbeitet.
350 Tupel
verbleiben nach
dem Filter
5 3 21
Tabelle 14: Fallbeispiel 2 - Variante 1 - Quantiative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. + -- - 0
Tabelle 15: Fallbeispiel 2 - Variante 1 - Qualitative Maße
Auswirkungen auf die Ziele in Variante 1
Korrektheit
Die Korrektheit bleibt erhalten, die Veränderungen sind also zulässig.
Wartbarkeit
Wie in den vorangegangenen Beispielen verschlechtert sich die Wartbarkeit durch Kapselung bei
gleichzeitig geringer Kohäsion, da hierdurch das Mapping intransparenter wird. Dieser negative
ETL-Design Optimierung Seite 50 von 108
Einfluss wirkt sich geringer auf die Wartbarkeit aus, als der positive Einfluss der reduzierten
quantitativen Maße. Insgesamt wird die Variante daher bezüglich ihrer Wartbarkeit schlechter
bewertet.
Wiederverwendbarkeit
Da sich die Universalität verringert, verschlechtert sich auch die Wiederverwendbarkeit. Das Mapping
in der veränderten Form setzt relationale Quellen voraus. Der Zugriff auf beide Quellen muss über
eine Verbindung zu einem Datenbankserver stattfinden. Das Mapping in Variante 1 kann
dementsprechend nicht für verteilte Quellen eingesetzt werden.
Performance
Die Veränderungen wirken sich sehr positiv auf die Performance aus. Dies ist darauf zurückzuführen,
dass eine im Source Qualifier implementierte Joinoperation auf der Quelldatenbank durchgeführt wird,
die häufig bessere Performance bietet. Die größte Verbesserung ist zu erzielen, wenn auf der
Quelldatenbank ein Index für die in die Joinbedingung eingehenden Attribute definiert ist. Wenn dies
nicht der Fall ist, fällt die Verbesserung geringer aus. Hieraus geht hervor, dass die Performance für
die jeweilige Infrastruktur zu bewerten ist.
Zuverlässigkeit
Grundsätzlich ist das Ziel Zuverlässigkeit unbeeinträchtigt. Die Fehlerbehandlung kann als
unverändert betrachtet werden, da Fehler, die auf der Datenbank auftreten, ebenso wie Fehler in
expliziten Transformationen in den Logdateien des Workflow Monitors ausgegeben werden. Fehler
werden allerdings frühzeitiger erkannt. Die Auslagerung auf die Datenbank verschiebt
Zuverlässigkeitsanforderungen auf die zugrunde liegenden Systeme. Hierdurch kann sie je nach
eingesetzter Datenbank schwanken. Es wird jedoch davon ausgegangen, das alle Datenbank
Management Systeme bezüglich ihrer Funktionsimplementierung hinreichend zuverlässig sind. Das
Designziel Zuverlässigkeit wird daher als unverändert bewertet.
Übersicht über die Ziele bei der Positionierung von Joinertransformationen:
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 - - + 0
Tabelle 16: Fallbeispiel 2 – Vergleich der Zielerfüllung
4.3.2.5 Zusammenfassung Positionierung Joinertransformationen
Join- Operationen können auf verschiedene Weise in den Datenfluss integriert werden. Bereits in den
Betrachtungen zur Filterpositionierung wurde deutlich, dass eine Joinertransformation recht aufwendig
sein kann, so dass diese, falls die Datenmenge im Verlauf eines Mappings reduziert wird, nach dieser
Reduktion eingebunden werden sollte. Hierbei muss jedoch die Korrektheit gewahrt werden, was sich
durch Prüfung der Join-Bedingung sicherstellen lässt. Wie auch Filterung, kann ein Verbund im
Source Qualifier und damit auf der Datenbank durchgeführt werden. Dies unterliegt jedoch
Einschränkungen, da die einbezogenen Quellen relational sein und vom gleichen Datenbankserver
geliefert werden müssen. Falls eine Integration in den Source Qualifier möglich ist, kann sich dies
positiv auf die Performance auswirken. Es muss jedoch die Infrastruktur, und hierbei insbesondere die
ETL-Design Optimierung Seite 51 von 108
regelmäßige Auslastung der Datenbank und Integrationsserver beachtet werden. Die
Verbesserungspotentiale in der Performance werden von Verschlechterungen bei Wartbarkeit und
Wiederverwendbarkeit begleitet. Dementsprechend müssen im Einzelfall die Machbarkeit der Ansätze
geprüft und die Gewichtung der Ziele festgelegt werden.
4.3.3 Zusammenfassung Positionierung von Transformationen Die gezeigten Beispiele bieten nur einen Einblick in die Verbesserungspotentiale, die durch
verschiedene Positionen von Transformationen erschlossen werden können. Grundsätzlich lässt sich
daraus jedoch ableiten, dass sich die deutlichsten Verbesserungen bezüglich des Ziels Performance
erreichen lassen. Einflussstärkstes Maß ist dabei die Datenmenge. Je größer die Reduktion der
Datenmenge, je früher diese innerhalb eines Mappings stattfindet und je aufwendiger die
nachfolgenden Transformationen sind, desto höher sind die erreichbaren Vorteile.
Dieser Ansatz entspricht der klassischen Anfrageoptimierung in Datenbanken. In der Literatur werden
SQL Anfragen zum Teil als Baum betrachtet. Hierbei wird die Anfrage von der Wurzel aus gelesen.
Ein Optimierungsansatz ist es, Selektionen und Projektionen möglichst weit in Richtung der Wurzel
nach unten zu verschieben. Dieses Vorgehen ist eine „algebraische oder
implementierungsunabhängige Optimierung“ (Vossen, 2000, S. 315). Diese Sichtweise lässt sich auf
ETL-Design übertragen und die Ansätze behalten, wie in den Beispielen gezeigt wurde ihre Gültigkeit.
Der Gesichtspunkt der Implementierungsunabhängigkeit stellt den Ansatz als eine besonders geeignete
Form der konzeptionellen Optimierung heraus.
Neben den in den Beispielen gezeigten Transformationen wirken sich Positionsänderungen auch bei
anderen Transformationen aus. Aktive Transformationen sind bezüglich der Positionierung
interessant, insbesondere dann wenn sie die Zeilenanzahl verringern. Beispiele hierfür sind die
gezeigten Filtertransformationen, aber auch Aggregationen, die Tupel anhand bestimmter Kriterien
zusammenfassen beziehungsweise gruppieren. Werden diese früh in den Datenfluss eingebunden,
verringern auch sie die Datenmenge, was die Verarbeitungszeit und den Ressourcenbedarf der
nachfolgenden Transformationen verringert.
Die aufgezeigte Möglichkeit, Funktionalität in den Source Qualifier zu integrieren und damit auf der
Datenbank ausführen zu lassen, kann Verbesserungen der Performance weiter steigern. In den
Beispielen wurde dies anhand von Filter- und Joinertransformationen gezeigt. Gleichzeitig führt die
damit einhergehende Kapselung jedoch in der Regel zu einer Verschlechterung von Wartbarkeit und
Wiederverwendbarkeit, so dass hier eine Entscheidung bezüglich der Zielgewichtung getroffen werden
muss.
Solange die zu verschiebenden Transformationen explizit vorhanden bleiben, sind die
Wechselwirkungen gering, das heißt, die Verbesserungen beim Ziel Performance führen nicht
gleichzeitig zur Verschlechterung anderer Ziele.
ETL-Design Optimierung Seite 52 von 108
4.4 Austauschbarkeit von Transformationen In einigen Fällen können gleiche fachliche Anforderungen an ein Mapping mit Hilfe verschiedener
Transformationen umgesetzt werden. Es besteht die Vermutung, dass die Wahl der „richtigen“
Transformation hierbei große Auswirkungen auf den Erfüllungsgrad der Ziele hat. Nachfolgend sollen
hierzu 3 Beispiele aufgestellt werden, anhand derer die Auswirkungen eines Austauschs von
Transformationen untersucht werden. Als Beispiel wird der Austausch zwischen Lookup- und
Joinertransformation gewählt.
4.4.1 Lookup vs. Join Lookup- und Joinertransformation sind häufig gegeneinander austauschbar. Sowohl mit einer Lookup-
als auch mit einer Joinertransformation können Tupel aus verschiedenen Quellen über eine Bedingung
miteinander verknüpft werden. Die Art der Verknüpfung unterscheidet sie jedoch wesentlich, so dass
im Einzelfall geprüft werden muss, ob ein Austausch aus fachlicher Sicht möglich, und in Bezug auf
die vereinbarten Ziele sinnvoll ist.
4.4.1.1 Joinertransformation Die Joinertransformation wurde bereits bei den Untersuchungen zur Positionierung vorgestellt, daher
sei an dieser Stelle darauf verwiesen. (Abschnitt 4.3.2.1)
4.4.1.2 Lookuptransformation Beim Lookup handelt es sich um eine passive Transformation, er verändert die Zeilenzahl im
Gegensatz zur Joinertransformation also nicht. Lookuptransformationen können sowohl verbunden als
auch unverbunden eingesetzt werden. Sie dienen wie Joinertransformationen dazu, anhand einer
Prüfbedingung eine Quelle durch Daten aus einer anderen zu erweitern.
Wesentlicher Unterschied zur Joinertransformation ist hierbei, dass bei Mehrfachtreffern nur ein Tupel
übernommen wird. Welches dies ist, kann in den Optionen der Transformation bestimmt werden. In
Frage kommen hierbei drei Optionen: Der ersten Wert, der letzten Wert oder der ersten Wert auf den
die Bedingung zutrifft. Alternativ kann im Fall von Mehrfachtreffern ein Fehler gemeldet werden.
Caching Informatica empfiehlt aus Performancegründen für Lookuptransformationen Caching zu nutzen.
Hierbei wird die Lookup-Quelle in den Hauptspeicher des Integrationsservers gelesen und weitere
Abfragen darauf ausgeführt (Informatica, PowerCenter Transformation Guide, 2006, S. 320). Obwohl
dies meistens sinnvoll ist, lohnt sich Caching nicht immer. Ausnahme sind Lookups, die nur sehr
wenige Anfragen durchführen. In diesen Fällen ist der Aufbau des Lookup-Caches aufwändiger als ein
ungecachter Lookup.
Als Standard wird ein statischer Cache genutzt. Dieser behält seinen Inhalt während einer Session. Er
wird bei Ausführung der Lookuptransformation mit dem Einlesen der ersten Zeile aus der Lookup-
Quelle aufgebaut.
Neben dem statischen Cache gibt es den persistenten Cache, der nach einer Session erhalten bleibt und
auf den bei einer erneuten Durchführung zurückgegriffen wird. Dieser kann nur eingesetzt werden,
wenn die Lookup-Quelltabelle statisch ist, also die darin enthaltenen Daten keinen Veränderungen
unterworfen sind.
ETL-Design Optimierung Seite 53 von 108
4.4.2 Lookup vs. Join - Fallbeispiel 3 Die Auswirkungen einer Ersetzung sollen anhand von Beispielen untersucht werden. Hierbei wird das
bereits bei den vorherigen Betrachtungen eingeführte Ausgangsbeispiel herangezogen. In diesem
werden die Quelltabellen TASKS und TASK_LOG mittels einer Joinertransformation verknüpft.
Diese Verknüpfung soll nun mit einer Lookuptransformation durchgeführt werden.
4.4.2.1 Ausgangsbeispiel Zur Erinnerung das Ausgangsbeispiel und die dafür erhobenen Maße:
Abbildung 14: Fallbeispiel 3 – Ausgangsbeispiel
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Eingehende Tupel
350
Tupel nach Filter
7 4 28
Tabelle 17: Fallbeispiel 3 - Ausgangsbeispiel - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. n.v. - n/a +
Tabelle 18: Fallbeispiel 3 - Ausgangsbeispiel - Qualitative Maße
4.4.2.2 Voraussetzungen für eine Ersetzung zwischen Lookup und Join Entsprechend dem verschiedenen Verhaltens der beiden Transformationen müssen bestimmte
Bedingungen erfüllt sein, damit sie austauschbar sind, ohne dass dabei die Korrektheit verletzt wird.
Diese Voraussetzungen hängen von der Art der Relation zwischen den beiden betroffenen Tabellen ab.
ETL-Design Optimierung Seite 54 von 108
Bei 1:1 Beziehungen ist ein Austausch immer möglich, bei 1:n muss das Attribut der n-Seite als
Grundlage dienen, das der 1-Seite per Lookup bezogen werden. Stehen die Quellen in einer n:m
Beziehung kann, aufgrund der Behandlung von Mehrfachtreffern, kein Lookup eingesetzt werden.
4.4.2.3 Variante 1 Nun wird das Ausgangsbeispiel dahingehend verändert, dass die Verknüpfung statt durch eine Joiner-
mit einer Lookuptransformation durchgeführt wird. Durch die Änderungen wird nur noch eine
Quelltabelle benötigt, die Daten aus der zweiten Quelle werden durch die Lookuptransformation
bezogen. Da die Tabellen TASKS und TASK_LOG in einer 1:n Beziehung stehen, müssen die Tupel
aus der Tabelle TASK_LOG in die Lookuptransformation eingehen, diejenigen aus TASKS werden
dann mittels Lookup bezogen.
Das Mapping sieht danach folgendermaßen aus:
Abbildung 15: Fallbeispiel 3 – Variante 1 – Lookup statt Join
Erhebung der Maße Um eine Vergleichbarkeit der Varianten zu ermöglichen, müssen zuerst die quantitativen und
qualitativen Maße des Fallbeispiels untersucht werden.
Quantitative Maße
Datenmenge
Die absolute Datenmenge ist gegenüber dem Ausgangsbeispiel unbeeinflusst. Wieder werden 1098106
Tupel aus TASK_LOG bezogen. Die 133 Tupel der Tabelle TASKS werden in dieser Variante aber
erst später, nämlich in der Lookuptransformation bezogen.
Anzahl der Knoten
Die Anzahl der Knoten wird durch die Einsparung einer Quelle und ihres Source Qualifiers von 7 auf
5 reduziert.
Länge
Die maximale Länge beträgt 3, sie wurde also um 1 reduziert.
Komplexität
Durch die Ersetzung der Joinertransformation und insbesondere die daraus resultierende Einsparung
einer Quelle samt Source Qualifier verringert sich die Komplexität von 28 auf 19.
ETL-Design Optimierung Seite 55 von 108
Qualitative Maße
Modularität
Die Modularität ist von den Änderungen nicht beeinflusst. Wie im Ausgangsbeispiel gibt es keine
Module.
Kapselung
Die im Lookup hinterlegte Quelltabelle kann als gekapselt angesehen werden, jedoch ist keine
Funktionalität gekapselt. Die Kapselung wird daher als nicht vorhanden (n.v.) bewertet.
Universalität
Während eine Joinertransformation immer zur Verknüpfung von Tabellen in Frage kommt, ist dies bei
der Lookuptransformation in bestimmten Fällen (n:m Relation) aus bereits erläuterten Gründen nicht
möglich. Bei 1:n Relationen besteht das Risiko eine falsche Reihenfolge beim Lookup zu wählen. Aus
diesen Gründen muss die Universalität dieser Variante als schwach bewertet werden.
Kohäsion
Da in keiner Transformation mehrere Funktionen durchgeführt werden und keine Modulbildung
stattfindet, ist die Betrachtung der Kohäsion obsolet.
Kopplung
Die Kopplung des Mappings wurde, analog zur Komplexität reduziert. Bei Betrachtung der
Lookuptransformation ist zu erkennen, dass seine eingehende Kopplung mit einer Kante sehr gering
ist, die ausgehende mit drei Kanten etwas höher. Die Kopplung des Source Qualifiers ist gestiegen, der
Port TASK_LOG_TASK muss über zwei Kanten mit dem Lookup und dem Filter verbunden werden.
Insgesamt wird die Kopplung als neutral (0) bewertet.
Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Eingehende Tupel
350
Tupel nach Filter
5 3 19
Tabelle 19: Fallbeispiel 3 – Variante 1 - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. n.v. - n/a 0
Tabelle 20: Fallbeispiel 3 – Variante 1 - Qualitative Maße
ETL-Design Optimierung Seite 56 von 108
Auswirkungen auf die Ziele
Korrektheit
Wenn die geschilderten Einschränkungen bezüglich der Reihenfolge beachtet werden, wird die
Korrektheit nicht verletzt. Die Änderungen sind daher zulässig.
Wartbarkeit
Durch die Verwendung einer Lookuptransformation steigt die Übersichtlichkeit. Dies ist darauf
zurückzuführen, dass bei Verwendung einer Lookuptransformation die Anzahl der Knoten und die
Komplexität verringert werden, da hierbei die Quelle des Lookups und ihr Source Qualifier nicht mehr
in das Mapping eingebunden werden müssen.
Daneben wird durch die Verwendung einer Lookuptransformation eine höhere Transparenz erreicht,
da die Art der Beziehung explizit ersichtlich ist. Ein Lookup bildet explizit eine x:1 Beziehung ab.
Eine Joinertransformation enthält im Gegensatz dazu implizit eine 1:1, 1:n oder n:m Beziehung. Um
die Korrektheit nicht zu Verletzen, muss die Richtung der Beziehung bei Wartungsarbeiten
entsprechend berücksichtig werden.
Die Wartbarkeit wird für diese Variante als leicht verbessert bewertet.
Wiederverwendbarkeit
Die Bewertung der Wiederverwendbarkeit erfordert eine fallweise Unterscheidung. Im vorliegenden
Beispiel, dient der Lookup dazu, verschiedene Quellen in großer Breite, das heißt bezüglich vieler
Attribute miteinander zu verknüpfen, wobei gleichzeitig die Relationshierarchie berücksichtigt werden
muss. Hierbei gestaltet sich die Lookuptransformation wenig wiederverwendbar.
Sollen jedoch sehr punktuell zu Tupeln weitere Daten nachgeschlagen werden, zum Beispiel Faktoren
für eine Berechnung in einer Expressiontransformation, kann man hierfür Lookuptransformationen mit
großer Universalität entwickeln. Diese bringen dann eine sehr gute Wiederverwendbarkeit mit sich.
Ein späteres Beispiel wird diese Möglichkeit zeigen (Abschnitt 0).
Für dieses Beispiel wird die Wiederverwendbarkeit als leicht verschlechtert bewertet.
Performance
Der Austausch der Joiner- durch eine Lookuptransformation führt im vorliegenden Beispiel zu einer
schlechteren Performance.
Generell ist die Performance von vielen Faktoren abhängig, was auch in diesem Beispiel deutlich
gezeigt werden kann. Unter bestimmten Bedingungen kann die Performance zugunsten der
Lookuptransformation ausfallen. Aufgrund der komplexen Zusammenhänge muss dies hier auch über
das Beispiel hinaus diskutiert werden.
• Wenn nur wenige Attribute der involvierten Tabellen in die Verknüpfung eingehen, ist
Lookup in der Regel performanter als Join. Dies ist auf die Implementierung der beiden
Transformationen in Informatica zurückzuführen (Informatica, PowerCenter Transformation
Guide, 2006, S. 304).
• Bei Verwendung eines persistenten Caches, ist das Mapping mit einer Lookuptransformation
ab der zweiten Ausführung performanter als das mit einer Joinertransformation. Dies ist damit
zu begründen, dass ein persistenter Cache nur einmal aufgebaut werden muss und danach über
Kommentar [t1]: Wf_filter_after_joiner_many_data: 1:36 Wf:lookup_statt_join_many_data: 1:57
ETL-Design Optimierung Seite 57 von 108
mehrere Sessions hinweg zur Verfügung steht. Es muss geprüft werden, ob ein persistenter
Cache die Korrektheit verletzen kann. Sobald Tabellen, wie im vorliegenden Fall, Änderungen
unterzogen werden, kann kein persistenter Cache verwendet werden, ohne die Korrektheit zu
verletzen.
• Wird für den Lookup kein Cache verwendet, aber im Datenbank Management System ist auf
der Quelltabelle des Lookups ein Index definiert, kann dieser von der Transformation genutzt
werden. In diesem Fall ist die Laufzeit bei Verwendung einer Lookuptransformation geringer
als mit einer expliziten Joinertransformation (Informatica, PowerCenter Transformation
Guide, 2006, S. 297). Im Vergleich mit einem Join im Source Qualifier kann die
Lookuptransformation im beschrieben Fall keine Performanceverbesserung schaffen, da der
Join im Source Qualifier in selbem Maße von einem Index auf der Datenbank profitiert.
Performance hängt immer sehr stark von der Systemumgebung ab. Insbesondere der verfügbare
Hauptspeicher wirkt sich deutlich aus. Daneben muss die Auslastung der Systeme in Bezug auf
Speicher und CPU beachtet werden, falls Datenbank und Integrationsservice auf verschiedenen
Servern laufen. So kann es bei hoher Auslastung des Datenbankservers vorkommen, dass Operationen,
die üblicherweise auf der Datenbank performanter ausgeführt werden, auf dem Informatica
PowerCenter Integrationsserver eine geringere Durchlaufzeit beanspruchen.
Zuverlässigkeit:
Bei Verwendung einer Lookuptransformation zum Verknüpfen der Tabellen bleibt die
Zuverlässigkeit unbeeinflusst. Es ist zu beachten, dass es bei dieser Variante eine zu beachtende
Reihenfolge entlang der relationalen Beziehungen gibt.
Übersicht über die Ziele bei Verwendung eines Lookups in Variante 1
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 + - - 0
Tabelle 21: Fallbeispiel 3 – Variante 1 - Zielerfüllung bei Lookup statt Join
4.4.3 Lookup vs. Join - Fallbeispiel 4 Im vorangegangenen Beispiel wurde deutlich, dass die Entscheidung zwischen Lookup und
Joinertransformation sehr schwierig sein kann. Es gibt allerdings auch Fälle, in denen die
Entscheidung aus fachlicher Sicht einfacher gefällt werden kann.
Hierfür wird ein anderes Fallbeispiel herangezogen.
Es sei angenommen, dass auf der Basis der geleisteten Stunden in der Tabelle TASK_LOG
gleichzeitig die Kosten erhoben werden sollen. Jedes Tupel in TASK_LOG weist ein Attribut
COSTCODE auf, das den zugrundeliegenden Stundensatz repräsentiert. Der Kostenfaktor liegt jedoch
nicht in EURO pro Stunde vor, sondern in den Ausprägungen 1 und 2. Diesen Werten müssen
Eurowerte zugewiesen werden. Über eine separate Tabelle, in der die Eurowerte hinterlegt sind, kann
dieser Bezug hergestellt werden. Dies kann entweder über eine Joiner- oder über eine
Lookuptransformation geschehen. Nach der Erhebung des Stundensatzes in EURO können durch
ETL-Design Optimierung Seite 58 von 108
Multiplikation dieses Kostenfaktors mit den geleisteten Stunden die angefallenen Kosten berechnet
werden.
Quelltabellen
Neben der bereits bekannten Tabelle TASK_LOG wurde für das Beispiel eine Tabelle
COSTCODE_EUROVALUE erstellt. In dieser wird den Kostenfaktoren 1 beziehungsweise 2 ein
Stundensatz von 75 beziehungsweise 120 Euro zugewiesen.
COSTCODE_EUROVALUE ist folgendermaßen definiert:
CREATE TABLE COSTCODE_EUROVALUE ( COSTCODE varchar2(8), EUROVALUE number(15,2) );
Zieltabelle
Die Zieltabelle des Mappings TASK_LOG_WITH_COSTS entspricht der Quelltabelle TASK_LOG
erweitert um die Attribute EUROVALUE und TASK_LOG_COST.
CREATE TABLE Task_log_with_costs ( TASK_LOG_ID number(10), TASK_LOG_TASK number(10), TASK_LOG_HOURS number(15,2), TASK_LOG_COSTCODE varchar2(8), EUROVALUE number(10,2), Task_Log_Cost number(15,2) );
Die geschilderte Anforderung kann mittels Joiner- oder Lookuptransformation umgesetzt werden.
Beide Varianten werden nachfolgend dargestellt und anschließend verglichen.
ETL-Design Optimierung Seite 59 von 108
4.4.3.1 Umsetzung mit einer Joinertransformation Die Tabellen TASK_LOG und COSTCODE_EUROVALUE werden in der Joinertransformation unter
der Bedingung TASK_LOG_COSTCODE = COSTCODE zusammengeführt. Danach findet in der
Expressiontransformation die Berechnung der Kosten satt. Anschließend werden die gesamten Daten
in die Zieltabelle TASK_LOG_WITH_COSTS geschrieben.
Abbildung 16: Fallbeispiel 4 – Ausgangsbeispiel - Berechnung der Aufgabenkosten
Erhebung der Maße
Quantitative Maße
Datenmenge
Die Datenmenge in TASK_LOG beträgt unverändert 1098106 Tupel, in COSTCODE_EUROVALUE
liegen 2 Tupel vor. Über die Attribute TASK_LOG.TASK_LOG_COSTCODE und
COSTCODE_EUROVALUE.COSTCODE werden die beiden Tabellen in Beziehung gesetzt. Dabei
wird jedes Tupel aus TASK_LOG mit genau einem aus COSTCODE_EUROVALUE verbunden. Die
Tabellen stehen in einer 1:n Relation zueinander. Da ein Master Outer Join angewandt wird, wird
durch diese Beziehung in der Joinertransformation nur die Anzahl der Spalten erhöht, Tupel bleiben
unverändert 1098106 vorhanden. Diese Zahl bleibt bis in das Ziel unverändert bestehen.
Anzahl der Knoten
Das Mapping besteht aus 7 Knoten.
Länge
Atrribute werden maximal vier Mal weitergeleitet, das Mapping weist also eine Länge von 4 auf.
Komplexität
Die Transformationen des Mappings sind über 23 Kanten verbunden. Dies entspricht der Komplexität.
Qualitative Maße
Modularität
Alle Operationen werden in atomaren Transformationen durchgeführt, Modularität ist nicht
vorhanden.
ETL-Design Optimierung Seite 60 von 108
Kapselung
Es gibt keine verborgene Funktionalität und somit keine Kapselung.
Universalität
Das Mapping weist eine hohe Spezifität für den Anwendungsfall auf.
Kohäsion
Aufgrund der nicht vorhandenen Modularität ist die Kohäsion nicht sinnvoll zu erheben.
Kopplung
Bis auf eine Ausnahme, COSTCODE in der Joinertransformation, sind alle Ports jeweils mit den
nachfolgenden Transformationen verbunden. Die Kopplung wird als neutral erhoben.
Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Eingehende Tupel 7 4 23
Tabelle 22: Fallbeispiel 4 – Ausgangsbeispiel - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. n.v. - n/a 0
Tabelle 23: Fallbeispiel 4 – Ausgangsbeispiel - Qualitative Maße
Auswirkungen auf die Ziele Das vorgestellte Ausgangsbeispiel soll als Referenz für den Vergleich mit einer Lookup-Variante
dienen. Daher werden, um die Vergleichbarkeit zu gewährleisten, die Ziele in der Übersicht alle mit 0
bewertet. In der Diskussion der einzelnen Ziele soll dennoch auf die Besonderheiten des
Ausgangsmappings eingegangen werden.
Korrektheit
Das Mapping führt die geforderten Operationen korrekt durch.
Wartbarkeit
Positiv ist die hohe Transparenz zu werten. Jede Transformation führt genau eine Operation durch, alle
Operationen sind in der Mappingansicht zu erkennen. Für die wenig komplizierten Operationen weist
das Mapping relativ viele Knoten und eine hohe Komplexität auf.
ETL-Design Optimierung Seite 61 von 108
Wiederverwendbarkeit
Das Mapping ist sehr spezifisch auf den Anwendungsfall zugeschnitten und daher schlecht
wiederverwendbar.
Performance
Performance wird erst in der folgenden Variante im Vergleich beurteilt.
Zuverlässigkeit
Das Ausgangsbeispiel lässt keine Zuverlässigkeitsmängel erkennen.
Übersicht über die Ziele
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Tabelle 24: Fallbeispiel 4 – Ausgangsbeispiel – Zielerfüllung
4.4.3.2 Umsetzung mit einer Lookuptransformation Statt beide Quellen einzulesen und anschließend mittels einer Joinertransformation
zusammenzuführen, sollen nun die benötigten Stundensätze über eine Lookuptransformation aus der
Tabelle COSTCODE_EUROVALUE bezogen werden. Anschließend werden wie in der vorherigen
Variante die Kosten in der Expressiontransformation CALCULATE_COSTS berechnet. Die
Auswirkungen, die diese Veränderung mit sich bringt, werden anschließend ausgewertet und
diskutiert.
Abbildung 17: Fallbeispiel 4 – Variante 1 – Umsetzung mit Lookuptransformation
Erhebung der Maße
Quantitative Maße
Datenmenge
Die Datenmenge in TASK_LOG beträgt unverändert 1098106 Tupel, in COSTCODE_EUROVALUE
liegen 2 Tupel vor. Für jedes Tupel aus TASK_LOG wird in der Lookuptransformation das
ETL-Design Optimierung Seite 62 von 108
zusätzliche Attribut EUROVALUE nachgeschlagen. Die Anzahl der Tupel bleibt dabei unverändert,
jedes Tupel wird aber um zwei Attribute, EUROVALUE und TASK_LOG_COST, erweitert.
Anzahl der Knoten
Da die Quelle der Lookuptransformation nicht explizit eingelesen werden muss, reduziert sich die
Anzahl der Knoten von 7 auf 5.
Länge
Auch die Länge kann durch die Veränderungen reduziert werden, und zwar von 4 auf 3.
Komplexität
Die Komplexität kann deutlich reduziert werden. Während die Transformationen im vorangegangenen
Beispiel noch über 23 Kanten verbunden waren, sind es jetzt nur noch 16.
Qualitative Maße
Modularität
Eine Lookuptransformation wird nicht als Modul angesehen, daher ist unverändert keine Modularität
vorhanden.
Kapselung
Die Attribute der Lookup-Quelltabelle sind direkt ersichtlich, daher ist keine Kapselung zu
verzeichnen. Das Mapping ist transparent bezüglich der durchgeführten Operationen.
Universalität
Das Mapping weist eine hohe Spezifität für den Anwendungsfall auf. Allerdings ist es bezüglich der
Quelle der Stundensätze etwas genereller. So ist es relativ einfach möglich, diese Quelle von einer
relationalen Tabelle auf eine flache Textdatei umzustellen.
Kohäsion
Aufgrund der nicht vorhandenen Modularität ist die Kohäsion nicht sinnvoll zu erheben.
Kopplung
Die Lookuptransformation hat aber ein relativ günstiges Verhältnis zwischen eingehender und
ausgehender Kopplung. Der Port TASK_LOG_COSTCODE ist über mehrere ausgehende Kanten
verbunden. Insgesamt wird die Kopplung als neutral erhoben.
Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
Eingehende Tupel 5 3 16
Tabelle 25: Fallbeispiel 4 – Variante 1 - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
ETL-Design Optimierung Seite 63 von 108
Ausprägung n.v. n.v. 0 n/a 0
Tabelle 26: Fallbeispiel 4 – Variante 1 - Qualitative Maße
Auswirkungen auf die Ziele Sowohl die quantitativen als auch die qualitativen Maße weisen Veränderungen auf. Die
Auswirkungen auf die vereinbarten Ziele werden nachfolgend dargestellt.
Korrektheit
Fachlich sind beide Varianten des Mappings äquivalent. Die Korrektheit bleibt durch die Verwendung
einer Lookuptransformation statt der Joinertransformation unverletzt.
Wartbarkeit
Alle quantitativen Maße außer der Datenmenge konnten reduziert werden. Hierdurch erhöht sich die
Übersichtlichkeit, was die Wartbarkeit positiv beeinflusst. Darüber hinaus erhöht sich die Universalität
etwas, da die Lookuptransformation einfacher auf verschiedene Quelltypen angepasst werden kann.
Dies verbessert im vorliegenden Beispiel die Wartbarkeit, da die Stundensätze in Euro nicht in der
Originaldatenbank vorlagen, sondern nachträglich eingeführt wurden. Statt einer relationalen Tabelle
hätte entsprechend auch eine Textdatei eingebunden werden können.
Neben den genannten Auswirkungen bleibt die gute Transparenz erhalten. Negative Effekte durch die
richtungsabhängige Relation sind in diesem Fall minimal, da die Beziehung zwischen den Tabellen
auch ohne detaillierte Kenntnis des Datenbankschemas offensichtlich ist.
Wiederverwendbarkeit
Unverändert ist das Mapping recht spezifisch auf den vorliegenden Anwendungsfall zugeschnitten.
Dennoch gibt es eine Verbesserung der Wiederverwendbarkeit. Einen geringen positiven Einfluss auf
hat dabei die bereits dargestellte größere Flexibilität in Bezug auf die Quelle der Stundensätze.
Darüber hinaus kann die Lookuptransformation insofern besser wiederverwendet werden, dass sie die
Lookupquelle integriert. Es müssen als nicht, wie bei einer Joinertransformation, zwei Quellen
verbunden werden, sondern nur eine.
Performance
Auf die Performance wirken sich die Veränderungen positiv aus. Die Laufzeit kann im Vergleich mit
dem Ausgangsbeispiel um ca. 40% reduziert werden. Zur Erhebung der Durchlaufzeit wurde der
Mittelwert von 10 Ausführungen herangezogen, trotzdem sei an dieser Stelle noch einmal auf die recht
geringe Aussagekraft dieses Werts hingewiesen.
Die Verbesserung ist darauf zurückzuführen, dass die Lookupquelle nur sehr wenige Tupel (2)
aufweist und daher der Lookup gegenüber der Joinertransformation effizienter ist.
Zuverlässigkeit
Die Zuverlässigkeit wird durch den Austausch einer Joinertransformation mit einer
Lookuptransformation nicht beeinflusst.
ETL-Design Optimierung Seite 64 von 108
Übersicht über die Ziele
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 ++ + + 0
Tabelle 27: Fallbeispiel 4 – Zielerfüllung – Vergleich der Varianten
4.4.4 Zusammenfassung Lookup vs. Join Wie bereits bei der Erhebung der Maße und Untersuchung der Ziele deutlich wurde, ist die
Entscheidung zwischen Lookup und Joinertransformation nicht trivial. Die Auswirkungen von
Veränderungen sind zum Teil gravierend, stehen aber bezüglich der definierten Ziele in Konflikt.
Es gilt zu beachten, dass ein Austausch nur unter bestimmten Voraussetzungen möglich ist. Lookup
und Join unterscheiden sich fachlich dadurch, dass die Lookuptransformation zur Prüfbedingung nur
ein Tupel zurückliefern kann. Die Joinertransformation dagegen überprüft je nach Join-Typ die
Bedingung für alle Tupel und liefert dabei auch Mehrfachtreffer zurück. Dementsprechend können nur
Werte aus Entitäten, die in einer 1:1 oder 1:n Relation stehen, mittels einer Lookuptransformation
bezogen werden. Bei n:m Relationen muss mit der Joinertransformation gearbeitet werden. Bei 1:n
Relation ist es für die Wartbarkeit wichtig, ob Art und gegebenenfalls Richtung der Relation
offensichtlich sind. Dies hängt von den Daten beziehungsweise deren Aussagekraft ab.
Da die zugrundeliegenden Quellen nicht in expliziten Transformationen eingelesen werden müssen
und folglich auch keine Source Qualifier für diese Quellen benötigt werden, reduzieren
Lookuptransformationen quantitative Maße eines Mappings. Insbesondere die Anzahl der Knoten und
die Komplexität sinken in der Regel. Häufig verkürzt sich auch die Länge. Die positiven
Auswirkungen dieser Reduktionen verstärken sich natürlich, wenn an mehr als einer Stelle des
Mappings Daten aus anderen Quellen nachgeschlagen werden müssen, da sich die Einsparungen in
diesem Fall multiplizieren.
Die Lookuptransformation bietet im Gegensatz zur Joinertransformation die Möglichkeit, Daten aus
mehr als zwei Tabellen in einem Verarbeitungsschritt zu verknüpfen. Dies geschieht mittels einer SQL
Override Anweisung in der Lookuptransformation. Weil hierdurch aber massiv Transparenz eingebüßt
wird, ist diese Möglichkeit unter dem Gesichtspunkt der Wartbarkeit als sehr ungünstig zu bewerten.
In Bezug auf das Ziel Performance ist es bei der Frage Lookup vs. Join nicht möglich, eine generelle
Aussage zu treffen. Mehr als von Designentscheidungen hängt die Performance von technischen
Rahmenbedingungen ab. Insbesondere Caching, Art und Struktur der Quellsysteme beziehungsweise
Daten, sowie Ausstattung und Auslastung der Systeme, auf denen die Dienste ausgeführt werden,
beeinflussen die Performance. Beide profitieren stark von vorsortierten Daten, es kann sich jedoch
hierdurch keine Transformation von der anderen abgrenzen. Indizes auf der Datenbank wirken sich bei
Joinoperationen im Source Qualifier und ungecachten Lookups positiv auf die Performance aus.
Laut Informatica ist der Joiner aus Performancegesichtspunkten in der Regel dem Lookup vorzuziehen
ETL-Design Optimierung Seite 65 von 108
(Informatica, PowerCenter Transformation Guide, 2006, S. 318). Die Beispiele haben aber gezeigt,
dass unter bestimmten Bedingungen die Lookuptransformation recht deutliche
Performancevorsprünge vor der Joinertransformation erzielen kann. Welcher Transformation unter
dem Kriterium der Performance der Vorzug zu geben ist, hängt neben den genannten Kriterien von der
Struktur der Daten ab. Sollen zwei Tabellen, die viele Tupel mit jeweils vielen Attributen enthalten,
zusammengeführt werden, ist hierfür die Joinertransformation vorzuziehen. Stammen die zu
beziehenden Daten aus einer in Bezug auf die Zahl der Tupel und deren jeweiligen Attribute sehr
kleinen Tabelle, wird in den meisten Fällen die Lookuptransformation die bessere Performance bieten.
Es ist festzustellen, dass die Entscheidung Lookup vs. Join bezüglich der Performance sehr unscharf
ist. Es ist daher im Einzelfall empfehlenswert, die Auswirkungen auf andere Ziele zu betrachten und
dann entsprechend die Auswirkungen auf die Performance zu überprüfen. Die festgestellten Maße
wirken hierbei entscheidungsunterstützend.
4.5 Weitere Optimierungsansätze - Fallbeispiel 5 Bisher wurden sehr einfache Beispiele vorgestellt, um die Wirkungsweisen verschiedener
Veränderungen an Mappings zu verdeutlichen. Dabei fiel auf, dass für diese einfachen Beispiele
qualitative Maße, insbesondere Modularität, Kohäsion und Kopplung regelmäßig nicht aussagekräftig
untersucht werden konnten. In diesem Abschnitt wird nun ein etwas umfangreicheres Beispiel
eingeführt, an dem sich Auswirkungen auf diese Maße deutlicher zeigen lassen.
Für die Beispiele dienen die bereits vorgestellten Ausschnitte der dotProject Datenbank als Grundlage.
Für das Szenario sollen die anfallenden Kosten eines Projekts berechnet werden. Außerdem soll eine
Umrechnung in verschiedene Währungen anhand von externen Wechselkurstabellen stattfinden.
4.5.1 Datenquellen Für die kommenden Beispiele werden die Tabellen TASK_LOG, TASKS und PROJECTS als Quellen
verwendet. Diese wurden bereits bei der Einführung des Szenarios in Abschnitt 4.2.1 vorgestellt.
Zur Erinnerung sei hier nochmals auf die Beziehung zwischen den Tabellen hingewiesen.
In der Tabelle TASK_LOG werden einzelne Aufgaben mit den dafür angefallenen Stunden und einem
Kostenfaktor gespeichert. Jedes Tupel aus TASK_LOG kann eindeutig einem aus der Tabelle TASKS
zugeordnet werden. In PROJECTS wiederum werden Projekte erfasst. Jedes TUPEL aus TASKS lässt
sich eindeutig einem aus PROJECTS zuordnen. TASKS dient im Beispiel demnach in erster Linie als
Bindeglied zwischen den Teilaufgaben in TASK_LOG und Projekten in PROJECTS.
Im Fallbeispiel müssen Daten aus den drei genannten Tabellen zusammengeführt und aggregiert
werden. Darüber hinaus müssen die Kosten berechnet werden. Diese sollen auf Projektbasis erhoben
werden. Es bieten sich also verschiedene Möglichkeiten an, wo innerhalb eines Mappings diese
Berechnung durchgeführt werden soll. Neben den Kosten in Euro sollen verschiedene
Fremdwährungen berechnet werden. Für das Beispiel werden die Wechselkurse in einer Textdatei
hinterlegt. Diese muss in die Umrechnung einbezogen werden.
Die Ergebnisse, in verschiedenen Währungen, werden in drei verschiedene Zieltabellen geladen.
4.5.2 Zieltabellen Die berechneten Projektkosten sollen jeweils in einer Tabelle pro Währung gespeichert werden. Die
Zieltabellen sehen dabei wie folgt aus:
ETL-Design Optimierung Seite 66 von 108
CREATE TABLE PROJECT_COST_IN_DOLLAR
(
PROJECT_ID number(10),
PROJECT_NAME varchar2(255),
SUM_HOURS_PER_PROJECT number(15,2),
COST_PER_PROJECT number(15,2)
);
Analog dazu gestalten sich die Tabellen für die Währungen Euro und Schweizer Franken:
CREATE TABLE PROJECT_COST_IN_EURO
(
PROJECT_ID number(10),
PROJECT_NAME varchar2(255),
SUM_HOURS_PER_PROJECT number(15,2),
COST_PER_PROJECT number(15,2)
);
CREATE TABLE PROJECT_COST_IN_FRANKEN
(
PROJECT_ID number(10),
PROJECT_NAME varchar2(255),
SUM_HOURS_PER_PROJECT number(15,2),
COST_PER_PROJECT number(15,2)
);
Untersuchung weiterer Optimierungsansätze Bezüglich der oben geschilderten Anforderungen werden verschiedene Designvarianten vergleichen.
Alle Varianten sind fachlich äquivalent und können daher unter Optimierungsgesichtspunkten
miteinander verglichen werden.
Zu Beginn wird, entsprechend des definierten Vorgehens, ein Ausgangsbeispiel eingeführt.
Anschließend werden in Varianten davon Optimierungsansätze untersucht. Dabei wird die
Auswirkung auf die Maße und die Erfüllung der Ziele, im Vergleich mit dem Ausgangsbeispiel,
untersucht beziehungsweise bewertet.
ETL-Design Optimierung Seite 67 von 108
4.5.3 Ausgangsbeispiel
Extraktion und Zusammenführung der benötigten Daten Im Ausgangsbeispiel werden zuerst die drei benötigten Quelltabellen über zwei
Joinertransformationen zusammengeführt.
Hierfür werden die beiden Tabellen TASKS und TASK_LOG anhand der Bedingung
TASK_LOG_TASK = TASK_ID gejoined. Da in der Tabelle TASKS weniger Zeilen vorhanden sind,
bilden ihre Daten die Detailpipeline. Die Tabelle TASK_LOG geht dementsprechend als
Masterpipeline in die Joinertransformation ein.
Im nächsten Schritt werden die zusammengeführten Daten aus der gerade beschriebenen
Joinertransformation in einer weiteren Joinertransformation mit den Daten der Tabelle PROJECTS
verknüpft. Da hierbei wiederum die Tabelle PROJECTS die wenigsten Zeilen liefert, gehen ihre Daten
als Detailpipeline in die Transformation ein und die Ergebnisse der vorherigen Joinertransformation
als Masterpipeline. Die Verknüpfung findet anhand der Bedingung TASK_PROJECT = PROJECT_ID
statt.
Abbildung 18: Fallbeispiel 5 – Ausgangsbeispiel - Zusammenführen der Quellen
Aggregation der geleisteten Stunden Nachdem die benötigten Quelldaten zusammengeführt sind, werden mittels der
Aggregationstransformation SUM_HOURS_PER_PROJECT die geleisteten Stunden pro Projekt
aufsummiert. Dies geschieht mittels der Aggregationsfunktion SUM(TASK_LOG_HOURS) und
einem GROUP BY PROJECT_ID sowie einem GROUP BY COSTCODE. Die Gruppierung nach
COSTCODE wird benötigt, da die darin hinterlegten Faktoren in die folgende Berechnung der Kosten
eingehen sollen.
ETL-Design Optimierung Seite 68 von 108
Abbildung 19 zeigt die Aggregationstransformation
Abbildung 19: Fallbeispiel 5 – Ausgangsbeispiel - Aggregation SUM_HOURS_PER_PROJECT
Berechnung der Kosten Nach der Aggregation wird die Berechnung der Kosten pro Projekt, aufgeteilt nach den
Kostenfaktoren COSTCODE, durchgeführt. Hierfür gehen die Attribute PROJECT_ID,
PROJECT_NAME, SUM_HOURS_PER_PROJECT sowie TASK_LOG_COSTCODE in die
EXPRESSION Transformation CALCULATE_COST ein.
Innerhalb der Transformation wird zuerst der Kostenfaktor ermittelt. Im Beispiel gibt es zwei
Kostenfaktoren, nämlich den Stundensatz für Mitarbeiter in Höhe von EURO 75 und den Stundensatz
für Geschäftsführer von EURO 120. In den Quelldaten wird dies über den Integer 1 für einen
Mitarbeiterstundensatz und 2 für einen Geschäftsführerstundensatz dargestellt. Weitere
Kostenfaktoren gibt es nicht. Die Ableitung des Stundensatzes aus dem in COSTCODE gespeicherten
Wert geschieht unter Nutzung eines Variablenports FACTOR_COSTCODE. Ein Variablenport ist
hierbei ein rein in der Transformation existierender Port, das heißt, er ist nach außen weder über
Eingänge noch über Ausgänge verbunden. Er dient der Berechnung von Werten, die für die
Weiterverarbeitung benötigt werden. Im Beispiel wird auf dem Variablenport FACTOR_COSTCODE
folgende Operation durchgeführt: IIF(TASK_LOG_COSTCODE = '1', 75, 120).
Es wird also abhängig von dem in COSTCODE hinterlegten Wert entweder 75 oder 120 im
Variablenport der jeweiligen Zeile gespeichert.
Danach wird auf den Ausgabeports COST_PER_PROJECT, COST_IN_DOLLAR und
COST_IN_FRANKEN jeweils die Berechnung der Kosten in den entsprechenden Währungen
durchgeführt.
Bei COST_PER_PROJECT sieht die Berechnung dabei folgendermaßen aus:
SUM_HOURS_PER_PROJECT * FACTOR_COSTCODE. Es werden also die aufsummierten
Stunden mit dem Stundensatz, der über den Variablenport geliefert wird, multipliziert.
Für die Berechnungen der Kosten in fremden Währungen wird die Berechnung um einen Faktor, der
dem Umrechnungskurs entspricht, erweitert. Die aktuellen Wechselkurse werden dabei mittels eines
nicht verbundenen Lookups aus einer Textdatei bezogen. Der Aufruf der nicht verbundenen LOOKUP
Transformation geschieht auf dem jeweiligen Port folgendermaßen:
:LKP.LOOKUP_WECHSELKURS('Währung')
Dieser Aufruf wird in die Formel zur Berechnung der Kosten eingebunden. Für beide Währungen gibt
ETL-Design Optimierung Seite 69 von 108
es jeweils einen Ausgabeport, die vollständige Berechnung für die Kosten in Dollar sieht dabei
folgendermaßen aus:
SUM_HOURS_PER_PROJECT * FACTOR_COSTCODE *
:LKP.LOOKUP_WECHSELKURS('Dollar')
Nachdem alle Berechnungen durchgeführt wurden, werden die Attribute PROJECT_ID,
PROJECT_NAME sowie die neu ermittelten Werte COST_PER_PROJECT, COST_IN_DOLLAR
und COST_IN_FRANKEN zur Weiterverarbeitung in der folgenden Transformation
SUM_COST_PER_PROJECT ausgegeben.
Zur Übersicht ist in der folgenden Abbildung die Transformation CALCULATE_COST dargestellt.
Abbildung 20: Fallbeispiel 5 – Ausgangsbeispiel - Expression Transformation CALCULATE_COST
Aggregation der Kosten Nach der Berechnung liegen die Kosten pro Projekt vor. Allerdings sind diese noch nach den beiden
Kostenfaktoren COSTCODE (1,2) separiert. Dies wird nun mit einer weiteren Aggregation behoben.
In dieser Transformation SUM_COST_PER_PROJECT werden die Kosten in den verschiedenen
Währungen sowie die geleisteten Stunden auf Portebene über die Aggregationsfunktion SUM(Port)
aufsummiert und nach der PROJECT_ID gruppiert. Nach erfolgter Aggregation werden die Daten in
die entsprechenden Ziele geschrieben, wie folgende Abbildung zeigt.
Abbildung 21: Fallbeispiel 5 – Ausgangsbeispiel - Aggregation SUM_COST_PER_PROJECT
ETL-Design Optimierung Seite 70 von 108
4.5.3.1 Gesamtübersicht Bevor Varianten des Ausgangsbeispiels vorgestellt werden, soll nun zuerst eine kurze Untersuchung
des vorliegenden Mappings stattfinden. Zur besseren Orientierung ist das vollständige Mapping in
folgender Abbildung dargestellt.
Abbildung 22: Fallbeispiel 5 – Ausgangsbeispiel - Gesamtübersicht
4.5.3.2 Erhebung der Maße des Ausgangsbeispiels
Quantitative Maße Zunächst werden die quantitativen Maße des Ausgangsbeispiels untersucht. Das Mapping ist etwas
komplexer als die vorherigen Beispiele. Informatica PowerCenter 8 bietet eine einfache Möglichkeit
des XML-Exports. Aus einer solchen XML Datei können alle Maße außer Datenmenge und Länge
einfach ermittelt und somit auch für sehr komplexe Mappings erhoben werden.
Datenmenge
Aus der Tabelle TASK_LOG gehen 1098106 Tupel in das Mapping ein. Aus TASK und PROJECTS
jeweils 133 beziehungsweise 57. In der ersten Joinertransformation werden die beiden letzteren zu 133
Tupel zusammengeführt. Anschließend werden in der zweiten Joinertransformation das Ergebnis der
ersten und die Tupel aus TASK_LOG zu 1098106 Zeilen verknüpft. In der ersten Aggregation werden
diese dann auf 72, in der zweiten Aggregation dann nochmal auf 49 Tupel reduziert. Diese
verbleibenden 49 Tupel werden anschließend auf 3 Ziele verteilt.
Anzahl der Knoten
Das Mapping besteht aus 15 Transformationen, was der Anzahl der Knoten entspricht.
Länge
Die maximale Anzahl an Weiterleitungen erfährt das Attribut PROJECT_ID aus der Tabelle
PROJECTS. Diese beträgt 8 und stellt die Länge des Mappings dar.
Komplexität
Die Komplexität, also die Anzahl der Kanten, mit denen die einzelnen Transformationen
untereinander verbunden sind, beträgt 55.
ETL-Design Optimierung Seite 71 von 108
Qualitative Maße
Modularität
Im Ausgangsbeispiel ist noch keine Modularität erkennbar.
Kapselung
In der Expressiontransformation CALCULATE_COST werden zwei fachliche Operationen
durchgeführt, die Berechnung der Kosten und die Umrechnung in Fremdwährungen. Dabei kapselt
CALCULATE_COST auch den Aufruf der nicht verbundenen Lookuptransformation.
Universalität
Das Mapping weist eine geringe Universalität auf. Da in CALCULATE_COST zwei Operationen
gekapselt sind, lassen sich diese schlecht auf anderen Szenarien anwenden.
Kohäsion
Die Kohäsion in CALCULATE_COST ist relativ schwach, da zwischen den Aktionen „Berechnung
der Kosten“ und „Umrechnung in Fremdwährungen“ keine ausgeprägte fachliche Bindung erkennbar
ist.
Kopplung
Die Kopplung zwischen den einzelnen Transformationen ist hoch. Die Lookuptransformation
LOOKUP_WECHSELKURS ist eine nicht verbundene Transformation. Das heißt, im Gegensatz zu
den anderen Transformationen ist sie nicht über Ein- und Ausgabeports gekoppelt, sondern über einen
impliziten Aufruf in der Transformation CALCULATE_COST.
4.5.3.3 Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
15 8 55
Tabelle 28: Fallbeispiel 5 – Ausgangsbeispiel - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. + -- - +
Tabelle 29: Fallbeispiel 5 – Ausgangsbeispiel - Qualitative Maße
4.5.3.4 Auswirkungen auf die Ziele Da es sich bei dem Beispiel um die Referenz für die folgenden Vergleiche handelt, werden alle Ziele
mit 0 bewertet. Auffälligkeiten in Bezug auf die Ziele werden im Text dargestellt.
Korrektheit
Alle Daten werden fachlich korrekt und konsistent in die Zieltabellen geschrieben.
ETL-Design Optimierung Seite 72 von 108
Wartbarkeit
Die Wartbarkeit des Mappings ist nicht optimal. Anzahl der Knoten, Länge und Komplexität sind
bezogen auf die gebotene Funktionalität recht hoch. Außerdem werden in CALCULATE_COST
Funktionen gekapselt, zwischen denen eine recht schwache Kohäsion herrscht.
Wiederverwendbarkeit
Das Mapping ist sehr spezifisch auf den Anwendungsfall zugeschnitten und daher schlecht
wiederverwendbar.
Performance
Die Performance wird erst im Vergleich mit den folgenden Varianten bewertet.
Zuverlässigkeit
Das Mapping ist von der Verfügbarkeit der Quellen und der Zielsysteme abhängig. Innerhalb des
Mappings gibt es keine Auffälligkeiten, die sich auf die Zuverlässigkeit auswirken könnten.
4.5.3.5 Zusammenfassung und Übersicht über die Ziele
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Tabelle 30: Fallbeispiel 5 – Ausgangsbeispiel - Zielerfüllung
Auffällig ist in dem vorliegenden Mapping, dass neun von fünfzehn Transformationen dazu benötigt
werden, die für die zu berechnenden Werte erforderlichen Daten zu extrahieren und
zusammenzuführen. Außerdem fällt auf, dass im Abstand von einer Transformation zwei Mal
aggregiert wird. Hier kann vermutet werden, dass diese Redundanz durch eine Zusammenfassung der
beiden Aggregationen behoben werden kann. Dies entspräche einem „Merge and Split“
Optimierungsansatz nach (Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005). In den folgenden
Varianten wird untersucht, ob dies möglich ist und wie sich dies auf das Mapping auswirkt.
In dem entwickelten Mapping muss die Lookup Operation auf jedem der betroffenen Ports für jede
Zeile der eingehenden Daten durchgeführt werden.
4.5.4 Variante 1 - Merge and Split In der ersten Variante des eingeführten Beispiels sollen die Aggregation und die Kalkulation
überarbeitet werden. Dies geschieht auf Grundlage des Ausgangsbeispiels. Dort wurden zuerst in der
Aggregation SUM_HOURS_PER_PROJECT die geleisteten Stunden gruppiert nach PROJECT_ID
und nach dem Kostenfaktor COSTCODE summiert. Danach wurden die aufsummierten Stunden
zusammen mit dem Kostenfaktor in die Berechnung der Kosten einbezogen. Anschließend wurde
durch eine weitere Aggregation SUM_COST_PER_PROJECT die Summe der Kosten diesmal
ausschließlich nach PROJECT_ID gruppiert gebildet. Aufgrund der großen örtlichen und fachlichen
Nähe der beiden Aggregationstransformationen ist die Überlegung einer Zusammenfassung beider
naheliegend. Dieses Vorgehen entspricht dem „Merge and Split“ Ansatz der Optimierungsansätze aus
(Vassiliads, Simitsis, Terrovitis, & Skiadopoulos, 2005), wobei hier ein Merge, also eine
Zusammenfassung durchgeführt wird. Die Zusammenfassung erfordert zusätzlich einen
Positionstausch beziehungsweise „Swap“, da die Kalkulation, die in der Expressiontransformation
CALCULATE_COST vorgenommen wird, dann vor der Aggregation stattfinden muss. Der
ETL-Design Optimierung Seite 73 von 108
Positionstausch oder „Swap“ gehört ebenfalls zu den in (Vassiliads, Simitsis, Terrovitis, &
Skiadopoulos, 2005) beschriebenen Optimierungsmaßnahmen.
In der ersten Variante soll nun überprüft werden, welche Auswirkungen diese Veränderungen auf die
angestrebten Ziele haben.
Ausgangssituation Ausgegangen wird von dem Aggregations- und Kalkulationsabschnitt aus dem Ausgangsbeispiel:
Abbildung 23: Fallbeispiel 5 – Variante 1 - Ausgangssituation mit zwei Aggregationen
Die Anordnung der Transformationen wurde bei der Vorstellung des Ausgangsbeispiels begründet.
Zielsituation der Variante 1 In Variante 1 soll die Zahl der Aggregationen durch Zusammenfassung reduziert werden. Wenn die
Summierung der Stunden und der Kosten in einer Aggregationstransformation berechnet werden
sollen, müssen folglich die Kosten vorher für jeden Eintrag in TASK_LOG.TASK_LOG_HOURS
unter Berücksichtigung des jeweiligen Faktors COSTCODE kalkuliert werden.
Abbildung 24: Fallbeispiel 5 – Variante 1 - Zielsituation mit einer Aggregation
ETL-Design Optimierung Seite 74 von 108
Expressiontransformation Dies erfordert eine Anpassung der Expressiontransformation CALCULATE_COST. Nachfolgend ist
die geänderte Transformation abgebildet.
Abbildung 25: Fallbeispiel 5 – Variante 1 - Kostenkalkulation auf Basis der TASK_LOG Einträge
Wieder enthält die Transformation drei Ausgabeports, COST_PER_TASK_LOG für die Kosten pro
Eintrag in TASK_LOG in Euro sowie COST_IN_DOLLAR und COST_IN_FRANKEN für die
beiden Fremdwährungen.
Die Formel zur Berechnung der Kosten ist in dieser Variante der aus dem Ausgangsbeispiel sehr
ähnlich. Sie unterscheiden sich jedoch darin, dass nicht wie zuvor die bereits aggregierten Stunden zur
Berechnung der Kosten herangezogen werden, sondern diese für jede Zeile auf Basis des Attributs
TASK_LOG_HOURS vorgenommen wird. Hieraus ergibt sich für die Eurowerte die Formel
TASK_LOG_HOURS * FACTOR_COSTCODE
Für die Fremdwährungen wird zusätzlich der Wechselkurs über Aufruf des nicht verbundenen
Lookups als Faktor in die Berechnung einbezogen, woraus sich folgende Formel ergibt:
TASK_LOG_HOURS * FACTOR_COSTCODE * :LKP.LOOKUP_WECHSELKURS('Währung')
Die Expression unterscheidet sich also nur durch das Attribut, das in die Berechnung eingeht. Als
Ergebnis ist jede Zeile der Daten um die Attribute für die Kosten erweitert.
ETL-Design Optimierung Seite 75 von 108
Aggregationstransformation Nachdem die Kosten für jedes Tupel erhoben sind, können in einer einzelnen
Aggregationstransformation sowohl die Stunden als auch die Kosten je Projekt aufsummiert werden.
Abbildung 26: Fallbeispiel 5 – Variante 1 - Aggregation der Projektkosten und geleisteten Stunden
Dies geschieht analog zu den Aggregationen im Ausgangsbeispiel, wobei in diesem Fall die
Summierung von Stunden und Kosten in einem Schritt geschieht.
Gesamtübersicht Zur Orientierung das gesamte Mapping in der Übersichtsdarstellung. Der Bereich, in dem das
Mapping gegenüber der Ausgangssituation verändert wurde, ist durch den roten Rahmen kenntlich
gemacht.
Abbildung 27: Fallbeispiel 5 – Variante 1 - Gesamtübersicht
ETL-Design Optimierung Seite 76 von 108
4.5.4.1 Erhebung der Maße für Variante 1
Quantitative Maße
Datenmenge
Die 57 Tupel aus Projects werden mit den 133 aus TASKS und den 1098106 aus TASK_LOG in 2
Joinertransformationen zusammengeführt. Danach werden 1098106 Tupel weiterverarbeitet. Alle
Zeilen gehen in die Berechnung der Kosten CALCULATE_COST ein. Danach wird die Anzahl der
Zeilen in der Aggregation SUM_HOURS_AND_COST_PER_PROJECT auf 49 reduziert. Die
verbliebenen Tupel werden anschließend in drei Ziele geschrieben.
Anzahl der Knoten
Die Anzahl der Knoten ist von 15 auf 14 um 1 Knoten reduziert.
Länge
Das Attribut mit der bisher größten Anzahl an Weiterleitungen, PROJECT_ID, wurde auch durch die
weggefallene Transformation geleitet. Daher reduziert sich die Länge um 1 auf nun 7.
Komplexität
Durch die Reduktion um eine Transformation wird auch die Komplexität reduziert. Diese beträgt jetzt
44.
Qualitative Maße
Modularität
Bei der Variation werden keine Module erstellt. Daher ist unverändert keine Modularität vorhanden.
Kapselung
Die Expressiontransformation CALCULATE_COST kapselt nach wie vor Funktionalität. Da sich nur
das Attribut, auf dem die Operationen durchgeführt werden, verändert hat, bleibt die Kapselung gleich.
Universalität
Die Änderungen führten zu keiner Verstärkung der Universalität. Genau wie das Ausgangsbeispiel ist
auch diese Variante sehr spezifisch auf den Anwendungsfall abgestimmt.
Kohäsion
CALCULATE_COST zeigt eine schwache Kohäsion bezüglich der enthaltenen Operationen
Kostenberechnung und Währungsumrechnung.
Kopplung
Die einzelnen Transformationen sind stark gekoppelt, intermodulare Kopplung ist nicht erkennbar.
ETL-Design Optimierung Seite 77 von 108
4.5.4.2 Übersicht über die Maße
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
eingehende Tupel
49 nach
Aggregation
14 7 44
Tabelle 31: Fallbeispiel 5 – Variante 1 - Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung n.v. + -- - +
Tabelle 32: Fallbeispiel 5 – Variante 1 - Qualitative Maße
4.5.4.3 Auswirkungen auf die Ziele
Korrektheit
Diese Variante führt die Operationen korrekt durch.
Wartbarkeit
Da sich die Maße nur unwesentlich geändert haben, ist die Wartbarkeit von den Anpassungen
unbeeinflusst. Der minimal positive Einfluss durch die Reduktion quantitativer Maße ist hier
vernachlässigbar.
Wiederverwendbarkeit
Die Variante ist unverändert schlecht bezüglich ihrer Wiederverwendbarkeit.
Performance
Die Reduktion an Knoten und Komplexität lässt vermuten, dass sich die vorgenommenen Änderungen
positiv im Vergleich zum Ausgangsbeispiel auswirken. Für eine genaue Beurteilung müssen allerdings
die durchgeführten Operationen und die jeweilig zu bearbeitenden Daten betrachtet werden.
Beide Beispiele unterscheiden sich dadurch, dass im Ausgangsbeispiel zuerst eine Aggregation auf
Projekte und Kostenfaktor vorgenommen wird und danach auf Basis dieser voraggregierten Daten die
die Kosten berechnet werden. Die Aggregation ist eine aktive Transformation, sie verringert die
Anzahl der Zeilen und damit die Menge der zu verarbeitenden Daten. Im vorliegenden Beispiel
werden 1098106 Tupel aus den Quellen extrahiert. In der angepassten Variante werden für jedes dieser
Tupel die drei notwendigen Berechnungen durchgeführt. Insgesamt wird die Formel zur Berechnung
der Kosten 3294318-mal durchgeführt. Zusätzlich muss für jede dieser Berechnungen per
Lookuptransformation LOOKUP_WECHSELKURS der jeweilige Wechselkurs nachgeschlagen
werden.
ETL-Design Optimierung Seite 78 von 108
Im Gegensatz dazu werden durch die Voraggregation im Ausgangsbeispiel diese Berechnungen und
die dafür benötigten Lookups nur für die nach der Summierung und Gruppierung verbleibenden 72
Zeilen, insgesamt also 216-mal durchgeführt. Hieraus folgt, dass Variante 1 gegenüber der
Ausgangssituation trotz geringerer Anzahl von Knoten und geringerer Komplexität bezüglich der
Performance wesentlich ineffizienter ist. Die Ausführungsdauer stieg im Schnitt um ca. 400 % von 90
Sekunden im Ausgangsbeispiel auf 360 Sekunden in dieser Variante3. Insbesondere ist zu beachten,
dass sich dieser Nachteil mit zunehmender Zeilenanzahl vergrößert, diese Variante also sehr schlecht
skaliert.
Zuverlässigkeit
Beide Ziele werden nicht direkt beeinflusst. Allerdings führen die Ineffizienz und der dadurch
verursachte hohe Ressourcenbedarf dieser Variante dazu, dass Fehler, die von der Systemumgebung
ausgelöst werden, wahrscheinlicher werden. Ein Beispiel hierfür sind fehlgeschlagene Verbindungen
zu anderen Systeme aufgrund einer Überschreitung der Antwortzeit.
4.5.4.4 Zusammenfassung und Übersicht über die Ziele
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 0 0 -- -
Tabelle 33: Fallbeispiel 5 – Variante 1 - Zielerfüllung
Im direkten Vergleich der beiden Varianten wird vor allem deutlich, dass die fachliche Analyse der
Transformationen, insbesondere in Bezug auf die Datenmenge, bei der Optimierung von Mappings
Vorrang genießen sollte. Die an sich naheliegende Reduktion der Transformationen durch den Merge-
Ansatz führt im Beispiel zu einer signifikant schlechteren Performance und Skalierbarkeit. Es kann
davon ausgegangen werden, dass sich die Verschlechterungen bei der Performance indirekt auf die
Zuverlässigkeit auswirken können. Gleichzeitig ist der Einfluss auf die anderen angestrebten Ziele
vernachlässigbar gering, so dass die Nachteile nicht aufgewogen werden können. Andersherum
gesehen zeigt dieses Beispiel deutlich, dass Split Maßnahmen, also das Aufteilen von Funktionen
einer Transformation auf mehrere, sich sehr positiv auswirken können.
3 Die Werte in Sekunden dienen nur zum Aufzeigen der Tendenz. Bei Ausführung auf verschiedenen Systemen waren teilweise massive
Unterschiede der Verarbeitungsdauer zu verzeichnen. Der Trend blieb jedoch auf unterschiedlichen Systemen gleich.
ETL-Design Optimierung Seite 79 von 108
4.5.5 Variante 2 - Modularisierung Im Ausgangsbeispiel und der ersten Variante fiel auf, dass die gravierendsten Veränderungen bei der
Performance auftraten. Die Einflüsse auf andere Designziele waren überwiegend gering. Im Folgenden
wird untersucht, welche Auswirkungen der Einsatz von Mapplets in dem bekannten Beispiel mit sich
bringt. Mapplets bieten die Möglichkeit der Modularisierung, wodurch vermutet werden kann, dass
sich ihr Einsatz auf die Wartbarkeit und Wiederverwendbarkeit auswirkt.
Auf Grundlage des Ausgangsbeispiels werden Transformationen zu Mapplets zusammengefasst und
die resultierenden Auswirkungen untersucht.
In der folgenden Abbildung sind die Transformationen gekennzeichnet, bei denen eine
Zusammenfassung aufgrund der fachlichen Zusammengehörigkeit auf den ersten Blick sinnvoll
erscheint.
Abbildung 28: Fallbeispiel 5 – Variante 2 – potentielle Mapplets
Für die Zusammenfassung von Transformationen zu Mapplets ist zuerst die Frage zu stellen, welche
Transformationen sich zu einer logischen Einheit gruppieren lassen. Grundsätzlich lassen sich alle
Transformationen außer Ziele in Mapplets integrieren.
Mapplet zum Extrahieren und Zusammenführen der Quellen Zuerst werden die Transformationen, die das Extrahieren und Zusammenführen der Quellen
durchführen, im Mapplet MPLT_EXTRACT_AND_JOIN_SOURCES zusammenfassend gekapselt.
Das hierfür verwendete Mapplet ist bereits aus der Einführung von Mapplets in Abschnitt 2.3.3
bekannt.
ETL-Design Optimierung Seite 80 von 108
Aggregation und Kalkulation der Projektkosten Anschließend werden innerhalb des Mapplets
MPLT_CALCULATE_COST_PER_PROJECT_AND_COSTCODE zuerst die Aggregation basierend
auf Project_id und Costcode und danach die Berechnung der Kosten in Euro für die Aggregate
durchgeführt.
Abbildung 29: Fallbeispiel 5 – Variante 2 – Mapplet
MLTP_CALCULATE_COST_PER_PROJECT_AND_COSTCODE zur Vorbereitung der Projektkosten
Die Berechnung der Kosten in Fremdwährungen findet hier nicht mehr innerhalb der Transformation
CALCULATE_COST statt. Stattdessen wird diese in ein eigenes Mapplet verlagert. Es wird also
zusätzlich zur Modularisierung auch eine Split-Optimierung vorgenommen.
Währungsumrechnung Nachdem die Kosten in Euro vorliegen, findet die Umrechnung in die beiden Fremdwährungen
innerhalb des Mapplets MPLT_CURRENCY_CONVERSION statt. Hier geht über die Input
Transformation des Mapplets das zuvor berechnete Attribut COST_PER_PROJECT ein. Innerhalb des
Mapplets werden in einer Expression Transformation die Fremdwährungen durch Bezug des
Wechselkurses mittels eines nicht verbundenen Lookups berechnet.
Abbildung 30: Fallbeispiel 5 – Variante 2 – Mapplet MLTP_CURRENCY_CONVERSION zur Berechnung der
Projektkosten in Fremdwährungen
Die danach folgende Aggregationstransformation SUM_COST_PER_PROJECT lässt sich nicht
sinnvoll einem der Mapplets zuweisen und liegt deshalb nach wie vor als Einzeltransformation vor. In
Ihr werden die Zeilen, die aus fachlichen Gründen momentan noch auf Basis der PROJECT_ID und
ETL-Design Optimierung Seite 81 von 108
des COSTCODE gruppiert sind, erneut aggregiert und diesmal ausschließlich nach der PROJECT_ID
gruppiert. Danach werden die aufbereiteten Daten in die Zieltabellen geschrieben.
Gesamtübersicht Das Ergebnis der Kapselungen ist folgendes Mapping mit den drei beschriebenen Mapplets.
Abbildung 31: Fallbeispiel 5 – Variante 2 – starke Kapselung durch den Einsatz von Mapplets
4.5.5.1 Erhebung der Maße für Variante 2
Quantitative Maße
Datenmenge
Aus TASK_LOG werden 1098106, aus TASKS 133 und aus PROJECTS 57 Zeilen gelesen. Nach dem
Joinen der Daten bleiben 1098106 Zeilen erhalten. Innerhalb des zweiten Mapplets
MPLT_CALCULATE_COST_PER_PROJECT_AND_COSTCODE werden die Daten in der
Aggregation SUM_HOURS_PER_PROJECT auf 72 Zeilen reduziert. Diese 72 Tupel gehen in die
Berechnung der Kosten und die Währungsumrechnung ein. In der Aggregation
SUM_COST_PER_PROJECT werden die Zeilen nochmals reduziert, so dass 49 verbleiben. Diese
werden jeweils in drei Ziele geschrieben.
Anzahl der Knoten
Bei der Verwendung von Mapplets muss deren Eigenschaft Inhalte zu verbergen berücksichtigt
werden. Auf den ersten Blick weist das Mapping in Variante drei 7 Knoten auf. Es müssen aber auch
die Transformationen berücksichtigt werden, die sich innerhalb der Mapplets befinden. Öffnet man die
einzelnen Mapplets und zählt die enthaltenen Transformationen zur Gesamtmenge hinzu, sind 24
Knoten zu zählen. Hierbei werden die Mapplets selbst auch mitgezählt.
ETL-Design Optimierung Seite 82 von 108
Länge
Bei externer Betrachtung ist die Länge 5 für das Attribut PROJECT_ID. Für eine interne Betrachtung
werden die Weiterleitungen innerhalb der Mapplets und die zwischen den Mapplets addiert. Hierbei
ergibt sich für das Attribut PROJECT_ID eine Länge von 11, die sich folgendermaßen
zusammensetzt: Mapplet 1 (MPLT_EXTRACT_AND_JOIN_SOURCES) 3 Weiterleitungen des
Attributs PROJECT_ID. Hinzu kommen 3 Weiterleitungen im zweiten Mapplet
(MPLT_CALCULATE_COST_PER_PROJECT_AND_COSTCODE) sowie 3 zwischen den
zwischen den Mapplets und den nicht in Mapplets gekapselten Transformationen.
Komplexität
Ebenso wie für die anderen quantitativen Maße müssen in der betrachteten Variante die
Besonderheiten von Mapplets beachtet werden. Die Komplexität stellt sich, ohne die innere
Implementierung der Mapplets zu betrachten, mit 23 Kanten als deutlich reduziert dar. Bezieht man
die Kanten innerhalb der Mapplets mit ein, ergibt sich aber eine Komplexität von 64, was eine
signifikante Erhöhung darstellt.
Qualitative Maße
Modularität
Jedes der Mapplets stellt ein Modul dar, die Variante weist also eine hohe Modularität auf.
Kapselung
Die Mapplets verbergen Transformationen und damit Funktionalität. Das erste Mapplet kapselt mit 6
Transformationen am stärksten. Die Mapplets zwei und drei beinhalten jeweils 2 Transformationen.
Insgesamt ist die Kapselung des Mappings bei Verwendung von Mapplets sehr stark.
Universalität
Das dritte Mapplet (CURRENCY_CONVERSION) ist sehr generell. Über eine eingehende
Schnittstelle kann ein numerischer Wert in das Mapplet geleitet werden. Dieses rechnet dann den
eingegebenen Wert in verschiedene Fremdwährungen um. Die innere Implementierung muss dabei
nicht bekannt sein, solange die angebotenen Währungen ausreichen.
Die anderen beiden Mapplets sind fallspezifischer, weisen also eine geringere Universalität auf.
Kohäsion
Die stärkste funktionale Kohäsion weist wiederum das dritte Mapplet auf. Die beiden darin
enthaltenen Transformationen dienen genau einer Funktion, nämlich der Währungsumrechung.
Das zweite Mapplet weist ebenfalls eine recht starke, funktionale Kohäsion auf. Die beiden
enthaltenen Transformationen (Aggregation auf Projektebene und Berechnung der Kosten) dienen der
Berechnung der Projektkosten in Euro. Die Kohäsion ist allerdings nicht so ausgeprägt wie die des
dritten Mapplets, da die starke Kohäsion nur innerhalb des Anwendungskontextes zu beobachten ist.
Die schwächste Kohäsion weist das erste Mapplet zur Zusammenführung der Quellen auf. Zwar
besteht zwischen den Transformationen ein funktionaler Zusammenhang, dies gilt allerdings
ausschließlich in diesem konkreten Beispielkontext.
Kopplung
Auf Transformationsebene ist die Kopplung gegenüber dem Ausgangsbeispiel unverändert.
Auf Mappletebene dagegen lassen sich interessante Auswirkungen auf die Kopplung feststellen. Das
ETL-Design Optimierung Seite 83 von 108
erste Mapplet EXTRACT_AND_JOIN_SOURCES weist mit vier verbundenen Ports eine starke
ausgehende Kopplung auf. Eingehende Kopplung liegt nicht vor, da in dem Mapplet die Quellen
enthalten sind. CALCULATE_COST_PER_PROJECT_AND_COSTCODE ist sowohl eingehend als
auch ausgehend stark gekoppelt. Eingehende und ausgehende Kopplung sind mit jeweils vier
verbundenen Ports gleich. Das Mapplet CURRENCY_CONVERSION besitzt dagegen mit nur einer
eingehenden Kante eine sehr schwache eingehende Kopplung. Die ausgehende Kopplung beträgt im
Beispiel drei. Da sie der Anzahl der berechneten Währungen entspricht, kann diese sich in
verschiedenen Szenarien ändern. Das Verhältnis zwischen eingehender und ausgehender Kopplung ist
für das Mapplet zur Währungsumrechung sehr günstig, da nur ein eingehender Wert benötigt wird, um
daraus viele Werte zu berechnen. Für das gesamte Mapping wird die Kopplung aufgrund dieser
Beobachtungen als neutral gewertet.
4.5.5.2 Übersicht über die Maße Für die Unterscheidung der Betrachtungsebenen mit und ohne der inneren Implementierung der
Mapplets werden in den folgenden Tabellen die Bezeichnungen extern beziehungsweise intern
gewählt.
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
eingehende Tupel
72 nach erster
Aggregation
49 nach zweiter
Aggregation
Extern: 7
Intern: 24 11
Extern: 23
Intern: 64
Tabelle 34: Fallbeispiel 5 – Variante 2 – Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung ++ ++ + + 0
Tabelle 35: Fallbeispiel 5 – Variante 2 – Qualitative Maße
4.5.5.3 Parallelen zur Softwareentwicklung Bevor die Auswirkungen auf die Ziele analysiert werden, soll kurz der Vergleich zwischen ETL
Design beim Einsatz von Mapplets und der Softwaretechnik im Allgemeinen beziehungsweise der
objektorientierten Softwareentwicklung im Speziellen gezogen werden.
Mit Mapplets liegt ein Instrument zur Kapselung und Modularisierung von Mappings vor. Diese
beiden Prinzipien finden sich auch in der Softwaretechnik wieder, wo sie wichtige Kriterien für die
Wartbarkeit und Wiederverwendbarkeit für Software darstellen.
ETL-Design Optimierung Seite 84 von 108
Kapselung in der objektorientierten Programmierung In der objektorientierten Programmierung (OOP) können einem Objekt beziehungsweise seinen
Methoden Parameter übergeben werden, die dann verarbeitet werden. Das Ergebnis wird anschließend
über den Returnwert zurückgegeben. Wichtiges Prinzip in diesem Zusammenhang ist das
Geheimnisprinzip, auch „information hiding“ (Parnas, 1971) genannt. Es besagt, dass auf Attribute
oder Methoden nur über definierte Schnittstellen zugegriffen werden kann. Durch Einhaltung des
Geheimnisprinzips wird verhindert, dass Attribute unerwartet geändert werden oder auf nicht
vorgesehene Weise auf Methoden zugegriffen wird. Außerdem resultiert daraus, dass Klassen
beziehungsweise deren Methoden geändert werden können, ohne dass die Interaktion mit anderen
Klassen davon beeinträchtigt wird (Balzert H. , 2005). Neben diesen positiven Effekten verbessert sich
durch die Modularisierung die Testfähigkeit einer Software. Dementsprechend sind die Hauptvorteile,
die sich in der objektorientierten Programmierung hieraus ergeben, Verbesserung der Wartbarkeit und
Zuverlässigkeit. Zur Beurteilung von Softwarequalität werden unter anderem die Maße Kohäsion und
Kopplung herangezogen. Die Kohäsion beschreibt dabei die Aufgabenspezifität eines Moduls, die
Kopplung die Art, in der die Module über Schnittstellen miteinander verbunden sind. Beide Maße
wurden in Abschnitt 3.2.3 bereits vorgestellt und im gerade gezeigten Beispiel auf Mapplets
übertragen.
Kapselung in Mappings durch Mapplets Mapplets verhalten sich in vielen Punkten ähnlich wie Klassen beziehungsweise die daraus
abgeleiteten Objekte. In ihnen werden Transformationen gekapselt und somit nach außen verborgen.
Ein Mapplet bildet somit ein Modul. Durch die definierten Eingabe- und Ausgabetransformationen,
Input und Output, wird ein Zugriff auf das Mapplets ermöglicht. Im Unterschied zur objektorientierten
Softwareentwicklung bietet ein Mapplet immer nur eine Inputtransformation als Schnittstelle zu allen
im Mapplet enthaltenen Transformationen. Es gibt also keine Möglichkeit, über weitere Schnittstellen
direkt auf einzelne Transformationen innerhalb des Mapplets zuzugreifen. In der OOP wäre dies über
Accessoren möglich. Daraus folgt, dass sich Input- und Outputtransformationen wie als „public“
deklarierte Methoden verhalten. Alle anderen in einem Mapplet enthaltenen Transformationen können
als „private“ betrachtet werden.
Im Umgang mit Mapplets ist es empfehlenswert, eine möglichst hohe Aufgabenspezifität zu verfolgen.
Das heißt, ein Mapplet sollte genau eine, wohldefinierte Aufgabe erfüllen. Hierdurch kann analog zur
Softwaretechnik die Kohäsion möglichst stark gehalten werden. Gleichzeitig sollte auf eine geringe
Kopplung geachtet werden. Bei starker Kohäsion wird die Zahl der Attribute, die in einem Mapplet
verarbeitet werden sollen, überschaubar sein. Hierdurch kann die Zahl der eingehenden Ports
übersichtlich gehalten werden. Zu beachten ist eine Anforderung aktiver Mapplets, also solcher, die
aktive Transformationen enthalten. Für diese gilt, dass alle Attribute, die nach dem Mapplet weiter
verarbeitet werden sollen, durch das Mapplet hindurch geführt werden müssen (Informatica,
PowerCenter Transformation Guide, 2006).
4.5.5.4 Auswirkungen auf die Ziele
Korrektheit
Die eingesetzten Mapplets dienen rein als strukturierende Elemente, durch die das Mapping
Modularität erhält. Innerhalb der Mapplets werden die gleichen Transformationen durchgeführt.
Mapplets wirken sich daher nicht direkt auf die Korrektheit aus.
ETL-Design Optimierung Seite 85 von 108
Wartbarkeit
Mapplets, wie sie in diesem Beispiel zum Einsatz kommen, haben großen Einfluss auf die
Wartbarkeit. Mit ihnen ist eine Strukturierung von Mappings möglich, außerdem verbergen sie
Komplexität. Ob sich Ihr Einsatz positiv oder negativ auf die Wartbarkeit auswirkt, hängt maßgeblich
vom angemessenen Einsatz ab. Der richtige Einsatz lässt sich jedoch nicht objektiv bestimmen,
sondern muss im Einzelfall kritisch hinterfragt werden.
Im gewählten Beispiel wurde bewusst ein übertriebener Einsatz von Mapplets vorgenommen. Daran
kann analysiert werden, wann der Einsatz sinnvoll ist und wann nicht. Es wurde bereits angesprochen,
dass zu einer Verbesserung der Wartbarkeit Mapplets fachlich zusammengehörige Transformationen
kapseln sollten. Im vorliegenden Beispiel sind dies die Datenvorbereitung, die im Mapplet
MPLT_EXTRACT_AND_JOIN_SOURCES stattfindet, die Berechnung der Kosten auf
voraggregierter Ebene im Mapplet
MPLT_CALCULATE_COST_PER_PROJECT_AND_COSTCODE sowie die Währungsumrechung
im Mapplet MPLT_CURRENCY_CONVERSION.
Eine Zusammenfassung von Datenzielen in Mapplets ist in Informatica PowerCenter nicht möglich,
sonst hätte hierdurch das gesamte Mapping auf Mapplets verteilt werden können, so dass auf höchster
Ebene keine Transformationen mehr sichtbar sind.
Aufgrund des überschaubaren Umfangs des Beispiels wird die Übersichtlichkeit durch die
Modularisierung nicht entscheidend verbessert. In der Praxis können die Anforderungen jedoch so
komplex sein, dass sie sich in einfachen Mappings nicht mehr übersichtlich abbilden lassen. In diesem
Falle ist es dringend zu empfehlen, fachkonzeptionelle Aufgaben in Mapplets zu kapseln.
Bei der Findung des richtigen Maßes an fachlicher Kapselung hilft eine Bewertung von Kohäsion und
Kopplung. Liegt zwischen einzelnen Transformationen eine starke Kohäsion vor, sollte die
Zusammenfassung dieser in einem Mapplet auch bei einer nicht kritischen Anzahl an Knoten im
gesamten Mapping erfolgen.
Neben der erhöhten Übersichtlichkeit gibt es die Möglichkeit, durch die Verlagerung von Mappings in
verschiedene Ordner die Zugriffsrechte zu beschränken und somit bei größeren Teams den
Mitgliedern nur Zugriff auf Mapplets, die ihren fachlichen Bereich repräsentieren, zu gewähren.
Hierdurch können bei der Wartung eventuelle Sicherheitsrichtlinien eingehalten werden. Außerdem
wird die Gefahr einer versehentlichen Änderung von Mapplets, für die ein anderes Teammitglied
zuständig ist, verhindert.
Wiederverwendbarkeit
Auch auf die Wiederverwendbarkeit haben Mapplets großen Einfluss. Durch die Zusammenfassung
und Kapselung von Transformationen können häufig wiederkehrende Anwendungsfälle mit einem
Mapplet als Modul hinterlegt werden und so in verschiedenen Szenarien zum Einsatz kommen. Wie
Transformationen können auch Mapplets als „reusable“ deklariert werden. Dies bietet die
Möglichkeit, ein Mapplet in verschiedenen Mappings zu instanziieren. Für Mappletinstanzen gelten
die gleichen Prinzipien wie bei als „reusable“ gekennzeichneten Transformationen. Als Module
können Mapplets die Wiederverwendbarkeit beträchtlich verbessern. Das eingesetzte Mapplet
MPLT_CURRENCY_CONVERSION zum Beispiel kann in dieser Form auch in anderen Mappings,
in denen eine Währungsumrechnung notwendig ist, verwendet werden. Das genannte Mapplet ist
insbesondere aufgrund seiner starken Kohäsion und seiner geringen Kopplung für Wiederverwendung
geeignet. Es wird auf Inputseite nur ein Wert benötigt, der innerhalb des Mapplets umgerechnet
ETL-Design Optimierung Seite 86 von 108
werden soll. Ausgegeben werden nur die umgerechneten Werte in den entsprechenden Währungen.
Die eingehende Kopplung ist also 1, die ausgehende ist dynamisch .
Dies ist ein sehr guter Wert. Vor allem die geringe eingehende Kopplung ist ein Indikator für die
potentiell gute Wiederverwendbarkeit und einfache Wartbarkeit.
Bei dem Mapplet MPLT_CALCULATE_COST_PER_PROJECT_AND_COSTCODE ist eine solch
geringe Kopplung nicht zu erreichen. Da innerhalb des Mapplets eine Aggregation durchgeführt wird,
womit es sich um ein aktives Mapplet handelt, müssen alle Ports durch das Mapplet hindurchgeführt
werden. Auch die Kohäsion ist in diesem Mapplet nicht ganz so stark, da mehrere Aufgaben, nämlich
die Berechnung der Kosten und die Aggregation, durchgeführt werden. Dadurch ist die
Wiederverwendbarkeit dieses Mapplets nicht so hoch wie die des Mapplets
MPLT_CURRENCY_CONVERSION.
Performance
Obwohl Mapplets die quantitativen Maße teilweise recht deutlich negativ beeinflussen, wirkt sich dies
nur unwesentlich auf die Performance aus. Auch das Aufteilen der Berechnungstransformation in zwei
Transformationen, jeweils zur Berechnung und zur Umrechnung, bringt keine Performancenachteile
mit sich.
Zuverlässigkeit
Mapplets als strukturierende Elemente beeinflussen die Zuverlässigkeit nicht.
4.5.5.5 Übersicht über die Ziele und Zusammenfassung
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 0 0 -- -
Variante 2 + + 0 0
Tabelle 36: Fallbeispiel 5 – Variante 2 – Zielerfüllung
Variante drei nutzt intensiv das Konzept von Mapplets. Erste Auffälligkeit beim Einsatz von Mapplets
ist, dass die Komplexität stark verborgen wird. Die Zahl der sichtbaren Knoten und Kanten sinkt.
Allerdings wird durch den Einsatz von Mapplets keine echte Reduktion an Knoten und Komplexität
erzielt, sondern das Gegenteil ist der Fall. Durch die zusätzlichen Input und Output Transformationen
und die Mapplets selbst steigen beide Maße deutlich an.
Durch den Einsatz der Mapplets wird das Mapping also technisch komplexer und zugleich deutlich
übersichtlicher. Allerdings ist im Beispiel erkennbar, dass ein übertriebener Einsatz von Mapplets
durch die steigende Intransparenz die Vorteile in Bezug auf die Wartbarkeit verringern oder sogar
ganz aufwiegen kann.
Bemerkenswert ist, dass Mapplets sich bezüglich der Performance als neutral darstellen. Ihr Einsatz
und die damit verbundenen Verbesserungen bezüglich Wartbarkeit und Wiederverwendbarkeit bringen
also keine Wechselwirkung in Bezug auf dieses Ziel mit sich.
ETL-Design Optimierung Seite 87 von 108
4.5.6 Variante 3 - Parameter und Sortierungen In einer letzten Variante des bekannten Beispiels sollen zwei weitere Konzepte untersucht werden.
Zum einen Parameter, die dazu dienen, Transformationen dynamisch an Bedingungen anpassen zu
können. Außerdem soll untersucht werden, welche Auswirkungen eine Sortierung von Daten hat.
Parameter Wie bereits in der Einführung zu Informatica erklärt, dienen Parameter dazu, Werte, die sich häufig
ändern, zur Laufzeit zu definieren. Sie können hierbei in Mapplets, Mappings, Sessions und
Workflows eingesetzt werden. Werden Parameter für ein Mapping definiert, können sie in
Transformationen abgefragt werden. Der jeweils konkrete Wert eines Parameters wird in einer
Parameterdatei eingetragen. Hierbei muss eine Syntax berücksichtigt werden, die im folgenden
Beispiel dargestellt wird.
In diesem Beispiel soll eine Filtertransformation parametrisiert werden, die aus TASK_LOG die Tupel
herausfiltert, die der Filterbedingung nicht entsprechen.
Hierfür wird zuerst für das Mapping ein Parameter unter Angabe seines Namens und Datentyps
festgelegt. Außerdem wird ein Defaultwert für den Parameter definiert. Dieser soll im Beispiel 0 sein.
Abbildung 32: Fallbeispiel 5 - Variante 3 - Filterparameter
Auf diesen Wert kann nun aus Transformationen zugegriffen werden, hier exemplarisch in einer
Filtertransformation. Hierfür wird in der Filterbedingung statt mit einem fixen Wert der Parameter
eingesetzt, so dass die Bedingung für unser Beispiel folgendermaßen aussieht:
ETL-Design Optimierung Seite 88 von 108
TASK_LOG_HOURS > $$Filtercondition
Mit Einsatz dieser Filterbedingung passieren nur noch Tupel, für die die Zahl der geleisteten Stunden
größer als der Filterparameter ist. Der Defaultwert 0 sorgt hierbei dafür, dass vorerst alle Tupel durch
den Filter gelangen. Sollen nun die Tupel restriktiver gefiltert werden und nur noch Tupel, die
beispielsweise TASK_LOG_HOURS > 5 aufweisen, weitergeleitet werden, kann ein neuer Wert in
der Parameterdatei eingetragen werden. Hierfür wird der jeweilige Wert des Parameters in einer
Parameterdatei eingetragen. Diese wird in den Einstellungen der Session, in der das Mapping
durchgeführt wird, referenziert. Die Syntax für das Parameterfile lautet dabei:
[foldername.session_name]
$$ParameterName=ParameterWert4
Im Beispiel dementsprechend:
[dotProject.s_caculate_cost_per_project_14]
$$Filtercondition=5
Die Verwendung eines Parameters macht die Transformation universeller, da nun die Filterbedingung
geändert werden kann, ohne auf das Mapping beziehungsweise den Informatica PowerCenter Designer
zugreifen zu müssen.
Parameter können außer in Transformationen auch für Mapplets, Sessions oder Workflows genutzt
werden.
Sorter Transformation Sortierte Daten können sich laut (Informatica, PowerCenter Transformation Guide, 2006) sehr positiv
auf die Performance verschiedener Transformationen, zum Beispiel Joiner- oder
Aggregationstransformationen, auswirken. Nachfolgend soll dies überprüft werden, indem in das
bekannte Mapping aus Fallbeispiel 5 vor der Aggregation SUM_HOURS_PER_PROJECT eine
Sortertransformation eingefügt wird. Es wird nach dem Attribut PROJECT_ID sortiert.
4 (Informatica, Workflow Administrator Guide 8.1, 2006)
ETL-Design Optimierung Seite 89 von 108
Gesamtübersicht Das Mapping sieht nach den vorgenommenen Änderungen wie in den Abbildungen 33 und 34
dargestellt aus. Da das Mapping zu umfangreich wurde, wird die Darstellung in 2 Abbildungen geteilt.
Abbildung 33: Fallbeispiel 5- Variante 3 - Teilabbildung 1
Abbildung 34: Fallbeispiel 5- Variante 3 - Teilabbildung 2
ETL-Design Optimierung Seite 90 von 108
4.5.6.1 Erhebung der Maße für Variante 3
Quantitative Maße
Datenmenge
Wie in den anderen Varianten werden aus TASK_LOG 1098106, aus TASKS 133 und aus
PROJECTS 57 Zeilen gelesen. Nach dem Joinen der Daten bleiben 1098106 Zeilen erhalten. Den
Filter FILTER_TASK_LOG_HOURS passieren für die Bedingung „TASK_LOG_HOURS > 5“ 350
Tupel, 1097756 werden verworfen. Anschließend reduziert die Aggregation
SUM_HOURS_PER_PROJECT die Zeilen auf 72. In der Aggregation SUM_COST_PER_PROJECT
werden die Zeilen nochmals reduziert, so dass 49 verbleiben. Diese werden jeweils in drei Ziele
geschrieben.
Anzahl der Knoten
Direkt ersichtlich sind 17 Knoten. Innerhalb des Mapplets sind noch einmal 4 Transformationen
integriert. Hieraus ergibt sich eine Gesamtzahl von 21 Knoten.
Länge
Die maximale Zahl an Weiterleitungen erfährt das Attribut PROJECT_ID. Da dieses nicht durch das
Mapplet zur Währungsumrechnung geführt wird, muss diese Ebene nicht betrachtet werden. Durch die
zusätzliche Sortertransformation steigt die Länge des Mappings auf 9.
Komplexität
Die Transformationen sind über 56 direkt ersichtliche so wie 4 im Mapplet verborgene Kanten
verbunden. Hieraus ergibt sich eine Gesamtkomplexität von 60 Kanten.
Qualitative Maße
Modularität
Die Modularität ist zwar nicht mehr so hoch wie in Variante 2, allerdings durch den Einsatz des
Mapplets zur Währungsumrechnung höher als im Ausgangsbeispiel.
Kapselung
Die Kapselung ist deutlich geringer als in Variante 2. Durch den Einsatz des Mapplets ist sie aber
höher als im Ausgangsbeispiel.
Universalität
Zwei Eigenschaften sorgen für eine hohe Universalität dieser Variante. Die Parametrisierung des
Filters und das eingesetzte Mapplet.
Kohäsion
Die Kohäsion des Mapplets MPLT_CURRENCY_CONVERSION wurde bereits in der
vorangegangenen Variante untersucht. Da hier eine Instanz desselben integriert wurde, hat sich an
diesem Maß nichts verändert. Die übrigen Transformationen weisen jeweils nur eine Funktion auf,
was die Betrachtung der Kohäsion an dieser Stelle überflüssig macht.
ETL-Design Optimierung Seite 91 von 108
Kopplung
Die Kopplung ist unverändert. Die zusätzlichen Transformationen bringen mehr Kanten mit sich, die
Transformationen und Mapplets selber sind aber nicht stärker gekoppelt.
4.5.6.2 Übersicht über die Maße Für die Unterscheidung der Betrachtungsebenen mit und ohne der inneren Implementierung der
Mapplets werden in den folgenden Tabellen die Bezeichnungen extern beziehungsweise intern
gewählt.
Quantitative Maße
Maß: Datenmenge Anzahl Knoten Länge Komplexität
Messwert: 1098106
eingehende Tupel
350 Tupel nach
Filterung
72 nach erster
Aggregation
49 nach zweiter
Aggregation
Extern: 17
Intern: 21 9
Extern: 56
Intern: 60
Tabelle 37: Fallbeispiel 5 – Variante 3 – Quantitative Maße
Qualitative Maße
Maß Modularität Kapselung Universalität Kohäsion Kopplung
Ausprägung + + ++ + 0
Tabelle 38: Fallbeispiel 5 – Variante 3 – Qualitative Maße
4.5.6.3 Auswirkungen auf die Ziele
Korrektheit
Die Korrektheit wird durch die Änderungen nicht beeinflusst.
Wartbarkeit
Die Wartbarkeit profitiert in diesem Beispiel von den bereits erörterten Vorteilen des Mapplets. Der
sparsamere Einsatz von Mapplets macht diese Variante gegenüber der zweiten etwas transparenter.
Außerdem bringt die Parametrisierung hier Vorteile, da Anpassungen der Filterbedingung einfach über
eine Parameterdatei angepasst werden können. Hierdurch können neue fachliche Anforderungen
einfach und ohne spezifische Kenntnisse in Informatica PowerCenter umgesetzt werden. Nachteilig
für die Wartbarkeit ist die gestiegene Zahl an Transformationen und die damit einhergehende
vergrößerte Komplexität. Hier muss ein Kompromiss zwischen Übersichtlichkeit, wie sie durch
Mapplets erreicht wird, und Transparenz wie in diesem Fall gefunden werden. Die Wartbarkeit der
Variante kann noch als verbessert gegenüber dem Ausgangsbeispiel bezeichnet werden. Bei mehr
ETL-Design Optimierung Seite 92 von 108
Transformationen sollte aber über eine Modularisierung nachgedacht werden, damit die Zahl der
sichtbaren Knoten überschaubar bleibt.
Wiederverwendbarkeit
Die parametrisierte Filterfunktion ist für Szenarien, in denen das gleiche Attribut behandelt wird, gut
wiederverwendbar. Der Vorteil des Mapplets, welches in dieser Variante bereits wiederverwendet
wurde, wurde bereits in Variante 2 geschildert und gilt in diesem Beispiel auch. Damit ist die
Wiederverwendbarkeit dieser Variante sehr hoch.
Performance
Im vorliegenden Mapping sind mit der Filter- und der Sortertransformation zwei Veränderungen, die
Auswirkungen auf die Performance haben, vorgenommen worden. Dass der Filter durch Reduktion
der Daten Performancevorteile bewirkt ist nach den ersten Fallbeispielen bekannt. Allerdings würde
dies auch eine fachliche Änderung des Mappings bedeuten, weswegen die Filtertransformation für die
Messung der Performance aus dem Datenfluss entfernt wurde. Die Untersuchung der Auswirkung
einer Vorsortierung ist dagegen legitim, da diese keine fachlichen Auswirkungen hat. Durch die
Vorsortierung verbessert sich die Performance um ca. 10%. Weitere Verbesserungen sind denkbar,
wenn vor den Joinertransformationen auch Sorter eingefügt würden.
Zuverlässigkeit
Die Zuverlässigkeit wird von den Änderungen in Variante 3 nicht beeinflusst.
4.5.6.4 Übersicht über die Ziele und Zusammenfassung
Variante / Ziel Wartbarkeit Wiederverwendbarkeit Performance Zuverlässigkeit
Ausgangsbeispiel 0 0 0 0
Variante 1 0 0 -- -
Variante 2 + + 0 0
Variante 3 + ++ + 0
Tabelle 39: Fallbeispiel 5 – Variante 3 – Zielerfüllung
Zusammenfassend bringt der Einsatz von Parametern Vorteile in Bezug auf die Wartbarkeit und
Wiederverwendbarkeit, ohne gleichzeitig Wechselwirkungen mit anderen Zielen zu verursachen.
Eine Vorsortierung bewirkt zusätzlich deutliche Performancevorteile, wenn sie vor Transformationen
eingesetzt wird, die von sortierten Daten profitieren. Beispiele hierfür sind Aggregations- und auch
Joinertansformationen. Hierbei ist aber zu beachten, dass Sortierung zusätzliche Knoten erfordert.
Dadurch steigen Komplexität und je nach Attribut auch Länge, worunter die Wartbarkeit leiden kann.
ETL-Design Optimierung Seite 93 von 108
5 Ergebnis
Nachdem Untersuchungen anhand von Beispielen durchgeführt wurden, werden die gewonnenen
Erkenntnisse nachfolgend strukturiert und generalisiert dargestellt. Zunächst werden hierfür die
eingeführten Maße insbesondere bezüglich ihrer Aussagekraft bewertet. Anschließend werden, unter
Berücksichtigung der verschiedenen Ziele, generelle Empfehlungen für ETL Design gegeben.
5.1 Bewertung der Maße Die eingeführten quantitativen und qualitativen Maße unterscheiden sich stark voneinander. Während
sich die quantitativen Maße in Form von Kennzahlen exakt erfassen lassen, beziehen sich die
qualitativen eher auf die logische Struktur von Mappings und sind daher abstrakter. In dieser Arbeit
wurden die Fachbereiche ETL und Softwaretechnik in Beziehung gesetzt. Die quantitativen Maße
wurden zum Großteil aus ETL-spezifischen Quellen, die qualitativen hauptsächlich aus Literatur aus
dem Bereich der Softwaretechnik hergeleitet.
Neben den Maßen wurden Ziele, die bei dem Design von ETL Mappings erstrebenswert sind,
identifiziert. Da es nur sehr wenig Literatur zum Thema Qualität und Ziele von ETL-Design gibt und
die verfügbaren Quellen sich fast ausschließlich mit dem Kriterium Performance befassen, wurden die
weiteren Ziele aus der Softwaretechnik übernommen. In Beispielen wurde anschließend untersucht,
inwieweit sich Änderungen an Mappings auf die Maße auswirken und was diese Auswirkungen
wiederum für die Ziele bedeuteten.
In den Untersuchungen war festzustellen, dass die Maße über unterschiedlich große Aussagekraft
verfügen. Bei den quantitativen Maßen geht von der Datenmenge die größte Aussagekraft aus, das
heißt Änderungen haben hier den deutlichsten Einfluss auf die Ziele. Für die anderen Maße, Anzahl
der Knoten, Länge sowie die Komplexität, konnte in den Beispielen keine so deutliche Beeinflussung
der Zielerreichung beobachtet werden. Es kann angenommen werden, dass sich diese Maße erst in
umfangreicheren Szenarien bei größerer Veränderung deutlicher auswirken.
Nachfolgend werden die Maße im Einzelnen betrachtet.
5.1.1 Quantitative Maße
5.1.1.1 Datenmenge Die Datenmenge hat gravierenden Einfluss auf die Performance. Je weniger Tupel verarbeitet werden
müssen beziehungsweise je weniger Attribute die Tupel aufweisen, desto performanter werden
Transformationen ausgeführt. Besonders deutlich wird dies bei Transformationen, die vor der
Verarbeitung der Daten einen Cache aufbauen. Beispiele hierfür sind Joiner- und
Lookuptransformationen. Die Datenmenge ist in erster Linie fachlich durch die Quellen bestimmt.
Einige Transformationen können diese verringern. Dies geschieht durch Selektion, Projektion und
Aggregation.
Von allen Auswirkungen der quantitativen Maße ist die der Datenmenge auf das Ziel Performance, die
am stärksten ausgeprägte. Wie in den Beispielen gezeigt sollte die Datenmenge daher möglichst früh
reduziert werden.
ETL-Design Optimierung Seite 94 von 108
Neben den Auswirkungen auf die Performance, ist die Datenmenge auch ein wichtiger Indikator für
den Ressourcenbedarf eines ETL Prozesses. Es ist sicherzustellen, dass die Ressourcen des Systems
zum Ausführen des ETL Prozesses ausreichend dimensioniert sind. Bei Informatica PowerCenter, ist
beispielsweise zu beachten, dass bei einigen Transformationen vor der Verarbeitung Caches aufgebaut
werden, in denen Daten zwischengespeichert werden. Diese Caches können sehr groß werden und
haben daher einen entsprechenden Speicherbedarf.
Bezüglich der Datenmenge können Mappings relativ einfach klassifiziert werden, indem die
eingehende der ausgehenden Datenmenge gegenübergestellt wird.
5.1.1.2 Anzahl der Knoten Die Menge der Transformationen stellt die Anzahl der Knoten dar. Durch Zusammenfassung
beziehungsweise Aufteilung von Funktionalität auf eine oder mehrere Transformationen kann die
Anzahl der Knoten verändert werden. Vor den Untersuchungen wurde die Vermutung angestellt, dass
eine minimale Anzahl an Transformationen zu einer bestmöglichen Zielerreichung, insbesondere in
Bezug auf die Performance, führt. In Beispiel 5 Variante 1 wurde gezeigt, dass diese Vermutung nicht
immer richtig ist, sondern die Datenmenge hier entscheidend ist. Wenn durch eine Aufteilung, also
einen Split von Funktionalität, die Datenmenge vor aufwendigen Transformationen reduziert werden
kann, ist diese Möglichkeit sehr empfehlenswert.
In umfangreichen Beispielen kann eine Reduktion der Knoten zu einer Verbesserung der
Übersichtlichkeit führen, insbesondere da sich mit der Zahl der Knoten in der Regel auch die
Komplexität verringert. Dies ist jedoch im Einzelfall kritisch zu beurteilen. Bei einer starken
Zusammenfassung von Funktionalität kann die Transparenz leiden, vor allem dann, wenn zwischen
den zusammengefassten Funktionen eine schwache Kohäsion besteht.
5.1.1.3 Komplexität Häufig kann die Komplexität reduziert werden, indem man Attribute nicht durch alle, sondern nur
durch die Transformationen, in denen sie verarbeitet werden, führt. Hierbei ist zu beachten, dass durch
aktive Transformationen alle Attribute hindurchgeführt werden müssen. Werden Attribute an einer
aktiven Transformation vorbeigeführt, verletzt dies die Korrektheit, da die Zeilenzahl der Attribute die
die aktive Transformation durchlaufen haben und die Zeilenanzahl derer die vorbeigeführt wurden
nicht mehr übereinstimmt. Informatica PowerCenter verhindert dies jedoch automatisch.
Die Komplexität hängt hauptsächlich von der Anzahl der Knoten und ihrer jeweiligen Attribute ab.
Performance wird in erster Linie durch die Art von Transformationen und die Datenmenge bestimmt.
Die Komplexität ist ebenso wie die Anzahl der Knoten zur Beeinflussung der Performance nicht allein
aussagekräftig. In Bezug auf die Wartbarkeit sind deutlichere Zusammenhänge erkennbar, da eine
geringere Komplexität Mappings in der Regel auch übersichtlicher macht. Da bei sehr umfangreichen
Mappings auf das Konzept der Mapplets zurückgegriffen werden sollte, kann die Komplexität
zugunsten einer besseren Übersichtlichkeit in Modulen verborgen und somit die Wartbarkeit gesteigert
werden.
5.1.1.4 Länge Die Länge beschreibt die maximale Anzahl an Weiterleitungen, die ein Attribut in einem Mapping
erfährt. Jede Weiterleitung führt zu einem Verarbeitungsschritt, der mit Aufwand verbunden ist.
Hierdurch wirkt sich die Länge auf die Performance aus. Wie stark diese Beeinflussung ist, kann nicht
ETL-Design Optimierung Seite 95 von 108
anhand der Länge, sondern nur unter Betrachtung der durchgeführten Transformationen bestimmt
werden. Die Weiterleitung von Attributen hat für sich genommen einen vernachlässigbar geringen
Einfluss auf die Performance. Sekundär beeinflusst die Länge auch die Wartbarkeit, da überflüssige
Weiterleitungen die Komplexität erhöhen und somit die Übersichtlichkeit verringern.
5.1.2 Qualitative Maße
5.1.2.1 Modularität
Die Modularität ist als qualitatives Maß nicht sinnvoll in einer Zahl zu erfassen. Stattdessen wird ihre
Ausprägung, wie auch bei den anderen qualitativen Maßen, anhand einer selbst definierten Skala
dargestellt. Erst die Verwendung von Mapplets bringt Modularität mit sich, da diese die
Anforderungen eines Moduls, nämlich Kapselung von Funktionalität und Zugriff auf die Funktionen
über definierte Schnittstellen, erfüllen. Der Einsatz von Mapplets und die damit erwirkte Modularität
wirken sich in hohem Maße auf die Struktur, Übersichtlichkeit, aber auch Transparenz aus. Das
bedeutet, dass Modularität die Wartbarkeit stark beeinflusst. Ob dieser Einfluss positiv oder negativ
ausfällt, hängt von der fachlich sinnvollen Verwendung dieser Möglichkeit ab. Die Zusammenfassung
von Elementen, die untereinander eine schwache Kohäsion aufweisen, wirkt sich negativ auf die
Wartbarkeit aus. In einem solchen Fall kann ein Entwickler die Aufgabe eines Mapplets nicht mehr
ohne weiteres erkennen, sondern muss jedes Mapplet bezüglich seiner inneren Implementierung
untersuchen. Diese Intransparenz macht die Wartung schwieriger.
Neben der Wartbarkeit wirkt sich die Modularität auch maßgeblich auf die Wiederverwendbarkeit aus.
Ein Modul mit starker, funktionaler Kohäsion, geringer (eingehender) Kopplung und hoher
Universalität ist in der Regel gut wiederverwendbar. Durch die Möglichkeit der Instanziierung wird
die Wiederverwendbarkeit dabei zusätzlich positiv beeinflusst.
Direkte Auswirkungen der Modularität auf andere Ziele sind nicht festzustellen.
5.1.2.2 Kapselung Kapselung kann auf Transformations- und Modulebene auftreten. Zwischen Kapselung und
Modularität besteht ein enger Zusammenhang, da Modularität immer zu Kapselung führt oder
umgekehrt Kapselung eine Voraussetzung für Modularität ist. Aufgrund dieses engen
Zusammenhangs gibt es auch bezüglich der Zielbeeinflussung Parallelen zwischen beiden. Durch
Kapselung wird Komplexität verborgen, was sich auf die Wartbarkeit auswirkt. Dies gilt sowohl auf
Transformationsebene als auch auf Mappletebene. Auf beiden Ebenen hängt der Nutzen davon ab,
dass fachlich sinnvoll gekapselt wird. In der Regel hat Kapselung auf Mappletebene eher positive
Einflüsse auf die Wartbarkeit, auf Transformationsebene eher negative.
5.1.2.3 Universalität Universalität ist ein guter Indikator für Wiederverwendbarkeit. Sie hängt zum einen von der Art der
Transformation und der jeweiligen Positionierung ab. Es konnte gezeigt werden, dass eine
Verlagerung von Funktionalität in den Source Qualifier die Universalität in Bezug auf die
verwendbaren Quellen reduziert. Zum anderen werden Transformationen durch die Verwendung von
Parametern oder Variablen universeller.
5.1.2.4 Kohäsion Kohäsion beschreibt die funktionale Bindung zwischen Elementen eines Moduls. Einfacher formuliert
also die fachliche Zusammengehörigkeit. Ihre volle Aussagekraft entwickelt Kohäsion erst, wenn sie
ETL-Design Optimierung Seite 96 von 108
zwischen Transformationen, also auf Modulebene, betrachtet wird. Eine Erhebung der Kohäsion
zwischen den Funktionen innerhalb einer Transformation hat dagegen eine geringere Aussagekraft.
Mit Hilfe der Kohäsion kann die Qualität von Modulen in Bezug auf die Wartbarkeit und
Wiederverwendbarkeit beurteilt werden. Während Modularität und Kapselung sich je nach Auftreten
positiv oder negativ auswirken können, ist möglichst starke Kohäsion durchgängig als positiv zu
bewerten. Sie beeinflusst direkt die Auswirkungsrichtung anderer qualitativer Maße. Obwohl sie als
qualitatives Maß einer gewissen Subjektivität unterliegt und daher schwierig zu erheben ist, ist sie
eines der relevantesten Maße in Bezug auf Wartbarkeit und Wiederverwendbarkeit.
5.1.2.5 Kopplung Als letztes qualitatives Maß bleibt die Kopplung zu beurteilen. Auch sie kann auf
Transformationsebene und auf Mappletebene betrachtet werden. Auf Transformationsebene ist die
Kopplung eng mit der Komplexität verbunden und hat dort eine eher geringere Bedeutung. Große
Aussagekraft zeigt Kopplung erst beim Einsatz von Mapplets. Eine geringe Kopplung wirkt sich
positiv auf die Wartbarkeit und die Wiederverwendbarkeit aus. Hierbei ist die eingehende Kopplung
von größerer Relevanz als die ausgehende.
5.1.3 Zusammenfassung Die einzelnen Maße wirken auf unterschiedliche Ziele. Zum Teil ist die Auswirkungsrichtung auf das
Ziel, also ob eine Verbesserung oder Verschlechterung stattfindet, nicht generell eindeutig von der
Entwicklungsrichtung des Maßes, sondern von den konkreten Bedingungen im Einzelfall abhängig.
Bei den quantitativen Maßen ist die Auswirkung auf die Performance am signifikantesten. Das
einflussreichste Maß ist hierbei die Datenmenge. Die Maße Anzahl der Knoten und Komplexität
wirken sich durch ihren Einfluss auf die Übersichtlichkeit auf die Wartbarkeit aus.
Weiterhin beeinflussen Kapselung und Modularisierung die Transparenz und damit die Wartbarkeit.
Gleichzeitig wird aber auch die Wiederverwendbarkeit von diesen Maßen beeinflusst. Hierbei kann
keine eindeutige Abhängigkeit der Entwicklungsrichtung festgestellt werden. Die
Wiederverwendbarkeit steigt dementsprechend nicht proportional zur Modularität. Der Einfluss der
Länge ist in den vorgestellten Beispielen in der Regel sehr gering.
Universalität zeigt, wie der Name des Maßes vermuten lässt, starke Auswirkungen auf die
Wiederverwendbarkeit.
Bei den qualitativen Maßen sind eine gegenseitige Beeinflussung und eine Hierarchie erkennbar.
Kapselung ist ein Kriterium für Modularität, es besteht also eine einseitige Abhängigkeit zwischen den
Maßen. Kohäsion und Kopplung sind in der Hierarchie tiefer einzustufen und dienen dazu, die
qualitative Auswirkung von Änderungen der Kapselung, insbesondere aber der Modularität zu
bewerten.
Außer Kapselung und Universalität entwickeln die qualitativen Maße ihre volle Aussagekraft erst bei
der Verwendung von Mapplets. Eine Untersuchung von Modularität, Kohäsion und Kopplung ist also
erst auf einer höheren Strukturebene sinnvoll.
ETL-Design Optimierung Seite 97 von 108
5.2 Klassifizierung von Mappings Zur Entscheidung, welche Ziele priorisiert werden sollen, ist es sinnvoll, neben den Anforderungen,
die von außen an das Szenario gestellt werden, das Mapping selber zu klassifizieren.
Nach den Erfahrungen des Autors können drei Grundklassen von Mappings unterschieden werden.
Diese sind nicht scharf voneinander abgegrenzt, sondern gehen teilweise ineinander über. Außerdem
können sie in Kombinationen auftreten.
1. Datenintensive Mappings: Mappings, in denen sehr große Datenmengen verarbeitet werden,
erfordern in der Regel eine besonders gute Performance. In Bezug auf die Datenmenge sollte
zwischen eingehenden und ausgehenden Daten unterschieden werden. Wird die Datenmenge
innerhalb eines Mappings reduziert, ist es sinnvoll, den Faktor dieser Reduktion zu betrachten.
Diese Werte helfen dabei, den Nutzen von Umpositionierungen einzelner Transformationen
abzuschätzen. Je größer die Reduktion der Daten in einer Transformation ist, desto mehr
profitiert die Performance von ihrer frühen Positionierung.
2. Mappings für komplexe Berechnungen: Werden in einem Mapping sehr komplizierte
Berechnungen durchgeführt, ist eine hohe Wiederverwendbarkeit erstrebenswert. Diese kann
beispielsweise dadurch erzielt werden, dass diese Berechnungen in einem
wiederverwendbaren Mapplet eingebettet werden. Sollte dieselbe Berechnung in einem
anderen Szenario erneut benötigt werden, kann darauf zurückgegriffen werden, wodurch der
Entwicklungsaufwand erheblich sinken kann.
3. Mappings zur Verarbeitung kompliziert strukturierter Daten: Werden Daten aus
möglicherweise vielen Quellen nach nicht trivial nachvollziehbaren Kriterien in eine
gemeinsame Struktur überführt, spielt die Wartbarkeit eine wichtige Rolle. Da Mappings mit
der Anzahl der Knoten und steigender Komplexität unübersichtlicher werden, wird es
schwierig, die Strukturen nachzuvollziehen. Im Falle von Wartungsarbeiten können
Zusammenhänge schnell übersehen werden und Mappings dadurch in einen invaliden Zustand
gebracht werden. Noch kritischer ist eine Verletzung der Korrektheit bei der Ausführung, die
durch Änderungen verursacht werden kann und erst zur Laufzeit auftritt.
Durch Zuordnung eines Mappings zu einer oder mehreren dieser Klassen kann eine Gewichtung von
Designzielen vorgenommen werden. Falls die Ziele untereinander in Konflikt stehen, kann durch eine
Klassifizierung ein Ansatz gefunden werden, der den für das jeweilige Szenario besten Kompromiss
darstellt.
5.3 Designempfehlungen Mit Hilfe der definierten Maße und Ziele und unter Berücksichtigung der Untersuchungsergebnisse
dieser Arbeit lassen sich Empfehlungen für das Design von Mappings herleiten. Da in
unterschiedlichen Szenarien verschiedene Ziel verfolgt werden, werden Empfehlungen jeweils für die
Maximierung dieser angegeben. Wenn sich durch Maßnahmen Wechselwirkungen mit anderen Zielen
ergeben, werden diese auch aufgezeigt.
5.3.1 Wartbarkeit Wartbarkeit profitiert von Übersichtlichkeit und Transparenz. Oftmals wird jedoch gleichzeitig mit
einer verbesserten Übersichtlichkeit die Transparenz verringert. Übersichtlichkeit wird durch
ETL-Design Optimierung Seite 98 von 108
Reduzierung der Anzahl der Knoten und Komplexität erzielt. Auch die fachlich sinnvolle
Modularisierung mit Mapplets trägt hierzu bei.
Eine Optimierungsmöglichkeit ohne Wechselwirkungen ist die Komplexität zu senken, indem nur
Ports verbunden werden, die in der jeweiligen Transformation auch verarbeitet werden.
Auch der Austausch einer Transformation durch eine andere kann, durch Reduzierung der Knotenzahl
und der Komplexität, die Übersichtlichkeit und damit die Wartbarkeit verbessern. Hierbei treten zum
Teil aber große Wechselwirkungen mit anderen Zielen auf, wie an den vorgestellten Beispielen zu
erkennen war.
Die Reduzierung der Knotenzahl durch Zusammenfassung mehrerer Transformationen kann auch zu
einer besseren Übersichtlichkeit führen, allerdings muss hier darauf geachtet werden, dass die
Transparenz nicht über Gebühr leidet.
Gleiches gilt für den Einsatz von Mapplets. Diese bringen Struktur in Mappings und unterteilen diese
in kleinere Module. Damit die Wartbarkeit von der gesteigerten Übersichtlichkeit profitiert, muss eine
ausreichende Transparenz sicher gestellt werden. Dies wird erreicht, indem nur Transformationen, die
untereinander eine starke, funktionale Kohäsion aufweisen, in einem Mapplet zusammengefasst
werden.
Wiederverwendung durch Instanziierung von Transformationen kann die Wartbarkeit stark verbessern.
Wird die Reusable-Funktionalität genutzt, müssen mehrfach eingesetzte Transformationen bei
Wartungen nur noch an einer Stelle angepasst werden. Veränderungen wirken sich auf alle Instanzen
aus. Das Arbeiten mit Instanzen birgt jedoch auch Risiken, da die Abhängigkeit der Transformationen
gerade beim mappingübergreifenden Einsatz schnell übersehen werden kann.
Sehr wichtig und ohne Wechselwirkungen irgendeiner Art ist die Einführung und Anwendung von
Namenskonventionen. Bei jeder Transformation und jedem Mapplet sollte die Funktionalität anhand
des Namens erkennbar sein, ohne dass es hierfür bezüglich seiner Implementierung untersucht werden
muss. Insbesondere bei Mapplets trägt eine starke, funktionale Kohäsion dazu bei, dass die Benennung
leichter möglich ist.
5.3.2 Wiederverwendbarkeit Wiederverwendbarkeit wird stark durch das qualitative Maß Universalität beeinflusst.
Verschiedene Transformationen können unterschiedlich universell sein, zum Beispiel in Bezug auf die
damit nutzbaren Quellen. Da häufig für die gleichen Anforderungen unterschiedliche
Transformationen genutzt werden können, kann zur Steigerung der Wiederverwendbarkeit eine
universellere Transformation gewählt werden.
Auch Parameter steigern die Universalität und damit die Wiederverwendbarkeit. Auf Mappingebene
werden durch Parameter beispielsweise Prüfbedingungen universell gehalten. Auf Session und
Workflowebene können Einstellungen wie Dateipfade oder Verbindungsinformationen für Quellen
und Ziele mit Parametern dynamisch gestaltet werden.
In Mapplets können fachliche Aufgaben, die aus mehreren Transformationsschritten bestehen, zu
einem Modul zusammengefasst werden. Dieses kann anschließend in verschiedenen Szenarien
ETL-Design Optimierung Seite 99 von 108
wiederverwendet werden. Besonders positiv wirken sich bei Mapplets eine geringe eingehende
Kopplung bei gleichzeitig starker, funktionaler Kohäsion der integrierten Transformationen aus.
5.3.3 Performance Durch die durchgeführten Untersuchungen wird die Vermutung gestützt, dass Performance in erster
Linie von der Datenmenge und den auf den Daten durchgeführten Operationen abhängt. Außerdem
hängt die Performance in hohem Maß von den technischen Spezifikationen der Laufzeitumgebung ab.
Wann immer es möglich ist, sollte die Datenmenge so früh wie möglich reduziert werden. Dies erfolgt
beispielsweise bei der Selektion in Filtertransformationen und bei Aggregationen. Verbesserungen
können hierbei durch eine Umpositionierung der entsprechenden Transformationen erzielt werden.
Eine weitere Möglichkeit besteht in der Auslagerung von Funktionalität in den Source Qualifier.
Durch diese Maßnahme können teilweise sehr deutliche Verbesserungen der Performance erreicht
werden. Dies hängt jedoch maßgeblich von technischen Rahmenbedingungen wie Nutzung von
Indizes auf Datenbanken und der Ausstattung und Auslastung der beteiligten Systeme ab. Aufgrund
dieser Abhängigkeit kann diese Optimierungsmaßnahme nicht mehr als rein designkonzeptionelle
angesehen werden.
Daneben kann ein Austausch von Transformationen je nach Struktur und Datenausprägung der
zugrunde liegenden Quellen Performanceverbesserungen bringen. Dies wurde in der Betrachtung
Lookup vs. Join exemplarisch gezeigt.
Viele Transformationen profitieren bezüglich der Performance stark von einer Vorsortierung der
Daten. Beispiele hierfür sind Joiner, Lookups und Aggregatoren.
Andere quantitative Maße außer der Datenmenge haben einen sehr viel geringeren Einfluss auf die
Performance. Daraus folgt, dass diese Maße extrem reduziert werden müssen, bevor eine
Verbesserung der Performance festgestellt werden kann. Da eine solche Minimierung der
quantitativen Maße aber meist negative Auswirkungen auf die Wartbarkeit hat, kann dies nicht als
regelmäßiger Optimierungsweg empfohlen werden.
Eine weitere Möglichkeit, die im Rahmen dieser Arbeit nicht getestet werden konnte, stellt die
sogenannte Push Down Optimization dar. Der Integrationsdienst verschiebt dabei Aktivitäten, deren
frühere Ausführung Performanceverbesserungen bringen, zum Beispiel Filter, rückwärts im
Datenstrom in Richtung der Quellen. Vorteil dabei ist, dass Mappings mit einem Fokus auf Ziele wie
Wartbarkeit und Wiederverwendbarkeit entwickelt werden können, während die Performance
nachträglich vom System optimiert wird. Die Push Down Optimization wird zur Laufzeit
vorgenommen, so dass sie in der Modellierung nicht erkennbar ist. In Informatica PowerCenter 8 ist
die Push Down Optimization ein Funktionsmerkmal, für das eine separate Lizenz benötigt wird. Diese
war im Rahmen dieser Arbeit jedoch nicht verfügbar.
5.3.4 Zuverlässigkeit Die Zuverlässigkeit hängt in erster Linie von fachlich richtiger Modellierung ab. Sobald die
Korrektheit gewährleistet ist, wirken sich eher die technischen Rahmenbedingungen auf die
Zuverlässigkeit aus.
ETL-Design Optimierung Seite 100 von 108
In Parameterdateien kann der Zugriff auf benötigte Ressourcen zentral verwaltet werden. Außerdem
können darin Optionen, die bei der Ausführung von Sessions einbezogen werden sollen,
beispielsweise Cachegrößen, definiert werden. Beides kann die Zuverlässigkeit verbessern.
Da die Ausführung einer Session in der Praxis sehr zeitaufwendig werden kann, stellt eine frühe
Erkennung von Fehlern und die damit verlängerte Reaktionszeit im Fehlerfall eine Möglichkeit dar,
die Anforderungen innerhalb des gesetzten Zeitrahmens korrekt zu erfüllen. Unter diesem
Gesichtspunkt ist es sinnvoll, kritische Transformationen, also solche, bei deren Ausführung es mit
höherer Wahrscheinlichkeit zu Fehlern kommen kann, früh in den Datenstrom einzubinden.
ETL-Design Optimierung Seite 101 von 108
6 Zusammenfassung und Ausblick
Ziel dieser Arbeit war es, ETL Design zu problematisieren, relevante Ziele und darauf wirkende Maße
zu identifizieren und verschiedene Designvarianten zu diskutieren.
Nach der Einleitung, in der Ziel, Rahmen und Motivation dieser Arbeit vorgestellt wurden, wurde in
Kapitel 2 eine kurze Einführung in die ETL-Grundlagen gegeben. Hierbei wurden Bestandteile,
Einsatzszenarien und der prinzipielle Ablauf von ETL Prozessen gezeigt. Danach folgte eine
Einführung in Informatica PowerCenter 8, das für die praktischen Untersuchungen dieser Arbeit
verwendete ETL Werkzeug.
Anschließend wurden in Kapitel 3 Designziele und Maße vorgestellt. Die identifizierten Designziele
sind Korrektheit, Wartbarkeit, Wiederverwendbarkeit, Performance und Zuverlässigkeit.
Diese Ziele werden von verschiedenen, quantitativen und qualitativen Maßen beeinflusst. Die
quantitativen werden durch Datenmenge, Anzahl der Knoten, Länge und Komplexität repräsentiert.
Qualitative Maße sind Modularität, Kapselung, Kohäsion und Kopplung.
In Kapitel 4 wurde zuerst ein geeignetes Beispielszenario eingeführt. Darauf folgte die Untersuchung
der sechs Optimierungsansätze:
• Positionstausch
• Austausch von Transformationen
• Zusammenfassen und Aufteilen
• Strukturierung mit Mapplets
• Parametrisierung
• Sortierung von Daten
anhand von Beispielen.
Jede dieser Analysen wurde nach dem zuvor festgelegten, einheitlichen Schema durchgeführt.
Ausgehend von einem Beispiel, wurden verschiedene Varianten desselben vorgestellt und jeweils die
Veränderungen der Maße untersucht. Darauf folgte für jedes Beispiel die Bewertung der aus den
Veränderungen resultierenden Auswirkungen auf die Ziele. Unter Berücksichtigung der
Zusammenhänge zwischen Maßen und Zielen wurde nach Betrachtung der Beispiele jeder
Optimierungsansatz bewertet und sein Nutzen, zum Teil aber auch potentielle Risiken, dargestellt.
Die Untersuchungen zeigten dabei deutlich, dass bei keinem Ansatz von einer generellen
Verbesserung der Zielerfüllung ausgegangen werden kann, sondern jeder Einzelfall unter
Berücksichtigung der zu verarbeitenden Daten betrachtet und der Nutzen von Veränderungen kritisch
überprüft werden muss. Verschärft wird die Notwendigkeit kritischer Betrachtung durch die
Wechselwirkungen zwischen den Maßen. So führte die Verlagerung eines Filters in den Source
Qualifier zu einer Verringerung aller quantitativen Maße, gleichzeitig stieg die Kapselung. Hieraus
resultierte eine Verbesserung der Performance bei gleichzeitiger Verschlechterung von Wartbarkeit
und Wiederverwendbarkeit. Grundsätzlich muss eine Zielgewichtung durch den Entwickler
vorgenommen werden, da die Beispiele zeigten, dass eine zeitgleiche Verbesserung aller Ziele in der
Regel nicht möglich ist. Trotz aller Einschränkungen konnten in den Beispielen zum Teil sehr positive
ETL-Design Optimierung Seite 102 von 108
Auswirkungen der Ansätze nachvollzogen werden. Eine Untersuchung von Szenarien anhand dieser
Ansätze ist also grundsätzlich empfehlenswert.
Um die unterschiedliche Aussagekraft der Maße und ihre zum Teil in Bezug auf die Ziele bestehende
Wechselwirkung weiter zu problematisieren, wurden diese in Kapitel 5 bewertet. Hierbei wurde durch
die Zusammenfassung der zuvor gewonnenen Erkenntnisse ihr Einfluss auf die Ziele dargestellt. Als
das wichtigste quantitative Maß wurde die Datenmenge festgestellt. Sie hat immer einen direkten
Einfluss auf die Performance eines ETL-Prozesses. Die Auswirkung der anderen quantitativen Maße
war nicht eindeutig, so dass deren Auswirkung für jeden Einzelfall betrachtet werden muss. Zwischen
den qualitativen Maßen wurden Abhängigkeiten aufgezeigt. Außerdem wurde als Ergebnis der
Untersuchungen der Beispiele festgestellt, dass einige Maße erst bei Einsatz von Modulen, in den
Beispielen durch Mapplets repräsentiert, sinnvoll erhoben werden können. Kohäsion wurde als eines
der wichtigsten qualitativen Maße identifiziert. Dieses Maß erreicht seine volle Aussagekraft zwar
auch erst bei der Verwendung von Mapplets, erlaubt es dann aber zu bewerten, ob sich Kapselung und
Modularität positiv auf Wartbarkeit und Wiederverwendbarkeit auswirken.
Nach der Bewertung der Maße wurde eine auf den Erkenntnissen dieser Arbeit basierende
Klassifizierung von Mappings vorgestellt. Es wurden drei Klassen festgestellt: Datenintensive,
berechnungsintensive und strukturkomplexe Mappings. Ein Mapping kann durchaus mehreren
verschiedenen Klassen gleichzeitig angehören. Die (anteilige) Zuordnung von Mappings zu den drei
Klassen erleichtert die Zielgewichtung.
Zum Schluss wurden generelle Designempfehlungen, die aus den vorgenommenen Untersuchungen
abgeleitet wurden, ausgesprochen. Aufgrund der Problematik, dass eine gleichzeitige Optimierung
verschiedener Ziele in der Regel nicht möglich ist, wurden Designempfehlungen für jedes einzelne
Ziel getrennt gegeben.
Diese Empfehlungen führen nicht zwangsläufig zu einem optimalen Design, dafür sind die
Zusammenhänge zu komplex. Sie helfen aber dabei, typische Fehler zu vermeiden und somit den
angestrebten Zielen deutlich näher zu kommen.
In der Einleitung wurde festgestellt, dass ETL-Design stark von der Erfahrung und der Intuition der
jeweiligen Entwickler geprägt ist. Vermutlich wird sich dies auch in näherer Zukunft nicht so schnell
ändern, da diesbezüglich der Änderungsdruck nicht groß genug ist. Mit der in dieser Arbeit
vorgestellten Herangehensweise an die Bewertung und Optimierung von ETL-Design wird dazu
beigetragen, dass eine gemeinsame „Sprache“ entsteht, mit der man fachliche Fragen des ETL-
Designs besser diskutieren kann. Dies soll schließlich zu kontinuierlichen Verbesserungen im
Designprozess führen.
Nicht Bestandteil der Untersuchungen dieser Arbeit waren Data Warehouse spezifische Fragen der
Modellierung. Außerdem wurden ETL Prozesse nur auf der Ebene des Designs und die Beispiele nur
anhand des Werkzeugs Informatica PowerCenter 8 untersucht. Sowohl die Untersuchung der in dieser
Arbeit gewonnenen Erkenntnisse in Data Warehouse Szenarien als auch eine Betrachtung unter
Verwendung eines anderen ETL-Werkzeugs können Inhalt weiterer Forschung sein. Da der Rahmen
dieser Arbeit begrenzt war und dadurch nur einige Beispiele untersucht werden konnten, bietet sich
außerdem die Analyse weiterer Beispiele an, um die in dieser Arbeit gewonnenen Erkenntnisse zu
ETL-Design Optimierung Seite 103 von 108
vertiefen und zu festigen. Es ist denkbar, dass dabei weitere Ziele und Maße identifiziert werden
können.
Die Erkenntnisse dieser Arbeit in bestehende Vorgehensmodelle aus dem ETL-Kontext im
Allgemeinen und dem Data Warehouse Kontext im Speziellen zu integrieren und diese
Vorgehensmodelle gegebenenfalls weiterzuentwickeln, ist eine weitere Herausforderung für
zukünftige Forschung.
ETL-Design Optimierung Seite 104 von 108
a. Tabellenverzeichnis
Tabelle 1: Übersicht über die Transformationen in Informatica PowerCenter 8 (Informatica,
PowerCenter Transformation Guide, 2006).......................................................................................... 17
Tabelle 2: Symbolik zur Bewertung der Zielerfüllung........................................................................... 25
Tabelle 3: Ausprägung der qualitativen Einflussfaktoren..................................................................... 26
Tabelle 4: Datenmengen im Beispielszenario ....................................................................................... 34
Tabelle 5: Fallbeispiel 1 - Ausgangsbeispiel - Quantitative Maße ....................................................... 36
Tabelle 6: Fallbeispiel 1 - Ausgangsbeispiel - Qualitative Maße ......................................................... 37
Tabelle 7: Fallbeispiel 1 - Ausgangsbeispiel - Übersicht über die Ziele .............................................. 37
Tabelle 8: Fallbeispiel 1 - Variante 1 - Quantitative Maße .................................................................. 39
Tabelle 9: Fallbeispiel 1 - Variante 1 - Qualitative Maße .................................................................... 39
Tabelle 10: Fallbeispiel 1 - Variante 1 - Zielerfüllung ......................................................................... 40
Tabelle 11: Fallbeispiel 1 – Variante 2 - Quantitative Maße ............................................................... 42
Tabelle 12: Fallbeispiel 1 – Variante 2 - Qualitative Maße ................................................................. 42
Tabelle 13: Übersicht über die Zielerfüllung der Varianten................................................................. 43
Tabelle 14: Fallbeispiel 2 - Variante 1 - Quantiative Maße ................................................................. 49
Tabelle 15: Fallbeispiel 2 - Variante 1 - Qualitative Maße.................................................................. 49
Tabelle 16: Fallbeispiel 2 – Vergleich der Zielerfüllung ...................................................................... 50
Tabelle 17: Fallbeispiel 3 - Ausgangsbeispiel - Quantitative Maße ..................................................... 53
Tabelle 18: Fallbeispiel 3 - Ausgangsbeispiel - Qualitative Maße ....................................................... 53
Tabelle 19: Fallbeispiel 3 – Variante 1 - Quantitative Maße ............................................................... 55
Tabelle 20: Fallbeispiel 3 – Variante 1 - Qualitative Maße ................................................................. 55
Tabelle 21: Fallbeispiel 3 – Variante 1 - Zielerfüllung bei Lookup statt Join ...................................... 57
Tabelle 22: Fallbeispiel 4 – Ausgangsbeispiel - Quantitative Maße .................................................... 60
Tabelle 23: Fallbeispiel 4 – Ausgangsbeispiel - Qualitative Maße ...................................................... 60
Tabelle 24: Fallbeispiel 4 – Ausgangsbeispiel – Zielerfüllung............................................................. 61
Tabelle 25: Fallbeispiel 4 – Variante 1 - Quantitative Maße ............................................................... 62
Tabelle 26: Fallbeispiel 4 – Variante 1 - Qualitative Maße ................................................................. 63
Tabelle 27: Fallbeispiel 4 – Zielerfüllung – Vergleich der Varianten .................................................. 64
Tabelle 28: Fallbeispiel 5 – Ausgangsbeispiel - Quantitative Maße .................................................... 71
Tabelle 29: Fallbeispiel 5 – Ausgangsbeispiel - Qualitative Maße ...................................................... 71
Tabelle 30: Fallbeispiel 5 – Ausgangsbeispiel - Zielerfüllung.............................................................. 72
Tabelle 31: Fallbeispiel 5 – Variante 1 - Quantitative Maße ............................................................... 77
Tabelle 32: Fallbeispiel 5 – Variante 1 - Qualitative Maße ................................................................. 77
Tabelle 33: Fallbeispiel 5 – Variante 1 - Zielerfüllung......................................................................... 78
Tabelle 34: Fallbeispiel 5 – Variante 2 – Quantitative Maße............................................................... 83
Tabelle 35: Fallbeispiel 5 – Variante 2 – Qualitative Maße................................................................. 83
Tabelle 36: Fallbeispiel 5 – Variante 2 – Zielerfüllung........................................................................ 86
Tabelle 37: Fallbeispiel 5 – Variante 3 – Quantitative Maße............................................................... 91
Tabelle 38: Fallbeispiel 5 – Variante 3 – Qualitative Maße................................................................. 91
Tabelle 39: Fallbeispiel 5 – Variante 3 – Zielerfüllung........................................................................ 92
ETL-Design Optimierung Seite 106 von 108
b. Abbildungsverzeichnis
Abbildung 1 Expression Transformation mit Ein- und Ausgabeports................................................... 15
Abbildung 2 Expression Transformation Detailansicht ........................................................................ 16
Abbildung 3: Einfaches Mapping mit Filter.......................................................................................... 18
Abbildung 4 Mapping ohne Mapplets ................................................................................................... 20
Abbildung 5: Mapplet MLTP_EXTRACT_AND_JOIN_SOURCES...................................................... 21
Abbildung 6 Mapping mit Mapplet ....................................................................................................... 21
Abbildung 7: Schematische Darstellung der Fremdschlüsselbeziehungen........................................... 33
Abbildung 8: Fallbeispiel 1 –Ausgangsbeispiel - Filtertransformation................................................ 35
Abbildung 9: Fallbeispiel 1 - Variante 1 - Nach vorne verschobener Filter ........................................ 38
Abbildung 10: Fallbeispiel 1 - Variante 2 - Filterung im Source Qualifier.......................................... 40
Abbildung 11: Master- und Detailpipeline bei einer Joinertransformation (Informatica, PowerCenter
Transformation Guide, 2006, S. 266).................................................................................................... 45
Abbildung 12: Fallbeispiel 2 – Ausgangsbeispiel – Expliziter Join...................................................... 47
Abbildung 13: Fallbeispiel 2 – Variante 1 – Joinen im Source Qualifier............................................. 48
Abbildung 14: Fallbeispiel 3 – Ausgangsbeispiel ................................................................................. 53
Abbildung 15: Fallbeispiel 3 – Variante 1 – Lookup statt Join ............................................................ 54
Abbildung 16: Fallbeispiel 4 – Ausgangsbeispiel - Berechnung der Aufgabenkosten.......................... 59
Abbildung 17: Fallbeispiel 4 – Variante 1 – Umsetzung mit Lookuptransformation ........................... 61
Abbildung 18: Fallbeispiel 5 – Ausgangsbeispiel - Zusammenführen der Quellen .............................. 67
Abbildung 19: Fallbeispiel 5 – Ausgangsbeispiel - Aggregation SUM_HOURS_PER_PROJECT ..... 68
Abbildung 20: Fallbeispiel 5 – Ausgangsbeispiel - Expression Transformation CALCULATE_COST69
Abbildung 21: Fallbeispiel 5 – Ausgangsbeispiel - Aggregation SUM_COST_PER_PROJECT......... 69
Abbildung 22: Fallbeispiel 5 – Ausgangsbeispiel - Gesamtübersicht................................................... 70
Abbildung 23: Fallbeispiel 5 – Variante 1 - Ausgangssituation mit zwei Aggregationen .................... 73
Abbildung 24: Fallbeispiel 5 – Variante 1 - Zielsituation mit einer Aggregation ................................ 73
Abbildung 25: Fallbeispiel 5 – Variante 1 - Kostenkalkulation auf Basis der TASK_LOG Einträge .. 74
Abbildung 26: Fallbeispiel 5 – Variante 1 - Aggregation der Projektkosten und geleisteten Stunden. 75
Abbildung 27: Fallbeispiel 5 – Variante 1 - Gesamtübersicht.............................................................. 75
Abbildung 28: Fallbeispiel 5 – Variante 2 – potentielle Mapplets ....................................................... 79
Abbildung 29: Fallbeispiel 5 – Variante 2 – Mapplet
MLTP_CALCULATE_COST_PER_PROJECT_AND_COSTCODE zur Vorbereitung der Projektkosten
............................................................................................................................................................... 80
Abbildung 30: Fallbeispiel 5 – Variante 2 – Mapplet MLTP_CURRENCY_CONVERSION zur
Berechnung der Projektkosten in Fremdwährungen............................................................................. 80
Abbildung 31: Fallbeispiel 5 – Variante 2 – starke Kapselung durch den Einsatz von Mapplets........ 81
Abbildung 32: Fallbeispiel 5 - Variante 3 - Filterparameter................................................................ 87
Abbildung 33: Fallbeispiel 5- Variante 3 - Teilabbildung 1 ................................................................. 89
Abbildung 34: Fallbeispiel 5- Variante 3 - Teilabbildung 2 ................................................................. 89
ETL-Design Optimierung Seite 107 von 108
c. Literaturverzeichnis
Balzert, H. (2005). Lehrbuch der Objektmodellierung - Analyse und Entwurf mit der UML2 - 2.
Auflage. München: Elsevier GmbH.
Balzert, H. (1998). Lehrbuch der Software-Technik. Heidelberg: Spektrum, Akademischer Verlag.
Bange, C. (2006). Werkzeuge für Business Intelligence. (H. Baars, Hrsg.) HMD Praxis der
Wirtschaftsinformatik - Business & Competitive Intelligence , 247.
Bauer, A., & Günzel, H. (2004). Data-Warehouse Systeme - Architektur, Entwicklung, Anwendung.
Heidelberg: dpunkt.
Goeken, M. (2006). Entwicklung von Data-Warehouse-Systemen Anforderungsmanagement,
Modellierung, Implementierung. Wiesbaden: Deutscher Universitätsverlag | GWV Fachverlage
GmbH.
Informatica, C. (2006). Informatica PowerCenter Designer Guide 8.1. Informatica.
Informatica, C. (2006). PowerCenter Transformation Guide. Redwood / CA, USA.
Informatica, C. (2006). Workflow Administrator Guide 8.1. Informatica.
Inmon, W. (2002). Building the Data Warehouse. New York: John Wiley & Sons Inc.
Kimball, R., & Caserta, J. (2004). The Data Warehouse ETL Toolkit. Indianapolis: Wiley Publishing
Inc.
Kimball, R., Reeves, L., Ross, M., & Thornthwaite, W. (1998). The Data Warehouse Lifecycle
Toolkit. New York: John Wiley & Sons, Inc.
Kurz, A. (1999). Datawarehousing enabling technology. mitp.
Lehner, W. (2003). Datenbanktechnologie für Data-Warehouse Systeme: Konzepte und Methoden.
Heidelberg: dpunkt Verlag.
Liggesmeyer, P. (2002). Softwarequalität: Testen, Analysieren und Verifizieren von Software.
Heidelberg: Spektrum , Akademischer Verlag.
Luján-Mora, S., Vassiliadis, P., & Trujillo, J. (2004). Data Mapping Diagramms for Data Warehouse
Design with UML. Proceedings of the 23rg International Conference on Conceptional Modeling.
Lectures Notes in Computer Science, Springer.
Parnas, D. L. (1971). Information Distribution Aspects of Design Methodology. Ljubljana.
Simitsis, A., Vassiliadis, P., & Sellis, T. (2005). Logical Optimization of ETL Workflows. Athen.
ETL-Design Optimierung Seite 108 von 108
Vassiliadis, P., Simitsis, A., & Skiadopoulus, S. (2002). Modelling ETL Activities as Graphs.
Proceedings of the 4th Int'l Workshop on the Design and Management of Data Warehouses. CEUR
Workshop Proceedings.
Vassiliads, P., Simitsis, A., Terrovitis, M., & Skiadopoulos, S. (2005). Blueprints and Measures for
ETL Workflows. Heidelberg: Springer-Verlag.
Vossen, G. (2000). Datenmodelle, Datenbanksprachen und Datenbankmanagementsyteme 4. Auflage.
München: Oldenbourg Wissenschaftsverlag GmbH.