Diplombericht Master Thesis
Diplombericht Master Thesis
Diplombericht Master Thesis
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Diplombericht</strong> <strong>Master</strong> <strong>Thesis</strong><br />
Lightweight DWH Interface<br />
in der Firma Emmi Schweiz AG<br />
Abstract<br />
Diese Arbeit beinhaltet das Entwickeln einer Schnittstellentechnik, welche die Daten von<br />
einem Quellsystem in ein Datawarehouse überträgt. Hauptziel ist, die heutige Belastung der<br />
Quellsysteme um mindestens 70% zu verringern. Auch soll der Konfigurationsaufwand neuer<br />
Schnittstellen minimiert werden.<br />
Klasse.Nr / Datum: MAS-07-01.21 / 27. August 2009<br />
Experte:<br />
Betreuer:<br />
Student:<br />
Thomas Glauser, Lährenbühlstrasse 14b , 8112 Otelfingen<br />
Tel. P: +41 79 217 66 82<br />
Tel. G: +41 52 261 57 58<br />
E-Mail: thomas.glauser.di@bluewin.ch<br />
Urs Müller, Forelstrasse 1, 3072 Ostermundigen<br />
Tel. G: +41 31 930 24 84<br />
E-Mail: urs-b.mueller@emmi.ch<br />
Stefan Lüthi, Allmendingenstrasse 16, 3608 Thun<br />
Tel. P: +41 79 458 46 84<br />
Tel. G: +41 31 930 24 88<br />
E-Mail: stefan.luethi@emmi.ch<br />
Keywords:<br />
10.09.2009<br />
Datenbank, Datawarehouse, Oracle, ETL, Schnittstelle<br />
Seite 1 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Änderungskontrolle<br />
Version Datum Autor Bemerkungen<br />
0.1 27.08.2009 Stefan Lüthi Erstellung<br />
0.2 30.08.2009 Stefan Lüthi Testing & Planung<br />
0.3 06.09.2009 Stefan Lüthi Anhang & Change Requests<br />
0.4 08.09.2009 Stefan Lüthi Erfahrungen und Schlusswort<br />
1.0 10.11.2009 Stefan Lüthi Fertigstellung<br />
Review / Prüfung<br />
Version Prüfdatum Prüfende Stelle Bemerkungen<br />
Referenzierte Dokumente<br />
Version<br />
Dokument<br />
10.09.2009 Seite 2 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Inhaltsverzeichnis<br />
1 Allgemeines......................................................................................................... 6<br />
1.1 Dokument ........................................................................................................ 6<br />
1.1.1 Zweck.......................................................................................................... 6<br />
1.1.2 Umfang........................................................................................................ 6<br />
1.1.3 Leserkreis.................................................................................................... 6<br />
1.1.4 Übersicht..................................................................................................... 6<br />
1.1.5 Begriffe und Definitionen ............................................................................. 6<br />
1.1.6 Nomenklatur................................................................................................ 6<br />
2 Projektübersicht.................................................................................................. 7<br />
2.1 Allgemeine Beschreibung ................................................................................ 7<br />
2.1.1 ETL Prozess................................................................................................ 7<br />
2.1.2 Ladeprozess kleine Tabellen ....................................................................... 8<br />
2.1.3 Ladeprozess grosser Tabellen ................................................................... 8<br />
2.2 Problemstellung............................................................................................... 9<br />
2.3 Projektziele...................................................................................................... 9<br />
2.4 Mögliche Lösungen........................................................................................ 10<br />
2.4.1 LogMiner (erste Vision) ............................................................................. 10<br />
2.4.2 Timestamp / Change Key Column ............................................................. 11<br />
2.4.3 Tabel differencing...................................................................................... 11<br />
2.4.4 Oracle Change Data Capture .................................................................... 12<br />
2.5 Entscheid....................................................................................................... 13<br />
2.5.1 Erklärung zur Bewertung ........................................................................... 13<br />
3 Analyse .............................................................................................................. 15<br />
3.1 Change Data Capture.................................................................................... 15<br />
3.1.1 Architektur ................................................................................................. 15<br />
3.1.1.1 Publisher......................................................................................... 16<br />
3.1.1.2 Source Tabelle................................................................................ 16<br />
3.1.1.3 Change Source............................................................................... 16<br />
3.1.1.4 Change Set..................................................................................... 16<br />
3.1.1.5 Change Table ................................................................................. 16<br />
3.1.1.6 Subscriber....................................................................................... 16<br />
3.1.2 Change Data Capture Modus .................................................................... 17<br />
3.2 Applikation..................................................................................................... 18<br />
3.2.1 Pakete....................................................................................................... 18<br />
3.2.2 Use Case Diagramm (Publish) .................................................................. 19<br />
3.2.3 Übersicht Use Cases (Publish).................................................................. 20<br />
3.2.4 Aktoren...................................................................................................... 20<br />
3.2.5 Detailbeschreibung Use Cases (Publish)................................................... 21<br />
3.2.5.1 Programm starten ........................................................................... 21<br />
3.2.5.2 Login............................................................................................... 22<br />
3.2.5.3 Destinationsystem konfigurieren ..................................................... 23<br />
3.2.5.4 Change Source konfigurieren.......................................................... 24<br />
3.2.5.5 Change Source löschen.................................................................. 26<br />
3.2.5.6 Change Set konfigurieren ............................................................... 28<br />
3.2.5.7 Change Set löschen........................................................................ 30<br />
3.2.5.8 Changetabelle ändern..................................................................... 32<br />
3.2.5.9 Changetabelle purgen..................................................................... 34<br />
10.09.2009 Seite 3 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.10 Changetabelle erstellen ................................................................ 35<br />
3.2.5.11 Change Tabelle löschen ............................................................... 38<br />
3.2.5.12 Sourcesystem konfigurieren.......................................................... 39<br />
3.2.6 Use Case Diagramm (Subscribe) .............................................................. 40<br />
3.2.7 Übersicht Use Cases (Subscribe).............................................................. 40<br />
3.2.8 Spezifikation GUI....................................................................................... 41<br />
3.2.8.1 Tree View........................................................................................ 41<br />
3.2.8.2 Menu Bar ........................................................................................ 41<br />
3.2.8.3 Toolbar............................................................................................ 42<br />
3.2.8.4 Kontext Menu auf TreeView ............................................................ 42<br />
3.2.8.5 Statusbar ........................................................................................ 42<br />
4 Design ................................................................................................................ 43<br />
4.1 Applikation..................................................................................................... 43<br />
4.1.1 Übersicht Struktur...................................................................................... 43<br />
4.1.2 Source Code ............................................................................................. 44<br />
4.2 Datenbank ..................................................................................................... 45<br />
4.2.1 DB Model DWH (Destination System) ....................................................... 45<br />
4.2.1.1 all_change_sources ........................................................................ 45<br />
4.2.1.2 all_change_sets.............................................................................. 45<br />
4.2.1.3 all_change_tables ........................................................................... 45<br />
4.2.1.4 all_published_columns.................................................................... 45<br />
4.2.1.5 all_tables......................................................................................... 46<br />
4.2.2 DB Model Source Datenbank .................................................................... 46<br />
4.2.2.1 all_tab_columns .............................................................................. 46<br />
4.2.2.2 all_tables......................................................................................... 46<br />
4.2.2.3 all_capture_prepared_tables........................................................... 46<br />
5 Testing ............................................................................................................... 47<br />
5.1 Ziel des Testens ............................................................................................ 47<br />
5.2 Übersicht der Tests........................................................................................ 47<br />
5.3 Testablauf...................................................................................................... 47<br />
5.3.1 Ablauf........................................................................................................ 47<br />
5.3.2 Test Dokumentation .................................................................................. 47<br />
5.3.3 Testmethoden ........................................................................................... 48<br />
5.3.4 Testfälle..................................................................................................... 48<br />
5.4 System Test................................................................................................... 48<br />
5.5 Usability Test................................................................................................. 48<br />
5.6 Testergebnisse.............................................................................................. 49<br />
5.6.1 Systemtests............................................................................................... 49<br />
5.6.2 Usabilitytests ............................................................................................. 49<br />
6 Planung und Zeitmanagement......................................................................... 50<br />
6.1 Vorgehensmodell........................................................................................... 50<br />
6.2 Zeitmanagement............................................................................................ 51<br />
6.3 Projektplan / Zeitplan und Meilensteine ......................................................... 52<br />
6.4 Termine ......................................................................................................... 53<br />
6.5 Projektmanagement....................................................................................... 53<br />
6.6 Meetings / Reviews /Statusmeldungen .......................................................... 53<br />
6.6.1 Meetings.................................................................................................... 53<br />
6.7 Reviews......................................................................................................... 53<br />
6.7.1 Statusmeldungen ...................................................................................... 53<br />
10.09.2009 Seite 4 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
7 Erfüllung der Anforderungen und Ziele .......................................................... 54<br />
7.1 Nicht funktionale Anforderungen.................................................................... 54<br />
7.2 Funktionale Anforderungen............................................................................ 55<br />
7.2.1 Publisher Teil............................................................................................. 55<br />
7.2.2 Subscriber Teil .......................................................................................... 55<br />
7.3 Ziele .............................................................................................................. 56<br />
8 Erfahrungen....................................................................................................... 57<br />
8.1 Resultat ......................................................................................................... 57<br />
8.2 Ausblick ......................................................................................................... 57<br />
8.3 Schlusswort ................................................................................................... 58<br />
9 Installations- und Betriebshandbuch .............................................................. 59<br />
9.1 Technische Umgebung.................................................................................. 59<br />
9.1.1 Client......................................................................................................... 59<br />
9.1.2 Datenbank................................................................................................. 59<br />
9.1.2.1 RDBMS........................................................................................... 59<br />
9.1.2.2 Server Umgebung........................................................................... 59<br />
9.2 Installation ..................................................................................................... 60<br />
9.2.1 Datenbank................................................................................................. 60<br />
9.2.1.1 Konfiguration Change Data Capture ............................................... 60<br />
9.2.1.2 Konfiguration LDI Tool .................................................................... 60<br />
9.2.2 Setup......................................................................................................... 61<br />
9.3 Benutzerhandbuch ........................................................................................ 64<br />
9.3.1 Über LDI.................................................................................................... 64<br />
9.3.2 Startup LDI ................................................................................................ 64<br />
9.3.3 Benutzeroberfläche ................................................................................... 65<br />
9.3.4 TreeView ................................................................................................... 66<br />
9.3.5 Objekte bearbeiten .................................................................................... 67<br />
9.3.6 Changesourcen bearbeiten ....................................................................... 67<br />
9.3.7 Changesets bearbeiten ............................................................................. 68<br />
9.3.8 Changetabellen bearbeiten........................................................................ 69<br />
9.3.8.1 Source Properties ........................................................................... 69<br />
9.3.8.2 Destination Properties..................................................................... 70<br />
9.3.9 Shortcuts................................................................................................... 72<br />
9.3.10 Fehlerbehandlung.................................................................................. 72<br />
10 Change Requests ....................................................................................... 73<br />
11 Anhang ........................................................................................................ 77<br />
11.1 Glossar.......................................................................................................... 77<br />
11.2 Referenzen.................................................................................................... 78<br />
11.3 Tabellenverzeichnis ....................................................................................... 79<br />
11.4 Abbildungsverzeichnis ................................................................................... 79<br />
10.09.2009 Seite 5 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
1 Allgemeines<br />
1.1 Dokument<br />
1.1.1 Zweck<br />
Dieses Dokument ist der <strong>Diplombericht</strong> der <strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21 „Lightweight DWH<br />
Interface“. Es bietet einen Überblick über die gesamte Arbeit und die erstellten Artefakte. Es<br />
soll aufgezeigt werden, welche Arbeiten im Rahmen der Diplomarbeit durchgeführt wurden<br />
und welche Resultate erzielt wurden. Ein wesentlicher Teil setzt sich aus dem Pflichtenheft<br />
und aus der Detailspezifikation zusammen. Zusätzlich werden die dazugehörigen Ergebnisse<br />
dokumentiert. Auch werden die im Laufe des Projekts aufgetretenen Änderungsanfragen<br />
aufgeführt und es wird ein Ausblick auf zukünftig geplante Versionen gegeben.<br />
1.1.2 Umfang<br />
Diese Arbeit wird in der Form einer <strong>Master</strong> <strong>Thesis</strong> vollzogen. Sie bildet einen Teil der<br />
Ausbildung zum <strong>Master</strong> of Advanced Studies in Information Technology (MAS-IT). Der<br />
gesamte Arbeitsaufwand beträgt 360 Stunden (12 ECTS-Punkte) und dauert ein Semester.<br />
1.1.3 Leserkreis<br />
Dieses Dokument richtet sich in erster Linie an den Experten und an den Betreuer.<br />
1.1.4 Übersicht<br />
Dieses Dokument ist wie folgt aufgebaut:<br />
Kapitel 1<br />
Kapitel 2<br />
Kapitel 3<br />
Kapitel 4<br />
Kapitel 5<br />
Kapitel 6<br />
Kapitel 7<br />
Kapitel 8<br />
Kapitel 9<br />
Kapitel 10<br />
Kapitel 11<br />
Vermittelt einen Überblick über das Dokument.<br />
Projektübersicht und Problemstellung<br />
Analyse Change Data Capture und Applikation<br />
Design Applikation und Datenbank<br />
Angaben und Ergebnisse zum Testing<br />
Planung und Zeitmanagement<br />
Übersicht über die Erfüllung der gesteckten Ziele und Anforderungen<br />
Ausblick und Schlusswort zu der Diplomarbeit<br />
Installations- und Betriebshandbuch<br />
Angaben zu den Change Requests<br />
Anhang<br />
1.1.5 Begriffe und Definitionen<br />
Die in diesem Dokument verwendeten Begriffe und Definitionen sind im Glossar beschrieben.<br />
1.1.6 Nomenklatur<br />
Das Dokument ist in Deutsch gehalten. Dort wo es jedoch sinnvoll erscheint, werden die<br />
englischen Originalbegriffe verwendet. Zu Gunsten einer besseren Lesbarkeit wird für<br />
sämtliche Bezeichnungen nur die männliche Form verwendet.<br />
10.09.2009 Seite 6 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2 Projektübersicht<br />
2.1 Allgemeine Beschreibung<br />
Das Projekt befasste sich mit der Problematik der Übernahme von operativen Daten in den<br />
Staging Bereich eines Datawarehouse.<br />
Die Kapitel 2.1.1 und 2.1.2 zeigen die Ist - Situation dieser Schnittstellen im analysierten<br />
System auf. Das Kapitel 2.1.3 beschreibt die Probleme, welche sich in diesem Bereich stellen<br />
und auch den Anstoss für dieses Projekt gegeben haben.<br />
2.1.1 ETL Prozess<br />
Die Abbildung 1 zeigt den ETL - Prozess in der Emmi Schweiz AG. Dieser folgt immer dem<br />
gleichen Ablauf. Zuerst werden alle benötigten Daten von den Quellsystemen in den<br />
Stagingbereich des DWH übernommen (Punkt 1). Ab dort werden die Daten transformiert und<br />
konvertiert und werden in die verschiedenen Data - Marts geladen (Punkt 2).<br />
Die rot gestreifte Linie markiert den Bereich, in welchem sich dieses Projekt bewegt. Bereiche<br />
ausserhalb der Markierung sind von der geplanten Arbeit nicht betroffen.<br />
relational<br />
dimensional<br />
Quellsysteme<br />
transformation / converting<br />
evaluations<br />
ERP DB<br />
(OLTP)<br />
E1 <strong>Master</strong><br />
landing-zone<br />
Datawarehouse<br />
MIS DB<br />
Oracle 11g R1<br />
Standard Reports<br />
(Microstrategy)<br />
Sales Line<br />
ERP DB<br />
(OLTP)<br />
EFM<br />
1<br />
Staging<br />
2<br />
DWH Bus<br />
Financial<br />
Query<br />
Service<br />
Ad hoc Zugriff<br />
(SQL)<br />
Stammdaten DB<br />
(OLTP)<br />
DWH Bus<br />
ESDS<br />
Procurement<br />
Budget DB<br />
Feedback operationelle<br />
Systeme<br />
(PROCOS)<br />
PROCOS<br />
Abbildung 2-1: ETL Prozess Schema<br />
Metadaten<br />
10.09.2009 Seite 7 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2.1.2 Ladeprozess kleine Tabellen<br />
Bei der Übernahme von Tabellen mit Records < 30'000'000 in den Stagingbereich, werden<br />
die kompletten Daten bei jeder Übertragung gelöscht und wieder geladen. Die Löschung<br />
erfolgt mit dem Befehl Truncate und ist dadurch sehr schlank gehalten. Der Ladevorgang ist<br />
bei einer grossen Anzahl Records aufwendig.<br />
2.1.3 Ladeprozess grosser Tabellen<br />
Bei der Übernahme von Tabellen mit Records > 30'000'000 in den Stagingbereich, werden<br />
nur Änderungen seit der letzten Übernahme verarbeitet.<br />
Abbildung 2 zeigt den Standardvorgang einer solchen Übernahme.<br />
1. Als erstes wird eine Hilfstabelle gelesen, welche die Primary Keys der gelöschten<br />
Records von der Haupttabelle enthält. Anhand dieses Keys werden auch auf der<br />
Zieltabelle diese Records gelöscht.<br />
2. Anhand einer Spalte, welche das Änderungsdatum enthält, werden die zusätzlichen<br />
oder geänderten Records seit der letzten Übernahme identifiziert. Da diese Spalte<br />
nicht indexiert ist, löst dies jede Nacht einen Full Table Scan aus.<br />
3. Um zu prüfen, ob auch wirklich die Daten auf der Quell- wie auch auf der<br />
Zieldatenbank gleich sind, wird nach jeder Übernahme einen Abgleich gemacht. Dies<br />
wird gemacht, indem man auf einer definierten Spalte eine Summe bildet und diese<br />
beiden Summen vergleicht. Die Vergangenheit hat gezeigt, dass dieser Abgleich<br />
notwendig ist, da schon einige Fehler gefunden wurden.<br />
4. Dies ist ein Trigger, welcher auf der Quelltabelle programmiert werden muss. Dieser<br />
stellt sicher, dass alle Änderungen mit einem korrekten Änderungsdatum versehen<br />
werden. Auch kann durch den Trigger gewährleistet werden, dass gelöschte Records<br />
zu einem späteren Zeitpunkt auf der Zieltabelle via Primary Key auch gelöscht werden<br />
können.<br />
ERP DB<br />
4<br />
PK gelöschte Rows<br />
Quelltabelle<br />
Full Table Scan Summe ausrechnen Summe vergleichen Summe ausrechnen - Full Table Scan<br />
3<br />
2<br />
Stagingbereich DWH<br />
Datawarehouse<br />
MIS DB<br />
Oracle 11g R1<br />
Full Table Scan - Änderungen selektieren - Änderungen übernehmen<br />
Gelöschte Records auch in DWH löschen<br />
1<br />
Delete Tabelle<br />
Zieltabelle<br />
Trigger<br />
Abbildung 2-2: Ladeprozess grösserer Tabellen<br />
10.09.2009 Seite 8 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2.2 Problemstellung<br />
Durch die aufwendige Übernahme der grossen Tabellen, werden die Quellsysteme derart<br />
belastet, dass der produktive Betrieb während den Übernahmen beeinträchtigt wird.<br />
Abbildung 3 zeigt die Kurve der CPU auf dem Quellsystem während einer Übernahme an<br />
einem Wochenende. Es ist deutlich zu sehen, dass ab ca. 17:00 bis ca. 07:00 die Last<br />
ansteigt. Genau in dieser Zeit wurden die Daten, welche nur wöchentlich übernommen<br />
werden können, übertragen und abgeglichen.<br />
Abbildung 2-3: CPU Kurve Quellsystem<br />
Des Weiteren besteht der Wunsch die Daten mindestens vom Vortag im Datawarehouse<br />
auswerten zu können. Bei dieser Übertragungstechnik ist dies aber nicht möglich, da die<br />
Laufzeit der Schnittstellen bis um ca. 12:00 Mittags dauern würde. Auch darf eine solche<br />
Belastung der Quellsysteme nicht während des Tagesgeschäfts der Emmi AG auftreten, da<br />
dies den Lieferprozess der Firma beeinträchtigt würde.<br />
2.3 Projektziele<br />
Das Ziel dieses Projekts ist eine Schnittstellentechnik zu beschreiben und zu realisieren:<br />
• Welche die Daten im gewünschten Zeitrahmen (max. 2 Stunden für die grössten<br />
Tabellen) in den Staging - Bereich des DWH bringt.<br />
• Welche die Belastung des Quellsystems um mindestens 70% verringert.<br />
• Welche es erlaubt die zukünftigen Schnittstellen mit 50% Aufwand zu realisieren.<br />
• Welche der Stabilität zur jetzigen Technik ebenwürdig ist.<br />
• Welche das weglassen der Trigger auf den Quellsystemen erlaubt.<br />
Um diese Ziele zu erreichen, werden in den folgenden Kapiteln die Lösungsansätze<br />
analysiert und die Anforderungen sowie die Ziele genauer beschrieben.<br />
10.09.2009 Seite 9 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2.4 Mögliche Lösungen<br />
In diesem Kapitel werden die möglichen Lösungen für das erreichen der Projektziele kurz<br />
beschrieben und verglichen. Danach wird entschieden, welche Technik für das Projekt<br />
geeignet ist. Dieser Entscheid wird die technische Umsetzung des Projekts massiv<br />
beeinflussen. Daher wird diesem Teil genügend Zeit beigemessen. Jede Lösung wird auch<br />
praktisch analysiert und ein schlanker „Proof of Concept“ wird durchgeführt.<br />
2.4.1 LogMiner (erste Vision)<br />
Die erste Idee, wie man die im Kapitel 2.1.3 beschriebenen Probleme lösen könnte, sah wie<br />
folgt aus:<br />
Staging Table<br />
Change Table<br />
Abbildung 2-4: Prozessablauf Vision<br />
Die archivierten Redo Logs der Quelldatenbank, werden auf den Rechner der Zieldatenbank<br />
kopiert. Dort werden mit der bestehenden Oracle Technologie LogMiner alle Änderungen in<br />
eine Zwischentabelle geschrieben. Diese Änderungen werden mittels einer neu<br />
programmierten Applikation gefiltert und aufbereitet. Danach werden die aufbereiteten<br />
Records in die entsprechende Stagingtabelle geschrieben. Jeder Record enthält zusätzliche<br />
wichtige Merkmale wie:<br />
• Änderungsart (Insert, Update, Delete)<br />
• SCN damit die Reihenfolge bestimmt werden kann<br />
• Ein Flag Verarbeitet Ja/Nein<br />
10.09.2009 Seite 10 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2.4.2 Timestamp / Change Key Column<br />
Diese Methode ist bereits bei den grössten Tabellen umgesetzt und im Kapitel 2.1.3<br />
beschrieben. Sie belastet die Systeme stark und bedeutet einen grossen Aufwand bei der<br />
Programmierung neuer Schnittstellen.<br />
Mit dieser Technik können die Projektziele nicht erreicht werden.<br />
2.4.3 Tabel differencing<br />
Bei dieser Methode, werden die gesamten Daten von der Quelldatenbank zur Zieldatenbank<br />
transportiert. Danach werden sie mittels speziellen SQL’s verglichen (minus). Auch diese<br />
Technik ist sehr belastend für die Systeme. Mittels Datenbanklink kann eine Verbesserung<br />
erzielt werden.<br />
Mit dieser Technik können die Projektziele nicht erreicht werden.<br />
10.09.2009 Seite 11 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2.4.4 Oracle Change Data Capture<br />
Oracle bietet das Feature „Change Data Capture“ an. Diese Technologie kann in<br />
verschiedenen Modi betrieben werden:<br />
• Synchronus<br />
• Asynchronus HotLog<br />
• Asynchron Distributed HotLog<br />
• Asynchronus HotLog online<br />
• Asynchronus Autolog archive<br />
Für das anstehende Projekt bietet sich „Asynchronus Autolog Archive“ am besten an, da die<br />
Anforderungen ziemlich genau auf die bestehende Umgebung in der Emmi Schweiz AG<br />
passen. Auch ist eine möglichst zeitnahe Übertragung nicht nötig. Des Weiteren belastet<br />
dieser Modus die Systeme am wenigsten.<br />
In diesem Kapitel wird also nur auf den „Asynchronus Autolog Archive“ Modus eingegangen.<br />
Um die Funktionsweise der anderen Modi zu erfahren wird auf das Kapitel 16 im Dokument<br />
Oracle Data Warehousing Guide 11g Release 1 (B28313-02) verwiesen.<br />
Asynchronus Autolog Archive<br />
Dieser Modus beinhaltet einen ziemlich ähnlichen Vorgang wie im Kapitel 2.4.1 beschrieben.<br />
Die Daten werden auch aus den Archivierten Redo Logs gewonnen. Anstelle des LogMiners<br />
steht das Feature Change Data Capture, welches auch die Funktion des Aufbereitens der<br />
Daten beinhaltet. In der Abbildung 5 sieht man ein Übersichtsschema, wie dieser Modus<br />
funktioniert. Eine genaue Beschreibung kann aus dem Dokument Oracle Data Warehousing<br />
Guide 11g Release 1 (B28313-02) entnommen werden.<br />
Abbildung 2-5: Prozessablauf Change Data Capture<br />
10.09.2009 Seite 12 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
2.5 Entscheid<br />
Bei den verschiedenen Lösungsansätzen im Kapitel 2.4 kommen nur die Logminer - Lösung<br />
und das Change Data Capture in Frage. Bei allen Anderen können die gesteckten Ziele nicht<br />
erreicht werden.<br />
Kriterien<br />
Gewicht LogMiner<br />
Change Data<br />
Capture<br />
1 Belastung Quellsystem 9 5 5<br />
2 Belastung Zielsystem 3 3 4<br />
3 Implementationsaufwand / Tabelle 5 2 4<br />
4 Stabilität 7 3 5<br />
5 Supportbarkeit 6 2 4<br />
6 Releasefähigkeit 7 1 4<br />
7 Aufwand 5 2 4<br />
8 Kosten 2 5 5<br />
Resultat 124 194<br />
Tabelle 2-1: Entscheidungstabelle<br />
Aufgrund des Resultats der Entscheidungstabelle wird sich für „Change Data Capture“<br />
entschieden.<br />
2.5.1 Erklärung zur Bewertung<br />
Belastung Quellsystem<br />
Aufgrund der sehr ähnlichen Technologie werden bei beiden Varianten die Quellsysteme<br />
kaum belasten.<br />
Belastung Zielsystem<br />
Da bei der LogMiner Lösung das aufbereiten der Daten programmiert werden muss, gehe ich<br />
nicht davon aus, dass ich dies gleich effizient gestalten könnte wir die Firma Oracle.<br />
Implementationsaufwand / Tabelle<br />
„Change Data Capture“ stellt einige der gewünschten Funktionen zur Verfügung. Somit kann<br />
die zur Verfügung stehende Zeit auch in die Entwicklung eines GUI investiert werden. Somit<br />
sollte auch das Ziel der einfachen Weiterentwicklung erreicht werden.<br />
Stabilität<br />
Da „Change Data Capture“ ein Standard Feature von Oracle ist und dieses weltweit in Firmen<br />
eingesetzt wird, kann von einer guten Stabilität ausgegangen werden. Bei der selber<br />
entwickelten Variante, wäre das „handeln“ jeglicher Spezialsituationen sicher schwierig<br />
gewesen.<br />
10.09.2009 Seite 13 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Supportbarkeit<br />
Bei der LogMiner Variante ist es schwierig über Jahre das Know-How aufrechtzuerhalten. Da<br />
„Change Data Capture“ ein Standard Feature ist, kann man sich auch bei der Firma Oracle<br />
Unterstützung besorgen.<br />
Releasefähigkeit<br />
Das „Change Data Capture“ Feature wird bei Oracle mit den DB Relases gleichzeitig<br />
ausgeliefert, da es ein Bestandteil der ganzen Software ist. Die eigene Lösung müsste bei<br />
jedem Upgrade der Umgebung neu erweitert und getestet werden.<br />
Aufwand<br />
Beim Aufwand kann gesagt werden, dass eine eigene Entwicklung den Rahmen der<br />
Diplomarbeit gesprengt hätte. Beim „Change Data Capture“ kann die vorgesehene Zeit<br />
voraussichtlich eingehalten werden.<br />
Kosten<br />
Das sowohl LogMiner wie auch „Change Data Capture“ keine Option ist, welche separat<br />
Lizenziert werden muss, dürften sich die Kosten im gleichen Rahmen bewegen.<br />
10.09.2009 Seite 14 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3 Analyse<br />
In diesem Kapitel ist der grösste Teil aus der Detailspezifikation entnommen. Es beschreibt<br />
die Technologie Change Data Capture ein wenig genauer und zeigt, wie die Applikation<br />
geplant wurde.<br />
3.1 Change Data Capture<br />
Change Data Capture ist ein standard Feature von Oracle. Es stellt eine sehr ausgereifte<br />
Technik zur Verfügung, welche die Änderungen von einer Datenbank an eine weitere<br />
Datenbank befördert. Um genaue Details dieser Technik zu erfahren wird auf die<br />
Dokumentation von Oracle (Oracle Data Warehousing Guide 11g Release 1 (B28313-02))<br />
verwiesen. In diesem Kapitel wird nur ein grober Überblick dieser Features gegeben, welche<br />
in dieser Arbeit relevant sind.<br />
3.1.1 Architektur<br />
Grundlegend unterteilt sich die Change Data Capture (CDC) Architektur in zwei Bereiche: in<br />
einen Source - Bereich und einen Staging - Bereich. Der Staging - Bereich ist nicht mit einem<br />
üblichen Staging - Bereich im ETL - Umfeld zu vergleichen. Die Abbildung 3-1 zeigt ein<br />
Überblick der CDC Architektur. Die rote Linie beschreibt die Systemgrenzen dieses Projekts.<br />
In einem späteren Release könnte auch der Subscriber - Teil im GUI verwaltbar gemacht<br />
werden.<br />
Abbildung 3-1: Architektur Change Data Capture<br />
Als Source - Bereich wird hier das operative System bezeichnet, in welchem die relevanten<br />
Datenänderungen stattfinden. Im Staging Bereich werden die Änderungen in einem<br />
10.09.2009 Seite 15 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
sogenannten Publisherbereich abgelegt. Pro Source Tabelle gibt es im Stagingbereich<br />
jeweils eine Änderungstabelle (Change Table).<br />
In den folgenden Kapiteln werden die verschiedenen Teile des Change Data Capture<br />
genauer beschrieben.<br />
3.1.1.1 Publisher<br />
Der Publisher enthält alle Funktionalitäten um, die Datenänderungen im Source - Bereich zu<br />
erkennen und darzustellen. Der Publisher ist ein normaler Datenbank Benutzer, welcher mit<br />
den entsprechenden Rechten ausgestattet sein muss. Dieser Benutzer wird für ein DWH<br />
einmalig angelegt und wird daher im geplanten Tool nicht verwaltet werden können, da diese<br />
Möglichkeit in den standard Oracle Tools mehrfach und in einer befriedigenden Form<br />
vorhanden ist.<br />
3.1.1.2 Source Tabelle<br />
Dies ist die Tabelle, von welcher alle Änderungen auf der Stagingdatenbank gewünscht<br />
werden. Um eine Tabelle für CDC zu präparieren, muss diese mit dem Befehl<br />
DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION instanziert werden. Weitere<br />
Schritte sind auf der Source Datenbank nicht nötig.<br />
3.1.1.3 Change Source<br />
Die Change Source ist die logische Repräsentation der Sourcedatenbank. Somit wird für jede<br />
Sourcedatenbank eine Change Source auf der Stagingdatenbank angelegt. Eine Change<br />
Source kann gestoppt und wieder gestartet werden.<br />
3.1.1.4 Change Set<br />
In einem Change Set sind mehrere Change Tabellen zusammengefasst. Alle Change<br />
Tabellen, welche in einem Change Set zusammengefasst sind, werden<br />
transaktionskonsistent nachgeführt. Des Weiteren werden beim asynchronen Change Data<br />
Capture durch das Anlegen, aktivieren und deaktivieren des Change Sets die Oracle Streams<br />
Prozesse, welche für das Erfassen der Datenänderungen zuständig sind, gesteuert.<br />
3.1.1.5 Change Table<br />
In den Change Tabellen werden die Datenänderungen als Logical Change Record<br />
tabellarisch dargestellt. Beim Erstellen der Change Tabellen wird definiert, welche Quell-<br />
Tabellen und welche Spalten dieser Quell-Tabellen für die Change Data Capture Umgebung<br />
relevant sind.<br />
3.1.1.6 Subscriber<br />
Der Subscriber enthält Funktionalitäten um Views auf die Change Tabellen zu erstellen. Mit<br />
Hilfe dieser Views können immer nur die Datenänderungen geladen werden, welche noch<br />
nicht verarbeitet wurden. Diese Views stellen eine angenehme Art dar mit dem ETL Prozess<br />
10.09.2009 Seite 16 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
die Daten abzugreifen. Dies ist aber auch ohne Weiteres direkt auf den Change Tabellen<br />
möglich. Dieser Teil wir nach Bedarf zu einem späteren Zeitpunkt in das vorgesehene Tool<br />
eingebaut.<br />
3.1.2 Change Data Capture Modus<br />
Hier wird nochmals kurz der Modus, welcher ausgewählt wurde beschrieben. Schon bei der<br />
Erstellung des Pflichtenhefts hat man sich für den Modus Asynchronous Auto Log Archive<br />
CDC entschieden. Dieser Modus ist optimal auf die Situation in der Emmi zugeschnitten und<br />
belastet das Source System kaum. Dieser Modus ist nur möglich, weil das Source- und das<br />
Stagingsystem genau die gleiche Hardware und die gleichen Oracle Releases aufweisen. Auf<br />
der Abbildung 3-2 ist der Ablauf grob dargestellt.<br />
Abbildung 3-2: Übersicht Modus CDC<br />
Auf der Source Datenbank wird jede Änderung durch den Logwriter (LGWR) geloggt. Dieser<br />
schreibt diese Änderungen in die Redo-Logs, welche jede halbe Stunde durch den Archiver-<br />
Prozess in die sogenannten Archivierten Redo-Logs geschrieben werden. Dies ist ein ganz<br />
normaler Vorgang und wird auf jeder Oracle Datenbank gemacht. Eine Anpassung, welche<br />
gemacht werden muss, ist das Einschalten eines Supplemental Loggings auf der Source<br />
Datenbank. Dies bewirkt, dass die Source Datenbank zusätzliche Informationen in die<br />
Logdateien schreibt und genau diese zusätzliche Logging ist die einzige Belastung, welche<br />
CDC dem Sourcesystem zufügt.<br />
Auf der Staging Datenbank sind die Oracle Streams Prozesse für das importieren der<br />
erforderlichen Daten aus den archivierten Redo-Logs verantwortlich.<br />
10.09.2009 Seite 17 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2 Applikation<br />
3.2.1 Pakete<br />
Die Applikation kann in zwei Pakete aufgeteilt werden. Im Paket Publish befinden sich diese<br />
Anwendungsfälle, welche im Zusammenhang Übertragung der Daten und zur Verfügung<br />
stellen der Daten stehen.<br />
Im Paket Subscribe befinden sich diese Anwendungsfälle, welche sich im Bereich des<br />
Beziehens der Daten befinden. Das Subscribe Paket wird nur mit einem Use Case Diagramm<br />
beschrieben. Die genaue Spezifikation wird zum Zeitpunkt der Umsetzung gemacht, da dies<br />
voraussichtlich in einem zweite Release umgesetzt wird und nur als Kann Ziel in dieser<br />
Spezifikation aufgeführt wird.<br />
Abbildung 3-3: Package Diagramm LDI<br />
10.09.2009 Seite 18 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.2 Use Case Diagramm (Publish)<br />
Use Case Diagramm: LDI (Publish)<br />
Programm starten<br />
FA.01.010<br />
<br />
Login<br />
FA.01.020<br />
Destinationsystem<br />
konfigurieren FA.02.010<br />
Change Source<br />
Konfigurieren FA.03.010<br />
Change Source<br />
löschen FA.03.020<br />
Change Set<br />
konfigurieren FA.04.010<br />
Change Set löschen<br />
FA.04.020<br />
DWH System<br />
Changetabelle<br />
ändern FA.05.010<br />
ETL - Programmierer<br />
Changetabelle<br />
purgen FA.05.020<br />
Changetabelle<br />
erstellen FA.05.030<br />
Change Tabelle<br />
löschen FA.05.040<br />
Sourcesystem<br />
konfigurieren FA.06.010<br />
Source System<br />
Abbildung 3-4: Use Case Diagramm Publish<br />
10.09.2009 Seite 19 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.3 Übersicht Use Cases (Publish)<br />
ID Beschreibung M K<br />
FA.01<br />
Startup Applikation<br />
FA.01.010 Programm starten X<br />
FA.01.020 Login X<br />
FA.02<br />
Destinationsystem<br />
FA.02.010 Destinationsystem konfigurieren X<br />
FA.03<br />
Change Source<br />
FA.03.010 Change Source konfigurieren X<br />
FA.03.020 Change Source löschen X<br />
FA.04<br />
Change Set<br />
FA.04.010 Change Set konfigurieren X<br />
FA.04.020 Change Set löschen X<br />
FA.05<br />
Change Tabelle<br />
FA.05.010 Changetabelle ändern X<br />
FA.05.020 Changetabelle purgen X<br />
FA.05.030 Changetabelle erstellen X<br />
FA.05.040 Changetabelle löschen X<br />
FA.06<br />
Sourcesystem<br />
FA.06.010 Sourcesystem konfigurieren X<br />
Tabelle 3-1: Übersicht Use Cases (Publish)<br />
Diese Anforderungen wurden gegenüber dem Pflichtenheft ein wenig angepasst. Dies aus<br />
dem Grund, weil bei der detaillierten Analyse erweiterte Erkenntnisse gewonnen wurden.<br />
Diese Erkenntnisse haben dazu bewogen, einige Anforderungen wegzulassen und einige auf<br />
Kann Ziele zurückzustufen.<br />
3.2.4 Aktoren<br />
Es werden alle Aktoren kurz beschrieben.<br />
Name<br />
ETL - Programmierer<br />
Source System<br />
Destination System<br />
Tabelle 3-2: Aktoren<br />
Beschreibung<br />
Dies ist der Hauptbenutzer dieser Software. Er definiert die ETL<br />
Schnittstellen für das DWH. Er ist der einzige, welche mit dieser<br />
Applikation arbeitet.<br />
Das Sourcesystem ist die Datenbank, welche die Quelldaten für<br />
die Schnittstelle enthält.<br />
Das Zielsystem ist der Stagingbereich des DWH. Dies auch in der<br />
Form einer Oracle Datenbank.<br />
10.09.2009 Seite 20 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5 Detailbeschreibung Use Cases (Publish)<br />
3.2.5.1 Programm starten<br />
AD Programm starten<br />
User startet Programm<br />
Login wird aufgerufen<br />
(FA.01.020)<br />
Login nicht erfolgreich<br />
Login OK<br />
Metadaten werden von<br />
DWH eingelesen<br />
Programm wird beendet<br />
GUI wird<br />
Initialisiert<br />
Programm<br />
gestartet<br />
Programm<br />
beendet<br />
Abbildung 3-5: Aktivitätsdiagramm Programm starten<br />
Der Benutzer startet das Programm per Mausklick aus seinem Startmenu. Die Applikation<br />
wird gestartet und der Benutzer wird zum Login aufgefordert (siehe include FA.01.020). Wenn<br />
das Login OK ist, werden die Meta Daten aus dem DWH gelesen und die TreeView wird<br />
konfiguriert (siehe Kapitel GUI). Danach wird das GUI angezeigt. Bei nicht erfolgreichem<br />
Login, wird der Prozess wieder beendet. Mit dem SQL Statement aus Tabelle 3-3 können die<br />
nötigen Informationen aus dem DWH bezogen werden, um die TreeView mit den nötigen<br />
Objekten zu initialisieren. Weitere Infos über die TreeView können aus dem Kapitel 3.2.8.1<br />
bezogen werden.<br />
10.09.2009 Seite 21 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Vorgang<br />
SQL<br />
Daten für TreeView select source_database, source_name, b.set_name, c.change_table_schema,<br />
lesen<br />
c.change_table_name<br />
from all_change_sources a, all_change_sets b, all_change_tables c<br />
where source_type = 'AUTOLOG'<br />
and a.source_name = b.change_source_name<br />
and b.set_name = c.change_set_name;<br />
Tabelle 3-3: SQL Programm starten<br />
3.2.5.2 Login<br />
Dieses Aktivitätsdiagramm zeigt den Ablauf des Anmeldeprozesses. Dieser Prozess wird<br />
nach dem Start der Applikation automatisch aufgerufen und ist ein Teil des Startvorgangs.<br />
AD Login<br />
Auswahl DWH DB<br />
Eingabe Benutzername & Passwort<br />
für DWH DB<br />
abbrechen<br />
neuer Versuch<br />
Login OK<br />
Programm wird beendet<br />
Login<br />
fehlgeschlagen<br />
Login OK<br />
Abbildung 3-6: Aktivitätsdiagramm Login<br />
10.09.2009 Seite 22 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Der Benutzer wird aufgefordert, die DB vom gewünschten DWH auszuwählen (DB’s können<br />
aus dem tnsnames.ora ausgelesen werden) und seine Benutzerangaben einzugeben. Dies<br />
sind die Benutzerangaben des Publishers vom DWH. Die Benutzerangaben werden gegen<br />
die ausgewählte DB geprüft. Bei erfolgreicher Anmeldung wird die Applikation gestartet und<br />
der Angegebene Benutzer bleibt angemeldet. Bei nicht korrekten Angaben wird der Benutzer<br />
aufgefordert es erneut zu versuchen. Der Vorgang kann auch abgebrochen werden. Damit<br />
schliesst sich die Applikation wieder.<br />
Abbildung 3-7: GUI Login<br />
Das GUI wird nicht näher beschrieben, da es selbsterklärend ist.<br />
3.2.5.3 Destinationsystem konfigurieren<br />
Kann Ziel. Wird zum Zeitpunkt der Umsetzung spezifiziert.<br />
10.09.2009 Seite 23 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.4 Change Source konfigurieren<br />
Das Aktivitätsdiagramm zeigt den Ablauf für die Erstellung oder für die Änderung eine<br />
Change Source. Eine Change Source wird nur eine pro Sourcesystem erstellt. Im<br />
dazugehörigen GUI sieht man, wie und wo der Benutzer die Eingaben machen kann.<br />
AD Change Source konfigurieren<br />
User wählt<br />
Sourcesystem aus<br />
CS erstellen<br />
CS ändern<br />
User mutiert CS<br />
Eigenschaften<br />
User erfasst CS<br />
Eigenschaften<br />
CS ändern<br />
CS erstellen<br />
OK<br />
Fehler beim ändern der CS<br />
Fehlermeldung<br />
Fehler beim Erstellung<br />
OK<br />
GUI anpassen<br />
CS geändert<br />
Vorgang<br />
abgebrochen<br />
CS erstellt<br />
Abbildung 3-8: Aktivitätsdiagramm Change Source konfigurieren<br />
Der Benutzer wählt, ob er eine neue Change Source erstellen oder ob er eine bestehenden<br />
abändern will. Aufgrund der Auswahl, werden die Eingabefelder ausgefüllt oder nicht.<br />
Nachdem er die Eigenschaften mutiert hat, kann er die Eingabe speichern. Im Reiter SQL<br />
kann das jeweilige SQL, welches beim Speichern ausgeführt wird, angesehen werden. Wenn<br />
10.09.2009 Seite 24 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
kein Fehler auftritt, wird dieser Vorgang abgeschlossen. Bei einer neuen Source wird die<br />
TreeView entsprechend angepasst. Kann der Vorgang nicht durchgeführt werden, wird die<br />
originale Fehlermeldung der Datenbank ausgegeben. Bei einer Änderung kann das Feld<br />
Change Source Name nicht mutiert werden und ist im GUI gesperrt.<br />
Abbildung 3-9: GUI Change Source<br />
Die Tabelle 3-2 enthält die SQL’s, welche beim Speichern an die Datenbank gesendet<br />
werden. Ein Fehlerhandling ist bei diesen Packages schon implementiert und muss nicht<br />
zusätzlich programmiert werden.<br />
Vorgang<br />
SQL<br />
Change Source DBMS_CDC_PUBLISH.CREATE_AUTOLOG_CHANGE_SOURCE(<br />
erstellen<br />
change_source_name => 'CS_XXXXX',<br />
description => 'Change Source from XXXXXXXX DB',<br />
source_database => 'XXXXXX.emmi.ch',<br />
first_scn => 0000000000);<br />
Change Source DBMS_CDC_PUBLISH.ALTER_AUTOLOG_CHANGE_SOURCE(<br />
ändern<br />
change_source_name => 'CS_XXXXXXX',<br />
first_scn => 0000000000);<br />
Tabelle 3-4: SQL Change Source<br />
10.09.2009 Seite 25 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.5 Change Source löschen<br />
Das Aktivitätsdiagramm zeigt den Ablauf beim Löschen einer Change Source.<br />
AD Change Source löschen<br />
User wählt<br />
Change Source aus<br />
Change Source<br />
löschen<br />
Fehler bei Löschung<br />
Fehlermeldung<br />
OK<br />
GUI anpassen<br />
CS geändert<br />
Vorgang<br />
abgebrochen<br />
Abbildung 3-10: Aktivitätsdiagramm Change Source löschen<br />
Der Benutzer wählt die entsprechenden Change Source aus und wählt Change Source<br />
löschen aus dem Kontext Menu (siehe Kapitel Spezifikation GUI) oder betätigt den<br />
Löschknopf in der Toolbox .<br />
Bei erfolgreicher Löschung wird die TreeView entsprechend angepasst. Bei einem Fehler<br />
wird die originale Datenbankfehlermeldung ausgegeben. Im SQL Reiter wird der<br />
entsprechenden SQL Befehl angezeigt, welcher gegen die DB ausgeführt wird.<br />
10.09.2009 Seite 26 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Bei der Löschung ist zu berücksichtigen, dass eine Change Source nur gelöscht werden<br />
kann, wenn es keine Change Sets mehr enthält. Dies wird aber sauber vom Change Data<br />
Capture Mechanismus abgehandelt und muss nicht durch die Applikation geprüft werden.<br />
In der Tabelle 3-3 sieht man das SQL, welches an die Datenbank gesendet wird. Auf eine<br />
Skizze des GUI wird verzichtet, da dies keinen Nutzen bringt. Der Name der Change Source<br />
(CS_XXXXX) wird von der markierten Stelle aus der TreeView gezogen.<br />
Vorgang<br />
SQL<br />
Change Source löschen DBMS_CDC_PUBLISH.DROP_CHANGE_SOURCE('CS_XXXXX');<br />
Tabelle 3-5: SQL Change Source löschen<br />
10.09.2009 Seite 27 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.6 Change Set konfigurieren<br />
Das Aktivitätsdiagramm zeigt den Ablauf für die Erstellung oder für die Änderung eines<br />
Change Sets. Pro Change Source können mehrere Change Sets konfiguriert werden.<br />
Innerhalb des Change Sets werden die Change Tabellen transaktionskosistent nachgeführt.<br />
Im dazugehörigen GUI sieht man, wie und wo der Benutzer die Eingaben machen kann.<br />
AD Change Set konfigurieren<br />
User wählt<br />
Change Source aus<br />
CSet erstellen<br />
CSet ändern<br />
User mutiert CSet<br />
Eigenschaften<br />
User erfasst CSet<br />
Eigenschaften<br />
CSet ändern<br />
CS erstellen<br />
OK<br />
Fehler bei Änderung<br />
Fehlermeldung<br />
Fehler bei Erstellung<br />
OK<br />
GUI anpassen<br />
CSet geändert<br />
Vorgang<br />
abgebrochen<br />
CSet erstellt<br />
Abbildung 3-11: Aktivitätsdiagramm Change Set konfigurieren<br />
Der Benutzer wählt, ob er ein neues Change Set erstellen oder ein bestehendes abändern<br />
will. Je nach dem, werden die Eingabefelder ausgefüllt oder nicht und die entsprechenden<br />
Felder sind mutierbar. Felder welche für den einen oder anderen Vorgang nicht mutiert<br />
werden dürfen, werden im GUI gesperrt. Dies aus dem Grund, weil nicht beide Statements<br />
10.09.2009 Seite 28 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
die gleichen Eigenschaften haben. Nachdem er die Eigenschaften mutiert hat, kann er die<br />
Eingabe speichern. Im Tab SQL kann das jeweilige SQL, welches beim Speichern ausgeführt<br />
wird, angesehen werden. Wenn kein Fehler auftritt, wird dieser Vorgang abgeschlossen. Bei<br />
einer neuen Source wird die TreeView entsprechend angepasst. Kann der Vorgang nicht<br />
durchgeführt werden, wird die originale Datenbankfehlermeldung ausgegeben. Die<br />
Fehlerbehandlung ist im SQL Package gut abgehandelt und muss nicht weiter programmiert<br />
werden.<br />
Abbildung 3-12: GUI Change Set konfigurieren<br />
In der Tabelle 3-4 sind die SQL Statements ersichtlich, welche beim Speichern auf die<br />
Datenbank gesendet werden.<br />
Vorgang<br />
SQL<br />
Change Set erstellen DBMS_CDC_PUBLISH.CREATE_CHANGE_SET(<br />
change_set_name => 'CSET_XXXXX_1',<br />
description => 'Change Set for XXXXXX',<br />
change_source_name => 'CS_XXXXX',<br />
stop_on_ddl => 'y'<br />
begin_date => NULL,<br />
end_date => NULL);<br />
Change Set ändern DBMS_CDC_PUBLISH.ALTER_CHANGE_SET(<br />
change_set_name => 'CSET_XXXXX_1',<br />
description => 'Change Set for XXXXXX',<br />
enable_capture => 'Y',<br />
recover_after_error => 'Y',<br />
remove_ddl => 'Y',<br />
stop_on_ddl => 'Y');<br />
Tabelle 3-6: SQL Change Set konfigurieren<br />
10.09.2009 Seite 29 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.7 Change Set löschen<br />
Das Aktivitätsdiagramm zeigt den Ablauf einer Löschung eines Change Sets.<br />
AD Change Set löschen<br />
User wählt<br />
Change Set aus<br />
Change Set<br />
löschen<br />
Fehler bei Löschung<br />
Fehlermeldung<br />
OK<br />
GUI anpassen<br />
CS geändert<br />
Vorgang<br />
abgebrochen<br />
Abbildung 3-13: Aktivitätsdiagramm Change Set löschen<br />
Der Benutzer wählt das entsprechenden Change Set aus und wählt Change Set löschen aus<br />
dem Kontext Menu (siehe Kapitel Spezifikation GUI) oder betätigt den Löschknopf in der<br />
Toolbox.<br />
Bei erfolgreicher Löschung wird die TreeView entsprechend angepasst. Bei einem Fehler<br />
wird die originale Datenbankfehlermeldung ausgegeben. Im SQL Tab wird der<br />
entsprechenden SQL Befehl angezeigt, welcher gegen die DB ausgeführt wird.<br />
10.09.2009 Seite 30 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Abbildung 3-14: GUI Change Set löschen<br />
Bei der Löschung ist zu berücksichtigen, dass ein Change Set nur gelöscht werden kann,<br />
wenn es keine Change Tabellen mehr enthält. Dies wird aber sauber vom Change Data<br />
Capture Mechanismus abgehandelt und muss nicht durch die Applikation geprüft werden.<br />
In der Tabelle ist das SQL Statement zu sehen, welches bei der Löschung an die DB<br />
gesendet wird.<br />
Vorgang<br />
SQL<br />
Change Source löschen DBMS_CDC_PUBLISH.DROP_CHANGE_SET('CSet_XXXXX_1');<br />
Tabelle 3-7: SQL Change Set löschen<br />
10.09.2009 Seite 31 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.8 Changetabelle ändern<br />
Das Aktivitätsdiagramm zeigt den Ablauf bei Änderung einer Change Tabelle.<br />
Abbildung 3-15: Aktivitätsdiagramm Changetabelle ändern<br />
Der Benutzer wählt in der TreeView die gewünschte Tabelle und im Kontext Menu (siehe<br />
Kapitel Spezifikation GUI) „Changetabelle ändern“. Im GUI ist nur der Reiter Destination<br />
mutierbar. Die Source - Seite muss nie geändert werden, ausser bei einer Löschung. Der<br />
User nimmt die gewünschten Änderungen vor und speichert anschliessend seine Eingaben.<br />
10.09.2009 Seite 32 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Wenn bei der Änderung ein Fehler auftritt, wird die originale Datenbankfehlermeldung<br />
ausgegeben. Die Eigenschaften können weiter mutiert werden. Der Vorgang wird beendet,<br />
indem der Benutzer die Aktion abbricht oder die Changetabelle korrekt abgespeichert wird.<br />
Abbildung 3-16: GUI Changetabelle ändern<br />
Bei Änderungen an den Spalten, muss mit „ADD“ oder „DROP“ angegeben werden, ob eine<br />
Spalte hinzugefügt bzw. gelöscht werden soll. Dies steht nur bei Änderung an<br />
Changetabellen zur Verfügung.<br />
In der Tabelle 3-6 sieht man das entsprechende Alter Statement, welches beim Speichern an<br />
die Datenbank gesendet wird.<br />
Vorgang<br />
SQL<br />
Change Tabelle ändern DBMS_CDC_PUBLISH.ALTER_CHANGE_TABLE(<br />
owner => ’OWNER’,<br />
change_table_name =>’TABLE’ ,<br />
operation => ’ADD’,<br />
column_type_list => ’COLXXX NCHAR(5)’,<br />
rs_id =>’Y’,<br />
row_id => 'Y' ,<br />
user_id => 'Y',<br />
timestamp => 'Y',<br />
object_id => 'Y' ,<br />
source_colmap => 'Y',<br />
target_colmap => 'Y');<br />
Tabelle 3-8: SQL Changetabelle ändern<br />
.<br />
10.09.2009 Seite 33 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.9 Changetabelle purgen<br />
Dieses Aktivitätsdiagramm zeigt den Ablauf, wenn die Daten einer Changetabelle<br />
reorganisiert werden. Das heisst nicht mehr benötigte Daten werden gelöscht.<br />
AD Changetabelle purgen<br />
User wählt Changetabelle aus<br />
Destinationtabelle purgen<br />
Fehler bei Purgevorgang<br />
Fehlermeldung<br />
OK<br />
Tabelle<br />
purged<br />
Vorgang<br />
abgebrochen<br />
Abbildung 3-17: Aktivitätsdiagramm Changetabelle purgen<br />
Der Benutzer wählt in der TreeView die gewünschte Tabelle und im Kontext Menu (siehe<br />
Kapitel Spezifikation GUI) „Changetabelle purgen“. Das SQL Statement aus Tabelle 3-7 wird<br />
an die Datenbank gesendet. Daten welche von keiner SubscriberView in Zugriff sind, werden<br />
gelöscht. Bei einem Fehler wird die originale Datenbankfehlermeldung ausgegeben.<br />
Daten welche mit diesem Package gelöscht wurden, können nicht mehr hergestellt werden!<br />
Vorgang<br />
SQL<br />
Change Tabelle purgen DBMS_CDC_PUBLISH.PURGE_CHANGE_TABLE(<br />
owner => ‚’OWNER’,<br />
change_table_name => ’TABLE’);<br />
Tabelle 3-9: SQL Change Tabelle konfigurieren<br />
10.09.2009 Seite 34 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.10 Changetabelle erstellen<br />
Das Aktivitätsdiagramm zeigt den Ablauf bei Erstellung einer Change Tabelle.<br />
AD Changetabelle erstellen<br />
User wählt neue Changetabelle erstellen<br />
User erfasst Source Owner & Tabelle<br />
User erfasst sämtliche Eigenschaften<br />
der Changetabelle (Reiter Destination)<br />
Fehlermeldung<br />
User speichert neue Changetabelle<br />
Tabelle wird auf Source DB<br />
instanziert<br />
Fehler beim instanzieren<br />
Vorgang abbrechen<br />
OK<br />
Changetabelle wird in DWH erstellt<br />
Fehler bei Erstellung<br />
Vorgang abbrechen<br />
OK<br />
Changetabelle<br />
erstellt<br />
Vorgang<br />
abgebrochen<br />
Abbildung 3-18: Aktivitätsdiagramm Changetabelle erstellen<br />
10.09.2009 Seite 35 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Der Benutzer wählt ein Change Set und wählt im Kontext Menu (siehe Kapitel Spezifikation<br />
GUI) „Neue Change Tabelle erstellen“. Er erfasst auf dem Reiter Source auf dem GUI Owner<br />
und danach Tabellenname von der gewünschten Source Tabelle. Diese kann der Benutzer<br />
bequem aus Kombinationsfeldern auswählen. Die Daten für die Kombinationsfelder können<br />
aus der Source Datenbank geholt werden. Siehe Statements in Tabelle 3-8.<br />
Abbildung 3-19: GUI Changetabelle erstellen (Source)<br />
Danach wechselt der User auf der Reiter Destination und erfasst dort sämtliche<br />
Eigenschaften der Changetabelle. Der Owner kann ausgewählt werden. Der Inhalt des<br />
Kombinationfeldes kann aus dem DWH bezogen werden (siehe Tabelle 3-8). Der Name für<br />
die Changetabelle muss eingegeben werden. Die restlichen Angaben müssen zum Teil<br />
erfasst werden oder können aus der DWH DB bezogen werden. Wo welche Eigenschaften<br />
des Change Data Capture bezogen werden können, ist auf dem Datenbankmodell in diesem<br />
Dokument ersichtlich.<br />
Nachdem sämtliche Eigenschaften gepflegt sind, speichert der User die Changetabelle. Das<br />
Erstellungsstatement ist in Tabelle 3-8 ersichtlich. Als erstes wird auf der Source Datenbank<br />
die Tabelle instanziert und vorbereiten. Dies muss in der Regel nur einmal gemacht werden.<br />
Das Statement darf aber problemlos mehrere Male ausgeführt werden. Danach wird die<br />
Changetabelle auf dem DWH erstellt. Tritt bei diesen Vorgängen ein Fehler auf, so wird die<br />
originale Datenbankfehlermeldung ausgegeben und die Speicherung wird abgebrochen. Der<br />
Vorgang gilt erst als erfolgreich abgeschlossen, wenn sowohl die Instanzierung wie auch die<br />
Erstellung der Changetabelle erfolgreich sind. Zu beachten gilt, dass die Instanzierung der<br />
Sourcetabelle immer früher als das kreieren der Changetabelle gemacht werden muss.<br />
10.09.2009 Seite 36 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Abbildung 3-20: GUI Changetabelle erstellen Destination<br />
Vorgang<br />
Change Tabelle<br />
erstellen<br />
Source Tabelle<br />
konfigurieren<br />
Selektion Destination<br />
Owner<br />
Selektion Source<br />
Owner<br />
Selektion Source Table<br />
Tabelle 3-10: SQL Source Tabelle konfigurieren<br />
SQL<br />
DBMS_CDC_PUBLISH.CREATE_CHANGE_TABLE(<br />
owner => ’OWNER’,<br />
change_table_name =>’TABLE’ ,<br />
change_set_name => ’CSet_XXXXX_1’,<br />
source_schema => ’SRC_OWNER’,<br />
source_table => ’SRC_TABLE’,<br />
column_type_list => ’COLXXX NCHAR(5)’,<br />
capture_values => ’BOTH’ ,<br />
rs_id =>’Y’,<br />
row_id => 'Y' ,<br />
user_id => 'Y',<br />
timestamp => 'Y',<br />
object_id => 'Y' ,<br />
source_colmap => 'Y',<br />
target_colmap => 'Y',<br />
options_string => ’Tablespace XXXXX’);<br />
DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(<br />
'OWNER.TABLE');<br />
SELECT OWNER FROM ALL_TABLES GROUP BY OWNER;<br />
SELECT OWNER FROM ALL_TABLES GROUP BY OWNER;<br />
SELECT TABLE_NAME FROM ALL_TABLES<br />
WHERE OWNER = 'OWNER';<br />
10.09.2009 Seite 37 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.5.11 Change Tabelle löschen<br />
Dieses Aktivitätsdiagramm zeigt den Ablauf für die Löschung einer Change Tabelle.<br />
AD Change Tabelle löschen<br />
User wählt<br />
Change Tabelle aus<br />
Change Tabelle<br />
löschen<br />
Fehler bei Löschung<br />
Fehlermeldung<br />
OK<br />
GUI anpassen<br />
CS geändert<br />
Vorgang<br />
abgebrochen<br />
Abbildung 3-21: Aktivitätsdiagramm Change Tabelle löschen<br />
Der Benutzer wählt die entsprechenden Change Tabelle aus und wählt Change Tabelle<br />
löschen aus dem Kontext Menu (siehe Kapitel Spezifikation GUI) oder betätigt den<br />
Löschknopf in der Toolbox .<br />
Der User wird nochmals aufgefordert die Löschung zu bestätigen. Auf dieser Aufforderung<br />
kann er ein zusätzliches „force“ Flag setzen, welches die Löschung erzwingt.<br />
Bei erfolgreicher Löschung wird die TreeView entsprechend angepasst. Bei einem Fehler<br />
wird die originale Datenbankfehlermeldung ausgegeben. Im SQL Tab wird der<br />
entsprechenden SQL Befehl angezeigt, welcher gegen die DB ausgeführt wird.<br />
10.09.2009 Seite 38 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Abbildung 3-22: GUI Source Tabelle löschen<br />
Vorgang<br />
SQL<br />
Source Tabelle löschen DBMS_CDC_PUBLISH.DROP_CHANGE_TABLE(<br />
owner IN VARCHAR2,<br />
change_table_name IN VARCHAR2,<br />
force_flag IN CHAR);<br />
Tabelle 3-11: SQL Source Tabelle löschen<br />
3.2.5.12 Sourcesystem konfigurieren<br />
Kann Ziel. Dies wird noch nicht spezifiziert.<br />
10.09.2009 Seite 39 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.6 Use Case Diagramm (Subscribe)<br />
Use Case Diagramm: LDI (Subscribe)<br />
Subscription<br />
erstellen FA.51.010<br />
Subscribtion<br />
löschen FA.51.020<br />
Subscribtion<br />
aktivieren FA.51.030<br />
ETL - Programmierer<br />
SubscriberView<br />
erstellen FA.52.010<br />
SubscriberView<br />
löschen FA.52.020<br />
DWH System<br />
SubscriberView<br />
extend Window FA.52.030<br />
SubscriberView purge<br />
Window FA.52.040<br />
Abbildung 3-23: Use Case Diagramm (Subscribe)<br />
3.2.7 Übersicht Use Cases (Subscribe)<br />
ID Beschreibung M K<br />
FA.51<br />
Subscription<br />
FA.51.010 Subscription erstellen X<br />
FA.51.020 Subscription löschen X<br />
FA.51.030 Subscription aktivieren X<br />
FA.52<br />
Destinationsystem<br />
FA.52.010 SubscriberView erstellen X<br />
FA.52.020 SubscriberView löschen X<br />
FA.52.030 SubscriberView extend Window X<br />
FA.52.040 SubscriberView purge Window X<br />
Tabelle 3-12: Übersicht Use Cases (Subscribe)<br />
Der gesamt Subscription - Teil besteht aus Kann Anforderungen und wird voraussichtlich in<br />
der Form eines zweiten Releases umgesetzt.<br />
10.09.2009 Seite 40 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.8 Spezifikation GUI<br />
Wie schon im Pflichtenheft definiert, orientiert sich das GUI stark am SQL Developer von<br />
Oracle. In diesem Kapitel wird noch auf die verschiedenen Menu und anderen komplexen<br />
Steuerelemente eingegangen.<br />
3.2.8.1 Tree View<br />
Die TreeView ist das zentrale Navigationshilfsmittel der Applikation.<br />
Destination System (DWH)<br />
Source System<br />
Change Source<br />
Change Set<br />
Change Table<br />
Sie wird beim Start der Applikation geladen und<br />
aufgrund der Daten im der DWH Datenbank konfiguriert.<br />
Sie wird auch bei jeder Änderung aktualisiert. Auf den<br />
verschiedenen Knoten werden unterschiedliche Kontext<br />
Menus hinterlegt, welche mit der rechten Maustaste<br />
hervorgerufen werden können. Aussehen und Inhalt der<br />
Kontext Menus können im Kapitel Kontext Menu<br />
entnommen werden.<br />
3.2.8.2 Menu Bar<br />
Je nach Zustand der Applikation werden die Menupunkte aktiviert bzw. deaktiviert. Sichtbar<br />
sind die Menupunkte jedoch immer.<br />
Abbildung 3-24: Menu Bar<br />
Die Tabelle 3-11 zeigt zu welchem Zeitpunkt welche Menupunkte aktiv sind.<br />
Tabelle 3-13: Übersicht Menu Bar<br />
10.09.2009 Seite 41 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
3.2.8.3 Toolbar<br />
Auf der Toolbar befinden sich nur die nötigsten Werkzeuge. Wie diese ungefähr aussehen<br />
wird, ist auf der Abbildung 3-25 zu entnehmen. Sie wird viel in erster Linie für das Speichern<br />
und Löschen der verschiedenen Objekte verwendet.<br />
Abbildung 3-25: Übersicht Toolbar<br />
3.2.8.4 Kontext Menu auf TreeView<br />
Entsprechend dem Knoten, wo der User mit der rechten Maustaste das Kontext Menu<br />
hervorholt, sind die Menupunkte aktiviert oder nicht. In Tabelle 3-13 sieht man bei welchem<br />
Knoten, welche Punkte aktiviert sind.<br />
Tabelle 3-14: Übersicht Kontext Menu<br />
3.2.8.5 Statusbar<br />
In der Statusbar informiert den Benutzer über den Verlauf der Applikation. Sie wird soviel wie<br />
nötig aktualisiert.<br />
Abbildung 3-26: Übersicht Statusbar<br />
10.09.2009 Seite 42 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
4 Design<br />
4.1 Applikation<br />
Die Grundregeln der Applikation sind folgende: Die Applikation soll so gebaut werden, dass<br />
keine lokalen Konfigurationsfiles benötigt werden. Die einzigen Angaben, welche die<br />
Applikation lokal bezieht, ist die Anmeldung vom User. Die restlichen Informationen werden<br />
aus der angemeldeten Datenbank gewonnen. Auch dort sollen keine Toolspezifischen<br />
Tabellen angelegt werden, da die gewünschten Informationen in den Systemtabellen von<br />
Oracle vorhanden sind. Somit sollte auch das Setup sehr einfach gestaltet werden können.<br />
4.1.1 Übersicht Struktur<br />
Die Aufgabenstellung fordert kein spezifisches Design. Die Herausforderung besteht darin,<br />
ein für die Grösse der Applikation günstiges Design zu finden. Im .net Kurs wurde die<br />
Trennung in die verschiedenen standard Layer empfohlen.<br />
Abbildung 4-1: Software Layer<br />
• Der Presentation Layer enthält sämtliche Klassen im Zusammenhang mit dem GUI.<br />
• Der Business Layer enthält die Logik der Applikation.<br />
• Der Data Layer enthält die Klassen für die Kommunikation mit der Datenbank. Auch<br />
würde dieser das Lesen bzw. Schreiben von Konfigurationsfiles und Registry<br />
Einträgen steuern. Ein Ziel vom mir ist es aber, in dieser Applikation auf<br />
Konfigurationsfiles und Registry Einträge zu verzichten.<br />
• Der Service Layer enthält unterstützende Klassen, welche auch in späteren Projekten<br />
verwendet werden können und nicht im unmittelbaren Zusammenhang mit dieser<br />
Applikation stehen.<br />
10.09.2009 Seite 43 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
4.1.2 Source Code<br />
In diesem Kapitel sind Regeln für den Sourcecode angegeben. Die Konventionen für die<br />
Namensgebung ist in der Tabelle 4-2 ersichtlich und müssen für die Lesbarkeit eingehalten<br />
werden.<br />
Kürzel Objekttyp<br />
cbo ComboBox<br />
cbx CheckBox<br />
clp Clipboard<br />
cmd CommandButton<br />
cmnu Contextmenu<br />
ctl Control<br />
dat Data<br />
drv DriveListBox<br />
fil<br />
FileListBox<br />
fra Frame<br />
frm Form<br />
glb Global<br />
img Image<br />
lbl Label<br />
lst ListBox<br />
mdi MDIForm<br />
mnu Menu<br />
opt OptionButton<br />
pic PictureBox<br />
prp PropertyPage<br />
tmr Timer<br />
txt TextBox<br />
vsb VScrollBar<br />
Tabelle 4-1: Namenskonventionen Sourcecode<br />
Das Errorhandling wird in jeder Klasse für jeden Bereich nach dem gleichen Ablauf<br />
implementiert.<br />
10.09.2009 Seite 44 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
4.2 Datenbank<br />
Bei den DB Modellen wurden nur diese Tabellen berücksichtigt, welche für die Applikation<br />
benötigt werden. Die meisten Tabellen sind auf den Datenbanken nur logische Views, welche<br />
auf Systemtabellen zugreifen. Es handelt sich ausschliesslich um Oracle Tabellen. Das Tool<br />
soll ausschliesslich mit diesen arbeiten und kann somit gegen jede Oracle Enterprise<br />
Datenbank verwendet werden.<br />
4.2.1 DB Model DWH (Destination System)<br />
Abbildung 4-2: DB Model DWH<br />
4.2.1.1 all_change_sources<br />
In dieser View sind die Eigenschaften aller Change Source enthalten.<br />
4.2.1.2 all_change_sets<br />
In dieser View sind die Eigenschaften aller Change Sets enthalten<br />
4.2.1.3 all_change_tables<br />
In dieser View sind die Eigenschaften aller Change Tabellen enthalten<br />
4.2.1.4 all_published_columns<br />
In dieser View sind alle Spalten der Change Tabellen und die dazugehörigen Eigenschaften<br />
enthalten.<br />
10.09.2009 Seite 45 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
4.2.1.5 all_tables<br />
In dieser View sind alle Tabellen der Datenbank enthalten. Aus dieser Tabelle werden<br />
Informationen wie zum Beispiel der Owner für die Erfassung einiger Objekte gewonnen.<br />
4.2.2 DB Model Source Datenbank<br />
Abbildung 4-3: DB Model Source Datenbank<br />
4.2.2.1 all_tab_columns<br />
Diese View enthält die Eigenschaften der Spalten aller Tabellen auf einer Oracle Datenbank.<br />
Diese Daten werden bei der Erfassung der Changetabellen auf dem GUI benötigt<br />
4.2.2.2 all_tables<br />
In dieser View sind alle Tabellen der Datenbank enthalten. Aus dieser Tabelle werden<br />
Informationen wie zum Beispiel der Owner oder Namen der Sourcetabellen für die Erfassung<br />
auf dem GUI bezogen.<br />
4.2.2.3 all_capture_prepared_tables<br />
In dieser View sind die Tabellen der Sourcedatenbank eingetragen, welche für das Data<br />
Capture vorbereitet sind (Diese Tabellen wurden instanziert).<br />
10.09.2009 Seite 46 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
5 Testing<br />
5.1 Ziel des Testens<br />
• Verifikation der Anforderungen<br />
• Softwarefehler früh erkennen<br />
5.2 Übersicht der Tests<br />
Objekt<br />
Testmethode nach Phase<br />
Entwurf<br />
Realisierung<br />
GUI Usability Walkthrough Usability Test<br />
Dokumentation<br />
Review<br />
Source Code<br />
Review<br />
Funktionale Anforderungen<br />
Programm starten<br />
Login<br />
Destinationsystem<br />
konfigurieren<br />
Change Source konfigurieren<br />
Change Source löschen<br />
Change Set konfigurieren<br />
Change Set löschen<br />
Changetabelle ändern<br />
Changetabelle purgen<br />
Changetabelle erstellen<br />
Changetabelle löschen<br />
Sourcesystem konfigurieren<br />
Nicht funktionale Anforderungen<br />
Siehe Kapitel 3.3.1 in<br />
Pflichtenheft<br />
Tabelle 5-1: Übersicht Tests<br />
5.3 Testablauf<br />
5.3.1 Ablauf<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
Systemtest<br />
1. Test-Fälle werden erfasst<br />
2. Ausführen der Test-Fälle<br />
3. Rapportieren und korrigieren der Fehler<br />
4. Wiederholen von Schritt 2 - 3 bis alle Tests erfolgreich sind<br />
5. Schreiben des Test-Reports<br />
5.3.2 Test Dokumentation<br />
• Die Test-Fälle werden in einem spezifischen Dokument festgehalten.<br />
• Gefundene Fehler werden in einem spezifischen Dokument festgehalten.<br />
10.09.2009 Seite 47 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
5.3.3 Testmethoden<br />
Analyse / Entwurf:<br />
Realisierung:<br />
Abnahme:<br />
Review der Requirements und Dokumente, Usability-<br />
Walkthrough der GUI Skizzen und des ersten Prototyps<br />
Systemtests auf Testsystem<br />
Subset von Systemtests auf Ziel-System<br />
5.3.4 Testfälle<br />
Detailspezifikation und Pflichtenheft dienen als Grundlage für die Identifikation der Testfälle<br />
für die Unit- und Systemtests.<br />
Folgende Eigenschaften werden für jeden Testfall erfasst:<br />
• Fallnummer<br />
• Testfall<br />
• Testschritt Nummer<br />
• Testschritt<br />
• Vorbedingungen<br />
• Beschreibung Testfall<br />
• Erwartetes Ergebnis<br />
• Tatsächliches Ergebnis<br />
• Daten Input<br />
• Daten Output<br />
• Check / Verifikation<br />
5.4 System Test<br />
Bei den Systemtests werden sämtliche funktionalen und nicht funktionalen Anforderungen<br />
getestet. Jeder Use Cases wird manuell durchgetestet. Dazu werden Schnittstellen in den<br />
verschiedenen Möglichkeiten erstellt.<br />
5.5 Usability Test<br />
Nach der Detailspezifikation ist das GUI auf Papier entworfen. Ein erster Walkthrough wird<br />
mit dem ETL - Programmierer durchgeführt und die Erkenntnisse werden dokumentiert und<br />
fliessen direkt in die Entwicklung des Tools ein.<br />
Wenn die erste Lauffähige Version der Applikation erstellt ist, wird ein Usability Test mit dem<br />
ETL - Programmierer durchgeführt. Auch dieses Resultat soll, sofern es mit dem Aufwand<br />
des Projekts zu vereinbaren ist, in die Applikation einfliessen. Ansonsten werden die<br />
Erkenntnisse festgehalten zu einem späteren Zeitpunkt umgesetzt.<br />
10.09.2009 Seite 48 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
5.6 Testergebnisse<br />
5.6.1 Systemtests<br />
Die Tests wurden alle durchgeführt. Es wurden 29 Tests für die funktionalen Anforderungen<br />
und 17 für die nicht funktionalen Anforderungen erfasst. Diese wurden in einem separaten<br />
Excelfile erfasst. Aufgrund des Formates konnten die Testfälle leider nicht in dieses<br />
Dokument integriert werden.<br />
Bis auf drei Tests waren alle erfolgreich. Die nicht erfolgreichen Tests konnten jedoch<br />
korrigiert werden. Nach einem zweiten Testlauf, konnten alle Tests erfolgreich abgeschlossen<br />
werden.<br />
5.6.2 Usabilitytests<br />
Ein erster Usability Test wurde nach dem Entwurf des GUI für die Detailspezifikation<br />
gemacht. Dieser Walkthrough war sehr aufschlussreich, da der ETL Programmierer auch<br />
genau wusste um welche Technologie es sich handelt und er sich dadurch genaue<br />
Vorstellungen hatte, wie das Endprodukt aussehen könnte. Ein Ziel für das Tool war eine<br />
intuitive Bedienbarkeit. Daher musste die Testperson ohne vorherige Angaben und<br />
Erklärungen berichten, was im aufgefallen ist und fragen, was im unklar war. Diese Fragen<br />
ergaben meist kleine Änderungen am GUI. Diese Änderungen wurden danach mittels<br />
Change Requests erfasst und flossen direkt in die Entwicklung. Dies ersparte einige<br />
nachträgliche Korrekturen.<br />
Das gleiche wurde danach noch zweimal mit den ersten Versionen des Tools gemacht. Diese<br />
Tests können als sehr erfolgreich angesehen, da ich dadurch einige Zeit einsparen konnte.<br />
An dieser Stelle möchte ich dem ETL Programmierer auch herzlich für seine Zeit und sein<br />
Engagement bedanken.<br />
10.09.2009 Seite 49 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
6 Planung und Zeitmanagement<br />
6.1 Vorgehensmodell<br />
Beim Vorgehensmodell habe ich mich an dem klassischen Wasserfallmodel orientiert. Da in<br />
diesem Projekt die Phasen ziemlich genaue abgrenzbar sind und die Laufzeit auch ziemlich<br />
kurz ist (5 Monate), sollte sich dieses Vorgehen gut eigenen. Auch für ein Einmannprojekt<br />
fand ich dieses Modell sehr geeignet. Folgende Phasen habe ich durchlaufen:<br />
Abbildung 6-1: Vorgehensmodell<br />
Nachfolgend sind die Inhalte und Resultate pro Projektphase aufgelistet:<br />
Projektphase Inhalt Resultat<br />
Initialisierung • Projektinitialisierung Auftraggeber<br />
• Projektantrag<br />
• Kick-Off Meeting Experte<br />
Analyse • Analyse der bestehenden Lösung<br />
• Pflichtenheft<br />
• Analyse möglicher Lösungswege<br />
• Projektplan<br />
• Diskussion mit Auftraggeber und ETL<br />
Programmierer<br />
• Definition Ziele und Anforderungen<br />
• Projektablauf festlegen<br />
• Erstellung Pflichtenheft<br />
Entwurf • Erhöhung des Verständnisses der<br />
Anforderungen<br />
• Detailspezifikation<br />
• Erstellen der notwendigen UML<br />
Diagramme<br />
• Erarbeiten der Detailspezifikation<br />
• Definition der Testfälle<br />
Realisierung • Konfiguration der Umgebung<br />
• Entwicklung GUI<br />
• Testen der Software<br />
• Erstellung Benutzerhandbuch<br />
Einführung • Umsetzung der neuen Technik in<br />
einem Bereich<br />
• Fertigstellung <strong>Diplombericht</strong><br />
• Präsentation der Diplomarbeit<br />
Nutzung • Nicht Bestandteil der Diplomarbeit<br />
• Flächendeckender Einsatz der neuen<br />
Technik<br />
Tabelle 6-1: Inhalte und Resultate der Projektphasen<br />
• Benutzerhandbuch<br />
• Installationshandbuch<br />
• Software<br />
• Testprotokoll<br />
• <strong>Diplombericht</strong><br />
• Komplette ETL<br />
Schnittstelle auf<br />
neuen Technik<br />
umgesetzt<br />
10.09.2009 Seite 50 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
6.2 Zeitmanagement<br />
Arbeit<br />
Aufwand<br />
Ist pro<br />
geplant Ist Kategorie<br />
Projektleitung 24 21 21<br />
Dokumentation 124 116<br />
Projektantrag 2 3<br />
Pflichtenheft 36 40<br />
Detailspezifikation 36 32<br />
Benutzerhandbuch 14 10<br />
Diverse Protokolle 8 9<br />
<strong>Diplombericht</strong> 28 22<br />
Prototyping 42 58 58<br />
Analyse 24 21<br />
Bestehende Lösung 8 4<br />
Lösungswege 14 14<br />
Entscheide 2 3<br />
Entwurf 28 30<br />
Architektur 12 10<br />
Design 16 20<br />
Realisierung 132 134<br />
Installation Testumgebung 10 7<br />
Konfiguration Umgebung 10 6<br />
Ausbildung .net 32 32<br />
Programmierung<br />
Konfigurationstool 44 56<br />
Testing 36 33<br />
Einführung 32 27<br />
Konfiguration produktive<br />
Umgebung 10 7<br />
Installation Konfigurationstool 10 6<br />
Inbetriebsetzung Schnittstelle 8 11<br />
Schulung Anwender 4 3<br />
Aufwand Total 392 407 407<br />
Tabelle 6-2: Zeitmanagement<br />
Angaben zum Zeitmanagement und warum die geplante Zeit nicht ganz gereicht hat, werden<br />
im Kapitel Ausblick und Schlusswort gemacht.<br />
10.09.2009 Seite 51 von 80
6.3 Projektplan / Zeitplan und Meilensteine<br />
Abbildung 6-2: Projektplan<br />
10.09.2009 Seite 52 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
6.4 Termine<br />
Termin<br />
Ziel<br />
20.04.2009 Review Pflichtenheft<br />
23.04.2009 Abgabe Pflichtenheft<br />
04.06.2009 Review Entwurf (Detailspezifikation)<br />
20.08.2009 Review Realisierung<br />
10.09.2009 Abgabe Diplomarbeit<br />
11.09.2009 Präsentation Diplomarbeit<br />
Tabelle 6-3: Termine<br />
6.5 Projektmanagement<br />
Der Projektplan kann aufgrund neuer Erkenntnisse einer vorgängigen Phase überprüft und<br />
angepasst werden. In der Entwurfsphase wird nach Bedarf eine zweite Iteration durchgeführt,<br />
um die Analyse zu verfeinern und zu vertiefen. In diesem Projekt wurde keine zweite Iteration<br />
benötigt.<br />
6.6 Meetings / Reviews /Statusmeldungen<br />
6.6.1 Meetings<br />
Mit dem Experten wurde nach jeder Phase ein Meeting durchgeführt.<br />
Mit dem Betreuer, welcher auch gleichzeitig der Auftraggeber darstellt, wurden nur nach<br />
Bedarf Meetings durchgeführt.<br />
6.7 Reviews<br />
Die Meetings mit dem Experten, wurden meist als Review einer vergangenen Phase<br />
verwendet.<br />
6.7.1 Statusmeldungen<br />
Dem Experten und dem Betreuer wurde jede zweite Woche ein Statusreport (Vorlage von<br />
BFH) gesendet, damit diese über den Projektfortschritt auf dem Laufenden waren.<br />
10.09.2009<br />
Seite 53 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
7 Erfüllung der Anforderungen und Ziele<br />
In diesem Kapitel werden die gesteckten Ziele und die verschiedenen Anforderungen mit dem<br />
Resultat verglichen. In den untenstehenden Tabellen gibt es jeweils eine Spalte M oder K<br />
welche angeben, ob es jeweils eine Muss bzw. Kann Anforderungen ist.<br />
7.1 Nicht funktionale Anforderungen<br />
ID Beschreibung M K Erfüllt<br />
NFA.01 Architektur / Plattform<br />
NFA.01.010 Das GUI muss auf eine Emmi Standard PC lauffähig sein X <br />
NFA.01.020 Als Datenbanksystem muss Oracle unterstützt werden X <br />
NFA.01.030 Die Erstellung des GUI soll im Visual Studio .net erfolgen X <br />
NFA.02 Zuverlässigkeit / Stabilität<br />
NFA.02.010 Die Stabilität der neue Schnittstellentechnik soll<br />
mindestens der jetzigen Technik entsprechen<br />
NFA.03 Performance<br />
NFA.03.010 Die Belastung der Quellsysteme soll um mindestens 70% X<br />
verringert werden<br />
<br />
NFA.03.020 Die Daten jeder Schnittstelle sollen täglich übernommen X<br />
werden können.<br />
<br />
NA.04 Konfiguration<br />
NFA.04.010 Mit der neuen Technik soll der Aufwand der Konfiguration X<br />
einer neuen Schnittstelle um 50% verringert werden<br />
<br />
NFA.04.020 Auf Trigger in den Quellsystemen soll verzichtet werden X<br />
können<br />
<br />
NFA.05 Monitoring / Logging<br />
NFA.05.010 Alle Konfigurationen sollen geloggt und ausgewertet<br />
X<br />
werden können.<br />
<br />
NFA.06 Dokumentation<br />
X *<br />
NFA.06.010 Installationshandbuch muss erstellt werden X <br />
NFA.06.020 Benutzerhandbuch muss erstellt werden X <br />
NFA.06.030 Projektbericht muss erstellt werden X <br />
NFA.07 Sicherheit<br />
NFA.07.010 Die Benutzerverwaltung soll dem Emmi Standard für<br />
X<br />
Datenbankbenutzer entsprechen<br />
<br />
NFA.08 Sprache<br />
NFA.08.010 Die Sprache im Tool muss englisch sein X <br />
NFA.08.020 Die Dokumentation soll ausschliesslich in deutscher X<br />
Sprache erfolgen.<br />
<br />
NFA.09 Usability<br />
NFA.09.010 Ein ETL - Programmierer soll sich intuitiv im GUI<br />
X<br />
zurechtfinden (Know - How CDC wird vorausgesetzt)<br />
<br />
NFA.09.020 Das System soll den User unterstützen möglichst wenig X<br />
Fehler zu machen<br />
<br />
Tabelle 7-1: Anforderungskatalog nicht funktionaler Anforderungen<br />
* Diese Anforderung kann erst in ca. einem halben Jahr abschliessend beurteilt werden.<br />
10.09.2009 Seite 54 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
7.2 Funktionale Anforderungen<br />
7.2.1 Publisher Teil<br />
ID Beschreibung M K Erfüllt<br />
FA.01<br />
Startup Applikation<br />
FA.01.010 Programm starten X <br />
FA.01.020 Login X <br />
FA.02<br />
Destinationsystem<br />
FA.02.010 Destinationsystem konfigurieren X -<br />
FA.03<br />
Change Source<br />
FA.03.010 Change Source konfigurieren X <br />
FA.03.020 Change Source löschen X <br />
FA.04<br />
Change Set<br />
FA.04.010 Change Set konfigurieren X <br />
FA.04.020 Change Set löschen X <br />
FA.05<br />
Change Tabelle<br />
FA.05.010 Changetabelle ändern X <br />
FA.05.020 Changetabelle purgen X <br />
FA.05.030 Changetabelle erstellen X <br />
FA.05.040 Changetabelle löschen X <br />
FA.06<br />
Sourcesystem<br />
FA.06.010 Sourcesystem konfigurieren X <br />
Tabelle 7-2: Übersicht Use Cases (Publish)<br />
Diese Kann Anforderungen wurden verworfen (Change Request ID 2)<br />
- Diese Kann Anforderung wurde nicht implementiert.<br />
7.2.2 Subscriber Teil<br />
ID Beschreibung M K Erfüllt<br />
FA.51<br />
Subscription<br />
FA.51.010 Subscription erstellen X -<br />
FA.51.020 Subscription löschen X -<br />
FA.51.030 Subscription aktivieren X -<br />
FA.52<br />
Destinationsystem<br />
FA.52.010 SubscriberView erstellen X -<br />
FA.52.020 SubscriberView löschen X -<br />
FA.52.030 SubscriberView extend Window X -<br />
FA.52.040 SubscriberView purge Window X -<br />
Tabelle 7-3: Übersicht Use Cases (Subscribe)<br />
- Der gesamte Subscriber Teil wird in einer zukünftigen Version umgesetzt<br />
10.09.2009 Seite 55 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
7.3 Ziele<br />
Die gesetzten Ziele konnten wie in Tabelle 7-1 ersichtlich erreicht werden. Einige wurden<br />
übertroffen, da die Daten mindestens jede halbe Stunde (Redolog Switch auf der<br />
Sourcedatenbank) an das Datawarehouse übertragen werden. Somit können sicher alle<br />
Tabellen täglich in den Stagingbereich übernommen werden, egal wie gross diese sind.<br />
Auch die Belastung kann sehr gering gehalten werden, da nur noch das senden der<br />
archivierten Redologs das Sourcesystem belasten und eine solche Belastung kann fast<br />
vernachlässigt werden.<br />
Um die Stabilität abschliessend zu beurteilen, bedarf es längerer Erfahrung. Da Change Data<br />
Capture eine etablierte Technologie bei Oracle darstellt, sollte auch dies kein Problem<br />
darstellen.<br />
Mit dem entwickelten Tool ist es nun auch möglich, eine Tabelle innerhalb kürzester Zeit in<br />
den Stagingbereich zu bringen und zu konfigurieren. Die anschliessende Transformation der<br />
Daten muss jedoch weiterhin gemacht werden und in diesem Teil wird keine weitere Zeit<br />
eingespart.<br />
Auf die Trigger in der Source Datenbanken kann in Zukunft verzichtet werden, da Change<br />
Data Capture nur die Änderungen überträgt.<br />
Der Grundstein für eine schlanke Übernahme ist nun gelegt, nun gilt es diese Technologie<br />
flächendeckend einzuführen.<br />
10.09.2009 Seite 56 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
8 Erfahrungen<br />
8.1 Resultat<br />
Mit dem Resultat bin ich grundsätzlich zufrieden. Alle Muss Anforderungen wurde umgesetzt<br />
und einige Kann Anforderungen konnten auch umgesetzt und getestet werden. Zudem<br />
konnte, durch die zahlreichen Change Requests, die Qualität des Tools gegenüber der ersten<br />
Planung zusätzlich verbessert werden.<br />
Bei der Programmierung hatte ich einige Ideen, welche sich hinterher als sehr praktisch<br />
erwiesen haben. Diese Ideen haben mich aber am Anfang sehr viel Zeit gekostet. Dadurch<br />
konnte die geplante Zeit für den Programmieraufwand um einige Stunden nicht eingehalten<br />
werden. Da ich nicht als Programmierer tätig bin, hätte man wahrscheinlich an einigen Stellen<br />
eine professionellere Lösung finden können. Der technische Teil hat aber grossen Spass<br />
gemacht und war für mich sehr lehrreich. Speziell aufwendig war das GUI, welches ich auch<br />
ein wenig unterschätzt habe. Es konnten aber trotzdem viele Funktionen, welche den<br />
Benutzer unterstützen (Shortcuts, Toolbar, Verhinderung von Fehleingaben, etc.) eingebaut<br />
werden. Auch die TreeView wurde mit selbst kreierten Icons ausgestattet.<br />
Ein Punkt welcher man hervorheben könnte ist, dass das Tool keine einzige Tabelle oder<br />
Konfigurationsdatei benötigt. Es bezieht alle Informationen aus den Standardtabellen der<br />
Oracle Datenbank und der Change Data Capture Technologie und auch das Login<br />
funktioniert über die normale Benutzerverwaltung der Datenbank.<br />
8.2 Ausblick<br />
Während der Entwicklung des Tools, sind mir immer Funktionen aufgefallen, welche die<br />
tägliche Arbeit des ETL - Programmierers vereinfachen könnten. Diese Funktionen haben<br />
zum Teil gar nichts mit der Technologie Change Data Capture zu tun, wären aber zum Teil<br />
extrem praktisch. Deshalb wird das Tool in Zukunft einige neue Features erfahren.<br />
Geplante Features für Version 2:<br />
• Verwaltung Subscribtion - Views<br />
• Dashboard um über den Betriebszustand einfach eine Überblick zu erhalten<br />
• Datenansicht der Changetabellen<br />
• Einige kleinere Anpassungen am GUI<br />
10.09.2009 Seite 57 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
8.3 Schlusswort<br />
Die ganze Zeit der Diplomarbeit war spannend, aber auch sehr anspruchsvoll. Da ich<br />
während der ganzen Zeit 100% in der Firma engagiert war und dadurch nicht mehr allzu viel<br />
Freizeit hatte. Ich konnte in dieser Zeit aber äusserst wertvolle Erfahrungen sammeln.<br />
Was bei der Dokumentation immer ein Problem war, war einen gesunden Mittelweg zwischen<br />
Detaillierungsgrad, Wahrung der Übersicht und Aufwand zu finden. Daher bin ich eigentlich<br />
positiv Überrascht, dass der Terminplan in vielen Bereichen sehr gut eingehalten werden<br />
konnte. Als Highlight kann sicher die Detailspezifikation angesehen werden. Hätte ich doch<br />
viel lieber schon im Mai mit der Umsetzung begonnen. Der Aufwand für eine genauere<br />
Analyse hat sich aber voll ausbezahlt.<br />
Zu guter Letzt möchte ich es nicht unterlassen, mich bei meinem Experten Herr Thomas<br />
Glauser zu bedanken, welcher mich durch dieses halbe Jahr begleitet hat und mir mit guten<br />
Ratschlägen zur Seite stand.<br />
10.09.2009 Seite 58 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9 Installations- und Betriebshandbuch<br />
Für das Installations- und Betriebshandbuch gibst es separates Dokument, welches auch auf<br />
der CD mit dem Setup vorhanden sein wird. Im diesem <strong>Diplombericht</strong> werden nur die<br />
wichtigen Kapitel angehängt.<br />
9.1 Technische Umgebung<br />
Dieses Kapitel gibt Auskunft über die technische Umgebung, in welcher das Tool LDI<br />
einwandfrei funktioniert. Bei unterschiedlichen Versionen kann ein einwandfreier Betrieb nicht<br />
garantiert werden.<br />
9.1.1 Client<br />
Betriebssystem: Windows XP<br />
DB-Verbindung: Oracle Client 11g oder 10g<br />
Framework: Microsoft .net Framework 3.5<br />
9.1.2 Datenbank<br />
9.1.2.1 RDBMS<br />
RDBMS:<br />
Oracle Enterprise Database11g<br />
9.1.2.2 Server Umgebung<br />
Das Betriebssystem des RDBMS ist nicht relevant für die Funktionalität von LDI.<br />
10.09.2009 Seite 59 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.2 Installation<br />
Die Installation muss in der gleichen Reihenfolge wie in diesem Kapitel vollzogen werden.<br />
9.2.1 Datenbank<br />
9.2.1.1 Konfiguration Change Data Capture<br />
Hier wird auf das Dokument des Herstellers (Oracle) verwiesen.<br />
Oracle Data Warehousing Guide 11g Release 1 (B28313-02)<br />
9.2.1.2 Konfiguration LDI Tool<br />
9.2.1.2.1 View erstellen (Abfrage Alert Log)<br />
Damit das Tool die Alerts von der Datawarehouse Datenbank abfragen kann, muss eine View<br />
erstellt werden:<br />
1. Auf Datawarehouse als User SYS (as sysdba) einloggen.<br />
2. View mit untenstehendem SQL erstellen<br />
Vorgang<br />
SQL<br />
View erstellen CREATE OR REPLACE VIEW "SYS"."LDI_ALERTLOG" AS<br />
SELECT * FROM X$DBGALERTEXT WITH READ ONLY<br />
Tabelle 9-1: SQL View erstellen<br />
9.2.1.2.2 User erstellen<br />
Auf dem Datawarehouse und auf den entsprechenden Source Datenbanken muss ein<br />
Publisher User erstellt werden:<br />
1. Auf Datawarehouse oder auf der Source Datenbank als User System einloggen.<br />
2. User mit untenstehendem SQL erstellen<br />
Vorgang<br />
SQL<br />
User erstellen CREATE USER CDC_PUBLISHER IDENTIFIED BY *Password<br />
DEFAULT TABLESPACE *Tablespacename;<br />
GRANT DBA TO CDC_PUBLISHER;<br />
Tabelle 9-2: SQL User erstellen<br />
*Password:<br />
*Tablespacename:<br />
Gewünschtes Passwort eingeben<br />
Als Tablespacename soll der Tablespace angegeben werden, welcher<br />
die Change Tabellen enthalten wird.<br />
10.09.2009 Seite 60 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.2.1.2.3 DB Links zu gewünschten Source - Systemen erstellen<br />
Damit das Tool die Meta-Daten von den Source Datenbanken beziehen kann, muss ein<br />
Datenbanklink pro Source Datenbank auf der Datawarehouse Datenbank erstellt werden.<br />
1. Auf Datawarehouse oder auf der Source Datenbank als User System einloggen.<br />
2. Link mit untenstehendem SQL erstellen<br />
Vorgang<br />
SQL<br />
Link erstellen CREATE PUBLIC DATABASE LINK *Linkname<br />
USING *Servicename<br />
Tabelle 9-3: SQL Link erstellen<br />
*Linkname:<br />
*Servicename:<br />
Der Linkname muss zwingend der gleiche Name sein wie der<br />
Servicename<br />
Der Servicename der Source - Datenbank angeben<br />
9.2.2 Setup<br />
Um das Setup zu starten muss die Datei EmmiLDISetup.msi ausgeführt werden. Ansonsten<br />
ist das Setup selbsterklärend.<br />
Startfenster<br />
Abbildung 9-1: Setup Startfenster<br />
10.09.2009 Seite 61 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Auswahl Installationsordner<br />
Abbildung 9-2: Setup Installationsordner<br />
Bestätigung Installation<br />
Abbildung 9-3:Setup Bestätigung Installation<br />
10.09.2009 Seite 62 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Ausführung Installation<br />
Abbildung 9-4:Setup Ausführung Installation<br />
Installation erfolgreich<br />
Abbildung 9-5: Setup Installation erfolgreich<br />
10.09.2009 Seite 63 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3 Benutzerhandbuch<br />
In diesem Benutzerhandbuch sind die Möglichkeiten und die Handhabung des LDI Tools<br />
beschrieben. Es bietet einen groben Überblick über die Funktionen dieses Tools. Um Change<br />
Data Capture zu administrieren wird aber ein gutes Know-How über diese Technologie<br />
vorausgesetzt. Auf diese Technologie wird jedoch in diesem Handbuch nicht eingegangen,<br />
da diese in unzähligen Oracle Dokumenten zu genüge beschrieben ist. Ein empfehlenswertes<br />
Dokument ist der Oracle Data Warehousing Guide 11g Release 1 (B28313-02) hier wird<br />
Change Data Capture im Kapitel 16 genau beschrieben.<br />
9.3.1 Über LDI<br />
Mit LDI Version 1.0 kann die Technologie Change Data Capture von Oracle verwaltet<br />
werden. Es sind sowohl Changesourcen, Changesets und Changetables administrierbar. Alle<br />
möglichen Funktionen können in diesem Tool ausgeführt oder angepasst werden. In einer<br />
späteren Version werden auch die Subscription View administriert werden können.<br />
9.3.2 Startup LDI<br />
Beim aufstarten des Programms, wird die Loginmaske (Abb. 4-1) angezeigt. Dort müssen die<br />
Benutzerangaben (Publisher) der Datawarehouse Datenbank angegeben werden.<br />
Die Anmeldung erfolgt genau gleich wie diese bei normalen Oracle Datenbanken. Für<br />
detaillierte Angaben wird an dieser Stelle auf die Dokumentation von Oracle verwiesen.<br />
Abbildung 9-6: Loginmaske<br />
10.09.2009 Seite 64 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.3 Benutzeroberfläche<br />
Die Benutzeroberfläche (Abb. 4-2) ist wie die gewohnten Microsoft Produkte aufgeteilt. Sie<br />
lehnt sich auch sehr an den SQL Developer von Oracle. Am oberen Rand befinden sich die<br />
Menuleiste und die Toolbar. Am unteren Rand ist die Statusleiste angebracht.<br />
Auf der linken Seite befindet sich eine TreeView, welche die zentrale Navigation für das<br />
gesamt Tool darstellt. Der rechte Teil ist der eigentliche Arbeitsbereich.<br />
<br />
<br />
<br />
<br />
Abbildung 9-7: Benutzeroberfläche<br />
1. Menuleiste & Toolbar<br />
2. TreeView<br />
3. Eigenschaften der ausgewählten Objekte<br />
4. Statusbar<br />
10.09.2009 Seite 65 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.4 TreeView<br />
Die TreeView ist die zentrale Navigation des LDI Tools. Sie zeigt die gesamte Hierarchie des<br />
Change Data Capture eines Datawarehouses. Mit Doppelklick auf ein Knoten, wird das<br />
ausgewählte Objekt im rechten Arbeitsbereicht des Tools angezeigt und kann danach<br />
bearbeitet werden. Ein Klick mit der rechten Maustaste bewirkt das Anzeigen eines<br />
Kontextmenüs. Auf diesem Menu sind nur die möglichen Punkte aktiviert. Die anderen<br />
Punkte sind zwar sichtbar, aber nicht auswählbar.<br />
Abbildung 9-8: TreeView<br />
10.09.2009 Seite 66 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.5 Objekte bearbeiten<br />
Wenn ein Objekt bearbeitet wird, werden im rechten Teil der Applikation die verschiedenen<br />
Eigenschaften und Optionen angezeigt. Dieser Teil ist mit verschiedenen Registern unterteilt.<br />
<br />
Abbildung 9-9: Register des Bearbeitungsteils<br />
1. Register zur Erfassung der Eigenschaften und Optionen der Source Datenbank.<br />
2. Register zur Erfassung der Eigenschaften und Optionen der Datawarehouse<br />
Datenbank.<br />
3. Dieses Register enthält die zuletzt ausgeführten SQL Statements im Zusammenhang<br />
mit Change Data Capture. Diese Statements können auch in einem normalen SQL-<br />
Tool ausgeführt werden und sollen detailliert aufzeigen, was genaue konfiguriert<br />
wurde.<br />
4. Im Register Log sind die Alertmeldungen der DWH Datenbank aufgelistet. Dies gibt<br />
detailliert Auskunft über den Zustand der DB und der verschiedenen Capture<br />
Prozesse.<br />
9.3.6 Changesourcen bearbeiten<br />
Wenn eine Changesource zur Bearbeitung ausgewählt wird oder eine neue erstellt werden<br />
soll, werden im rechten Teil der Applikation die Eigenschaften angezeigt. Bei Erstellung<br />
können alle Eigenschaften erfasst werden. Bei Änderung einer Changesource können nur<br />
diese Felder verändert werden, welche noch änderbar sind. Die Applikation lässt nur Zeichen<br />
zur Eingaben zu, welche auch von Oracle unterstützt werden, dies soll den Benutzer vor<br />
Fehleingaben schützen.<br />
<br />
<br />
<br />
<br />
Abbildung 9-10: Changesource bearbeiten<br />
1. Changesource Name<br />
2. Beschreibung der Changesource<br />
3. Auswahl der Source Datenbank (hier werden nur diese Datenbanken angezeigt,<br />
welche auch mit Change Data Capture funktionieren)<br />
4. Erfassung der SCM (System Change Number). Mit dieser Option kann angegeben<br />
werden, ab welchem Zeitpunkt der Captureprozess starten soll. Der momentane Wert<br />
wird jeweils automatisch vom Tool abgefragt und angezeigt. Mit der Eingabe NULL<br />
wird diese Option so belassen wie sie ist.<br />
10.09.2009 Seite 67 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.7 Changesets bearbeiten<br />
Wenn ein Changeset zur Bearbeitung ausgewählt wird oder ein neues erstellt werden soll,<br />
werden im rechten Teil der Applikation die Eigenschaften angezeigt. Bei Erstellung können<br />
alle nötigen Eigenschaften erfasst werden. Bei Änderung einer Changesource können nur<br />
diese Felder verändert werden, welche noch änderbar sind. Die Applikation lässt nur Zeichen<br />
zur Eingaben zu, welche auch von Oracle unterstützt werden, dies soll den Benutzer vor<br />
Fehleingaben schützen.<br />
<br />
<br />
<br />
<br />
<br />
<br />
Abbildung 9-11: Changesets bearbeiten<br />
1. Changeset Name<br />
2. Beschreibung des Changesets<br />
3. Name der übergeordneten Changesource. Dieser kann nie verändert werden.<br />
4. Option Stop on DDL<br />
5. Hier kann der Zeitraum des Capturings genau definiert werden. Bei der Auswahl<br />
NULL werden keine zeitlichen Begrenzungen gesetzt<br />
6. Hier können drei weitere Optionen für den Capturingprozess gesetzt werden:<br />
• Enable Capture<br />
• Recover after Error<br />
• Remove DDL<br />
Die Optionen für die Changesets sind im Dokument Oracle Data Warehousing Guide 11g<br />
Release 1 (B28313-02) ausführlich beschrieben.<br />
10.09.2009 Seite 68 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.8 Changetabellen bearbeiten<br />
Wenn eine Changetabelle zur Bearbeitung ausgewählt wird oder eine neue erstellt werden<br />
soll, werden im rechten Teil der Applikation die Eigenschaften angezeigt. Bei Erstellung<br />
können alle nötigen Eigenschaften erfasst werden. Bei Änderung einer Changesource<br />
können nur diese Felder verändert werden, welche noch änderbar sind. Die Applikation lässt<br />
nur Zeichen zur Eingaben zu, welche auch von Oracle unterstützt werden, dies soll den<br />
Benutzer vor Fehleingaben schützen.<br />
9.3.8.1 Source Properties<br />
Hier werden die Angaben der Sourcetabelle erfasst.<br />
<br />
<br />
<br />
Abbildung 9-12: Changetabelle Source bearbeiten<br />
1. Auswahl Source Datenbank. Diese kann nie verändert werden, da sie vom<br />
übergeordneten Changeset vorgegeben ist.<br />
2. Owner der Source Tabelle. Bei dieser Auswahl werden nur mögliche Owner<br />
angezeigt. Systemuser sind nicht enthalten.<br />
3. Auswahl der Sourcetabelle. Hier werden nur diese Tabellen zur Verfügung gestellt,<br />
welche zum ausgewählten Owner gehören.<br />
Die Optionen für die Changesets sind im Dokument Oracle Data Warehousing Guide 11g<br />
Release 1 (B28313-02) ausführlich beschrieben.<br />
10.09.2009 Seite 69 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.8.2 Destination Properties<br />
Hier werden die Angaben der Destinationtabelle (Capture Table) erfasst.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Abbildung 9-13: Changetabelle Destination bearbeiten<br />
1. Auswahl Destination Owner. Hier stehen nur mögliche Owner des Datawarehouses<br />
zur Auswahl.<br />
2. Name der Changetabelle. Hier lässt das Tool nur Oracle kompatible Zeichen zu.<br />
3. Auswahl des Changesets. Diese ist nie mutierbar, da diese durch das übergeordnete<br />
Changeset gegeben ist.<br />
4. Diese Auswahl beinhaltet die Capture Values. Folgende Werte können ausgewählt<br />
werden:<br />
• New = Nur die neuen Werte der Updates auf der Sourcetabelle werden in die<br />
Changetabelle geschrieben<br />
• Old = Nur die Werte vor einem Update auf der Sourcetabelle werden in die<br />
Changetabelle geschrieben<br />
• Both = Es werden sowohl die alten wie auch die neuen Werte bei einem<br />
Update auf der Sourcetabelle in die Changetabelle geschrieben<br />
10.09.2009 Seite 70 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
5. Im Feld Optionsstring können weitere Optionen für das kreieren eine Tabelle<br />
angegeben werden. Die Syntax ist die gleiche wir bei einem normalen CREATE<br />
TABLE DDL Befehl. Die möglichen Optionen können in der Oracle Dokumentation<br />
nachgelesen werden. (Oracle Database Administrator’s Guide 11g Release 1<br />
(B28310-01))<br />
6. In dieser Liste werden die Spalten einer Tabelle angezeigt. Ob es die Spalten der<br />
Sourcetabelle oder diese der Changetabelle sind ist abhängig von der Auswahl bei<br />
Punkt 8.<br />
7. In diesem Bereich werden die konfigurierten Hilfsspalten der Changetabelle<br />
angezeigt. Dieser Bereich dient nur zur Anzeige.<br />
8. Bei den beiden Checkboxen „Add“ und „Drop“ wird entschieden, ob die selektierten<br />
Spalten entfernt bzw. hinzugefügt werden sollen. Wenn die Checkbox „Add“ selektiert<br />
ist, werden in der Liste (Punkt 6) alle Spalten der Sourcetabelle angezeigt, welche<br />
noch nicht in der Changetabelle vorhanden sind. Ist die Checkbox „Drop“ angewählt,<br />
werden in der Liste (Punkt 6) alle Spalten der Changetabelle angezeigt. Diese beiden<br />
Checkboxen haben auch Einfluss auf den Bereich von Punkt 9. Wenn in diesem<br />
Bereich eine Hilfsspalte auf Y (yes) steht, wird diese auch entfern bzw. hinzugefügt.<br />
9. In diesem Bereich kann angegeben werden, ob eine Hilfsspalte hinzugefügt bzw.<br />
entfernt werden soll. Siehe auch Punkt 8.<br />
Die Optionen für die Changetabellen und die Hilfsspalten sind im Dokument Oracle Data<br />
Warehousing Guide 11g Release 1 (B28313-02) ausführlich beschrieben.<br />
10.09.2009 Seite 71 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
9.3.9 Shortcuts<br />
Die folgenden Shortcuts können genutzt werden:<br />
Shortcut<br />
[Strg] + [C]<br />
[Strg] + [V]<br />
[Strg] + [X]<br />
[Strg] + [F4]<br />
[Strg] + [Tab]<br />
[Alt] + [Leertaste]<br />
[Alt] + [Leertaste] + [X]<br />
[Alt] + [Leertaste] + [N]<br />
[Alt] + [Leertaste] + [X]<br />
[Alt] + [unterstrichener Menubuchstabe]<br />
[Shift] + [F10]<br />
[Shift] + [Tab]<br />
Tabelle 9-4: Shortcuts<br />
Beschreibung<br />
Kopieren<br />
Einfügen<br />
Ausschneiden<br />
Applikation schliessen<br />
Register wechseln<br />
(mit Shift gegen den Uhrzeigersinn)<br />
Systemmenü<br />
Fenster maximieren<br />
Fenster minimieren<br />
Fenster wiederherstellen<br />
Menupunkt Aufruf<br />
Kontextmenu öffnen<br />
Rückwärts durch Optionen<br />
9.3.10 Fehlerbehandlung<br />
Tritt in der Applikation eine Fehler auf, so wird dieser mit einem Error Provider angezeigt<br />
(Abb. 4-9). Beim Auftreten eines Fehlers, wird der rote Punkt mit dem Ausrufezeichen<br />
blinkend angezeigt. Um die genaue Fehlermeldung anzuzeigen, muss mit dem Mauszeigen<br />
auf dem roten Punkt positioniert werden. Mit einem Mausklick irgendwo im Fenster des Error<br />
Provider, kann der Fehler ausgeblendet werden. Ist der Fehler im Change Data Capture<br />
aufgetreten, wird immer die original Fehlermeldung der Datenbank im Tool ausgegeben.<br />
Abbildung 9-14: Fehleranzeige<br />
10.09.2009 Seite 72 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
10 Change Requests<br />
Die Usability Test haben immer wieder einige kleinere Änderungen ergeben, welche aber für<br />
die Applikation zum Teil einen erheblichen Mehrwert dargestellt haben. Diese Änderungen<br />
wurden in der Form von Change Requests aufgenommen. Die Änderungen, welche vom<br />
Auftraggeber bewilligt wurde, wurden innerhalb dieses Projekts umgesetzt. Die<br />
nichtgenehmigten Änderungen werden voraussichtlich in einem späteren Release umgesetzt.<br />
Auf den folgenden Seiten sind die Change Request tabellarisch dargestellt.<br />
Angaben zur Tabelle Change Requests:<br />
Personen<br />
Kurzzeichen<br />
Experte Thomas Glauser<br />
TGL<br />
ETL - Programmierer Stéphane Probst SPR<br />
Auftraggeber Urs Müller<br />
UMU<br />
Tabelle 10-1: Personen Change Request<br />
10.09.2009 Seite 73 von 80
CR<br />
Nr. Beschreibung<br />
Anforderungs-<br />
ID<br />
Mehrkosten<br />
Nein / Ja<br />
(Betrag)<br />
Grund<br />
Bewilligung<br />
durch<br />
Auftraggeber<br />
(UMU)<br />
Review<br />
durch<br />
1<br />
Bei der Detailspezifikation wurden aufgrund<br />
neuer Erkenntnisse die Funktionalen<br />
Anforderungen nochmals überarbeitet. Deshalb<br />
wird beantragt, die Anforderungen der<br />
Detailspezifikation als die geltenden dieses<br />
Projekts zu bewilligen.<br />
Funktionale<br />
Anforderungen<br />
Pflichtenheft<br />
Nein<br />
Mit den überarbeiteten Anforderungen,<br />
können die Projektziele nicht nur<br />
erreicht, sondern übertroffen werden.<br />
Auch kann das Tool für spätere<br />
Erweiterungen, besser konzipiert<br />
werden.<br />
̌<br />
TGL<br />
SPR<br />
2<br />
3<br />
4<br />
5<br />
6<br />
Die in der Detailspezifikation definierte<br />
Verwaltung des Sourcesystems kann komplett<br />
weggelassen werden, da die Detailanalyse<br />
gezeigt hat, dass eine elegantere Lösung mit<br />
den Change Sourcen möglich ist. Das<br />
Sourcesystem hat nur eine informative Funktion<br />
und diese Informationen können aus der<br />
Change Source bezogen werden. Deshalb<br />
können die Anforderungen des Sourcesystems<br />
weggelassen werden. FA.06.010 Nein<br />
Auf dem GUI ist ein Reiter geplant, welcher<br />
anzeigt, was im<br />
Moment bearbeitet wird. Dieser ist überflüssig Gesamtes GUI Nein<br />
Das Change Set kann aktiviert bzw. deaktiviert<br />
werden.<br />
Dies kann der Benutzer bequemer über das<br />
Kontextmenu in der TreeView verwalten, als auf<br />
dem rechten Panel im Konfigurationsteil des<br />
Tools FA.04.010 Nein<br />
Bei der Erstellung einer Changetabelle wäre<br />
eine Listbox effektiver als eine ComboBox. FA.05.030 Nein<br />
Beim erstellen oder ändern einer Changetabelle<br />
konnte der Type der Spalten verändert werden.<br />
Dies wird als nicht sinnvoll erachtet.<br />
FA.05.010<br />
FA.05.030<br />
Nein<br />
Ein Ziel der Applikation ist, dass<br />
möglichst wenige<br />
Daten in einer speziellen Tabelle oder<br />
in einem Konfigurationsfile abgelegt<br />
werden. Dies damit eine sehr schlanke<br />
Verwaltung dieses Tools möglich ist.<br />
Auch der Usability Walkthrough hat<br />
ergeben, dass die Verwaltung des<br />
Sourcesystems überflüssig und es zu<br />
einer schlankeren Handhabung beiträgt. ̌ SPR<br />
Der Usability Walkthrough hat ergeben,<br />
dass dieser Reiter überflüssig ist und<br />
kann deshalb weggelassen werden. ̌ SPR<br />
Der Usability Walkthrough hat ergeben,<br />
dass die<br />
Manipulation über ein Kontextmenu für<br />
den Benutzer einfacher und logischer<br />
ist. ̌ SPR<br />
Der Usability Walkthrough hat ergeben,<br />
dass die Auswahl einer Sourcetabelle<br />
so einfacher wird. ̌ SPR<br />
Beim Usability Walkthrough ist<br />
aufgefallen, dass die Änderung der<br />
Datentypen nicht sinnvoll ist ̌ SPR<br />
10.09.2009 Seite 74 von 80
CR<br />
Nr. Beschreibung<br />
7<br />
8<br />
9<br />
Nach Anmeldung des Benutzers, wird auf dem<br />
rechten Panel nichts angezeigt. Dort könnten<br />
einige Angaben zum Zustand der verschiedenen<br />
Prozesse stehen.<br />
Auf der rechten Seite im GUI sollte immer ein<br />
Reiter Log vorhanden sein. In diesem kann der<br />
jeweilige Status der Ausführung angeschaut<br />
werden<br />
Auf der rechten Seite im GUI ist ebenfalls eine<br />
Toolbox geplant. Dies ist überflüssig, da die<br />
gleichen Buttons auch auf der Haupttoolbox<br />
vorhanden sind.<br />
Anforderungs-<br />
ID<br />
Mehrkosten<br />
Nein / Ja<br />
(Betrag)<br />
Neue Anforderung<br />
(Kann) Ja (700.--)<br />
Neue Anforderung<br />
(Kann) Ja (800.--)<br />
Bewilligung<br />
durch<br />
Auftraggeber Review<br />
Grund<br />
(UMU) durch<br />
Beim Usability Walkthrough und der<br />
dazu geführten Diskussion ist<br />
aufgefallen, dass diese<br />
Statusinformationen sehr praktisch für<br />
den User wären. SPR<br />
Wenn eine Ausführung aus dem Tool<br />
nicht erfolgreich ist, muss analysiert<br />
werden warum nicht. Das Log ist daher<br />
sehr nützlich und sollte direkt im Tool<br />
angesehen werden können. ̌ SPR<br />
FA.02.XX,<br />
FA.03.XX,<br />
FA.04.XX,<br />
FA.05.XX Nein Siehe Beschreibung ̌ SPR<br />
10<br />
Im Contextmenu sollte ein Save Menu Punkt<br />
vorhanden sein<br />
Kontextmenu<br />
Kapitel 3.2.8.4<br />
in Detailspezifikation<br />
Nein<br />
Dieser Menupunkt wäre in manchen<br />
Fällen praktisch und gibt keinen<br />
Mehraufwand ̌ SPR<br />
11<br />
Im Menu wurde ein File / Open Menupunkt<br />
geplant, dieser kann weggelassen werden<br />
Menu Bar<br />
Kapitel 3.2.8.4<br />
in Detailspezifikation<br />
Nein<br />
Dieser Menupunkt ist überflüssig und<br />
kann zum Teil verwirrend wirken ̌ SPR<br />
12<br />
Im Menu wurde unter Run ein Delete Button<br />
geplant, dieser sollte unter der Gruppe File<br />
platziert werden<br />
Menu Bar<br />
Kapitel 3.2.8.4<br />
in Detailspezifikation<br />
Nein<br />
Der Menupunkt ist für den User unter<br />
File logischer zu finden. Dies hat ein<br />
weiterer Usability Test mit dem ETL<br />
Programmierer ergeben ̌ SPR<br />
13<br />
In der Toolbar kann der Open Button<br />
weggelassen werden<br />
Tool Bar<br />
Kapitel 3.2.8.3<br />
in Detailspezifikation<br />
Nein<br />
Dieser Button ist überflüssig und kann<br />
zum Teil verwirrend wirken ̌ SPR<br />
10.09.2009 Seite 75 von 80
CR<br />
Nr. Beschreibung<br />
Anforderungs-<br />
ID<br />
Mehrkosten<br />
Nein / Ja<br />
(Betrag)<br />
Grund<br />
Bewilligung<br />
durch<br />
Auftraggeber<br />
(UMU)<br />
Review<br />
durch<br />
14<br />
Im Menu unter der Gruppe View ist der Log<br />
Menupunkt überflüssig.<br />
Da nicht nur eine Tabelle, sondern auch ein<br />
ChangeSet oder die ganze Tabelle gepurged<br />
werden können, sollte dies auch im Tool<br />
15 möglich sein.<br />
Tabelle 10-2: Change Requests<br />
Menu Bar<br />
Kapitel 3.2.8.4<br />
in Detailspezifikation<br />
Nein<br />
Neue Anforderung<br />
(Muss) Ja (300.--)<br />
Dieser Punkt wurde durch den Change<br />
Reguest CR8 überflüssig ̌ SPR<br />
Diese Möglichkeiten sind im Laufe des<br />
Projekts aufgefallen und sollte<br />
umgesetzt werden ̌ SPR<br />
10.09.2009 Seite 76 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
11 Anhang<br />
11.1 Glossar<br />
Begriff<br />
Aktor<br />
CDC<br />
CPU<br />
CS<br />
Cset<br />
DB<br />
DBA<br />
Destination<br />
DWH<br />
E1<br />
EFM<br />
ERP<br />
ETL<br />
Beschreibung<br />
Ein Aktor ist ein Benutzer oder ein System welches mit der<br />
Applikation interagiert.<br />
Change Data Capture - Technologie von Oracle zum Übertragen der<br />
Änderungen einer Datenbank<br />
zentrale Verarbeitungseinheit eine Computers (Prozessor)<br />
Change Source<br />
Change Set<br />
Datenbank<br />
Datenbankadministrator<br />
Ziel - in diesem Projekt meist der Staging bereich des DWH<br />
Datawarehouse. Zentrale Datensammlung (Datenbank), deren Inhalt<br />
sich aus Daten unterschiedlicher Quellen zusammensetzt.<br />
Name des ERP Releases, welcher in der EMMI eingesetzt wird.<br />
Emmi Factory Management<br />
Enterprise Ressource Planning<br />
Bezeichnet den Prozess einer Schnittstelle zu einem DWH.<br />
E. Extraktion (Extract) der relevanten Daten aus verschiedenen Quellen<br />
T. Transformation (Transform) der Daten in das Format der<br />
Zieldatenbank<br />
L. Laden (Load) der Daten in die Zieldatenbank.<br />
GUI<br />
Graphical User Interface, englischer Begriff für Bedienoberfläche.<br />
LDI<br />
Lightweight Datawarehouse Interface<br />
MIS<br />
Management Information System<br />
OLAP<br />
Online Analytical Processing<br />
OLTP<br />
Online Transaction Processing<br />
Oracle<br />
Oracle ist eine Datenbankmanagementsoftware<br />
Owner<br />
Eigentümer eine Tabelle und Benutzer einer Datenbank<br />
Proof of Concept Machbarkeitsstudie<br />
purge<br />
reorganisieren von nicht benötigten Daten<br />
Records Datensatz einer Tabelle<br />
Redo Logs Dort werde alle Änderungen einer DB gespeichert<br />
Review<br />
Begutachtung<br />
RMT<br />
Rechte Maus Taste<br />
Rows<br />
siehe Record<br />
Schema siehe Owner<br />
SCN<br />
System Change Number<br />
Source<br />
Quelle - in diesem Projekt eine ERP System<br />
tnsnames.ora File welches die auf dem Client konfigurierten Datenbanken enthält<br />
10.09.2009 Seite 77 von 80
Tool<br />
Trigger<br />
UML<br />
Use Case<br />
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Werkzeug<br />
Datenbanktrigger. Bei einer bestimmten Art einer Änderung, wird ein<br />
gespeichertes Programm aufgerufen.<br />
Unified Modeling Language<br />
Anwendungsfall - Verhalten zwischen Aktoren und dem betrachteten<br />
System<br />
User<br />
Benutzer, Anwender eines Systems<br />
Tabelle 11-1: Glossar<br />
11.2 Referenzen<br />
Folgende Dokumente und Webadressen dienten als Informationsquellen.<br />
Projektmanagement<br />
http://de.wikipedia.org/<br />
http://www.stefan-baur.de<br />
http://www.it-checklists.com<br />
Unterlagen BFH CAS Business Engineering, Zühlke Engineering AG<br />
Oracle Data Capture<br />
Oracle Data Warehousing Guide 10g Release 2 (B14223-02)<br />
Oracle Data Warehousing Guide 11g Release 1 (B28313-02)<br />
ETL Architektur<br />
The Data Warehouse Lifecycle Toolkit, Ralph Kimball<br />
Skript Data Warehousing, CAS Information Management und BI, Thomas Glauser<br />
10.09.2009 Seite 78 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
11.3 Tabellenverzeichnis<br />
Tabelle 2-1: Entscheidungstabelle........................................................................................ 13<br />
Tabelle 3-1: Übersicht Use Cases (Publish) ......................................................................... 20<br />
Tabelle 3-2: Aktoren ............................................................................................................. 20<br />
Tabelle 3-3: SQL Programm starten..................................................................................... 22<br />
Tabelle 3-4: SQL Change Source......................................................................................... 25<br />
Tabelle 3-5: SQL Change Source löschen............................................................................ 27<br />
Tabelle 3-6: SQL Change Set konfigurieren ......................................................................... 29<br />
Tabelle 3-7: SQL Change Set löschen ................................................................................. 31<br />
Tabelle 3-8: SQL Changetabelle ändern .............................................................................. 33<br />
Tabelle 3-9: SQL Change Tabelle konfigurieren................................................................... 34<br />
Tabelle 3-10: SQL Source Tabelle konfigurieren .................................................................. 37<br />
Tabelle 3-11: SQL Source Tabelle löschen .......................................................................... 39<br />
Tabelle 3-12: Übersicht Use Cases (Subscribe) ................................................................... 40<br />
Tabelle 3-13: Übersicht Menu Bar ........................................................................................ 41<br />
Tabelle 3-14: Übersicht Kontext Menu.................................................................................. 42<br />
Tabelle 4-1: Namenskonventionen Sourcecode ................................................................... 44<br />
Tabelle 5-1: Übersicht Tests................................................................................................. 47<br />
Tabelle 6-1: Inhalte und Resultate der Projektphasen .......................................................... 50<br />
Tabelle 6-2: Zeitmanagement............................................................................................... 51<br />
Tabelle 6-3: Termine ............................................................................................................ 53<br />
Tabelle 7-1: Anforderungskatalog nicht funktionaler Anforderungen..................................... 54<br />
Tabelle 7-2: Übersicht Use Cases (Publish) ......................................................................... 55<br />
Tabelle 7-3: Übersicht Use Cases (Subscribe) ..................................................................... 55<br />
Tabelle 9-1: SQL View erstellen ........................................................................................... 60<br />
Tabelle 9-2: SQL User erstellen ........................................................................................... 60<br />
Tabelle 9-3: SQL Link erstellen ............................................................................................ 61<br />
Tabelle 9-4: Shortcuts .......................................................................................................... 72<br />
Tabelle 10-1: Personen Change Request............................................................................. 73<br />
Tabelle 10-2: Change Requests ........................................................................................... 76<br />
Tabelle 11-1: Glossar ........................................................................................................... 78<br />
11.4 Abbildungsverzeichnis<br />
Abbildung 2-1: ETL Prozess Schema..................................................................................... 7<br />
Abbildung 2-2: Ladeprozess grösserer Tabellen..................................................................... 8<br />
Abbildung 2-3: CPU Kurve Quellsystem ................................................................................. 9<br />
Abbildung 2-4: Prozessablauf Vision .................................................................................... 10<br />
Abbildung 2-5: Prozessablauf Change Data Capture ........................................................... 12<br />
Abbildung 3-1: Architektur Change Data Capture................................................................. 15<br />
Abbildung 3-2: Übersicht Modus CDC .................................................................................. 17<br />
Abbildung 3-3: Package Diagramm LDI................................................................................ 18<br />
Abbildung 3-4: Use Case Diagramm Publish........................................................................ 19<br />
Abbildung 3-5: Aktivitätsdiagramm Programm starten .......................................................... 21<br />
Abbildung 3-6: Aktivitätsdiagramm Login.............................................................................. 22<br />
Abbildung 3-7: GUI Login ..................................................................................................... 23<br />
Abbildung 3-8: Aktivitätsdiagramm Change Source konfigurieren ........................................ 24<br />
Abbildung 3-9: GUI Change Source ..................................................................................... 25<br />
Abbildung 3-10: Aktivitätsdiagramm Change Source löschen............................................... 26<br />
Abbildung 3-11: Aktivitätsdiagramm Change Set konfigurieren ............................................ 28<br />
Abbildung 3-12: GUI Change Set konfigurieren.................................................................... 29<br />
10.09.2009 Seite 79 von 80
<strong>Diplombericht</strong><br />
<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />
Abbildung 3-13: Aktivitätsdiagramm Change Set löschen..................................................... 30<br />
Abbildung 3-14: GUI Change Set löschen ............................................................................ 31<br />
Abbildung 3-15: Aktivitätsdiagramm Changetabelle ändern.................................................. 32<br />
Abbildung 3-16: GUI Changetabelle ändern ......................................................................... 33<br />
Abbildung 3-17: Aktivitätsdiagramm Changetabelle purgen.................................................. 34<br />
Abbildung 3-18: Aktivitätsdiagramm Changetabelle erstellen ............................................... 35<br />
Abbildung 3-19: GUI Changetabelle erstellen (Source) ........................................................ 36<br />
Abbildung 3-20: GUI Changetabelle erstellen Destination .................................................... 37<br />
Abbildung 3-21: Aktivitätsdiagramm Change Tabelle löschen .............................................. 38<br />
Abbildung 3-22: GUI Source Tabelle löschen ....................................................................... 39<br />
Abbildung 3-23: Use Case Diagramm (Subscribe) ............................................................... 40<br />
Abbildung 3-24: Menu Bar.................................................................................................... 41<br />
Abbildung 3-25: Übersicht Toolbar ....................................................................................... 42<br />
Abbildung 3-26: Übersicht Statusbar .................................................................................... 42<br />
Abbildung 4-1: Software Layer ............................................................................................. 43<br />
Abbildung 4-2: DB Model DWH ............................................................................................ 45<br />
Abbildung 4-3: DB Model Source Datenbank ....................................................................... 46<br />
Abbildung 6-1: Vorgehensmodell.......................................................................................... 50<br />
Abbildung 6-2: Projektplan ................................................................................................... 52<br />
Abbildung 9-1: Setup Startfenster......................................................................................... 61<br />
Abbildung 9-2: Setup Installationsordner .............................................................................. 62<br />
Abbildung 9-3:Setup Bestätigung Installation ....................................................................... 62<br />
Abbildung 9-4:Setup Ausführung Installation ........................................................................ 63<br />
Abbildung 9-5: Setup Installation erfolgreich......................................................................... 63<br />
Abbildung 9-6: Loginmaske .................................................................................................. 64<br />
Abbildung 9-7: Benutzeroberfläche ...................................................................................... 65<br />
Abbildung 9-8: TreeView ...................................................................................................... 66<br />
Abbildung 9-9: Register des Bearbeitungsteils ..................................................................... 67<br />
Abbildung 9-10: Changesource bearbeiten........................................................................... 67<br />
Abbildung 9-11: Changesets bearbeiten............................................................................... 68<br />
Abbildung 9-12: Changetabelle Source bearbeiten............................................................... 69<br />
Abbildung 9-13: Changetabelle Destination bearbeiten ........................................................ 70<br />
Abbildung 9-14: Fehleranzeige............................................................................................. 72<br />
10.09.2009 Seite 80 von 80