Vortrag XML-ER Modell

Werbung
Portierung XML Strukturen in
relationale Strukturen
Ein Erfahrungsbericht über die
Durchführung der Verarbeitung
einer hohen Anzahl XML Files
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
1
Wer sind wir?
•
•
22.09.2009
Matthias Lange
- über 12 Jahre Erfahrung mit Oracle
- als Berater,und DBA u.a. bei EDS und Pfizer
- [email protected]
Thomas Tretter
- über 18 Jahre Erfahrung mit Oracle
- als Berater und DBA u.a. bei Bosch, Arcor, Lufthansa
Systems und T-Online/Telekom
- DOAG Vorstand und Regioleiter Rhein/Main
- [email protected]
M. Lange / T.Tretter: Portierung XML Strukturen
2
Agenda
• Kurze Beschreibung der
Ausgangssituation
• Rahmenbedingungen
• mögliche Alternativen
• gewählte Alternative
• Durchführung des Dokumenten Imports
• Erfahrungen
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
3
Ausgangssituation
• Produktivbetrieb einer XML Datenbank
Apache Xindice
• Die Dokumente der Apache Xindice Datenbank
werden in einzelnen XML Files zur Verfügung
gestellt
• XML Files 68 Tag
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
4
Projektziele
• Archivierung der Dokumente mittels IBM Optim
• Auswahl des geeigneten Verfahrens (XMLSpy,
XMLSpy API, XMLMapForce, Eigenentwicklung)
• Die Dokumente müssen nach der Archivierung,
mittel IBM Optim Browser, recherchierbar sein
• Aufbewahrung nach gesetzlichen Richtlinien
• 68 Tabellen
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
5
Rahmenbedingungen
•
•
•
•
•
Ein XML File enthält maximal 60 Masteraufträge
Filename: exportyyyymmdd_ARCHIV000616.xml
Anzahl XML Files > 250.000
Die Daten müssen in Oracle strukturiert vorliegen
Den Inhalt vom Datentyp CLOB kann der Optim
Browser nicht auflösen
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
6
XML -> ER Modell
<apdb:Masterauftrag masterauftragId="">
<Auftragsnummer/>
<KwpNummer/>
<AuftragsbestMail/>
<Vertriebskennzeichen/>
<Personalnr/>
<ElogKundennr/>
<Einlesedatum/>
<Vorwahl/>
<Rufnr/>
<apdb:Quelle ID="quelleId">
<Kurztext/>
<Langtext/>
</apdb:Quelle>
<apdb:Status ID="statusId">
<Langtext/>
</apdb:Status>
<apdb:Filiale ID="filialeId">
<Kurztext/>
<Langtext/>
<apdb:Ecvp ID="ecvpId">
<EcvpNr/>
<Name/>
</apdb:Ecvp>
<apdb:VisMasterfiliale ID="visMasterfilialeId">
<Langtext/>
</apdb:VisMasterfiliale>
</apdb:Filiale>
22.09.2009
CREATE TABLE APDB.MASTERAUFTRAG
(
"Primärschlüssel"
VARCHAR2(255 BYTE),
"Auftragsnummer"
VARCHAR2(255 BYTE),
"KwpNummer"
VARCHAR2(255 BYTE),
"AuftragsbestMail"
VARCHAR2(255 BYTE),
"Vertriebskennzeichen" VARCHAR2(255 BYTE),
"Personalnr"
VARCHAR2(255 BYTE),
"ElogKundennr"
VARCHAR2(255 BYTE),
"Einlesedatum"
VARCHAR2(255 BYTE),
"Vorwahl"
VARCHAR2(255 BYTE),
"Rufnr"
VARCHAR2(255 BYTE),
"Sekundärschlüssel" VARCHAR2(255 BYTE)
)
CREATE TABLE APDB.QUELLE
(
"Primärschlüssel" VARCHAR2(255 BYTE),
"Sekundärschlüssel" VARCHAR2(255 BYTE),
"Kurztext"
VARCHAR2(255 BYTE),
"Langtext"
VARCHAR2(255 BYTE)
)
M. Lange / T.Tretter: Portierung XML Strukturen
7
mögliche Alternativen
• XMLSpy GUI – Export in Datenbank
• XMLSpy API – Export in Datenbank
• DaisyImport - Eigenentwicklung
• welche ist die beste Alternative?
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
8
Alternative 1
XMLSpy GUI:
• Manuell, immer nur ein XML File
• Primärschlüssel wiederholt sich
• Filegröße: > 200MB Memoryfehler
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
9
Alternative 1: XMLSpy GUI
initial:
relationale Struktur erzeugen
Quelldatenbank
XML
ODBC Verbindung
Export
Zieldatenbank
Oracle
relational
ODBC Verbindung
XML Dateien
liest Datei
XML Spy
GUI
pro Datei:
Inhalte in Oracle importieren
Schlüssel werden aut. erzeugt
schreibt
XML Spy
Logdatei
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
10 1
0
XMLSpy GUI
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
11
Alternative 2
XMLSpy API:
• Automatisiert, kann mehr Files verarbeiten
• Zeitdauer des Verfahrens nicht unerheblich
• Primärschlüssel wiederholt sich
• Keine Angabe eines Logfiles (siehe XMLSpy GUI)
• Keine Einstellung zur Nutzung von vorhandenen Tabellen!!!
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
12
Alternative 2: XMLSpy API
initial:
relationale Struktur erzeugen
Quelldatenbank
XML
ODBC Verbindung
Export
Zieldatenbank
Oracle
relational
ODBC Verbindung
XML Dateien
liest Datei
XML Spy
API
pro Datei:
Inhalte in Oracle importieren
Schlüssel werden aut. erzeugt
liest Werte
l
i
l
l
i
i
e
e
s
M. Lange / T.Tretter: Portierung XML Strukturen
s
t
XML Spy
Parameter
Datei
22.09.2009
13 1
3
Gewählte Alternative 3
DaisyImport:
• Dateiverarbeitungsdauer < 10s
• Primärschlüssel kann eindeutig definiert werden (Millisekunden)
• Parallelverarbeitung
• Java Programm
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
14
Alternative 3: SAX Loader (in Java)
Voraussetzung:
relationale Struktur existiert
Quelldatenbank
XML
liest Datenstruktur
JDBC Verbindung
Export
JDBC Verbindung
XML Dateien
liest Datei
SAX Loader
(Java)
SAX Loader
Parameterdatei
22.09.2009
Zieldatenbank
Oracle
relational
pro Datei:
Inhalte in Oracle einfügen (insert)
Schlüssel werden aut. erzeugt
SAX Loader
Logdatei
M. Lange / T.Tretter: Portierung XML Strukturen
15 1
5
Parameter Datei für SAX Loader
#
# Konfiguration für Daisy XML Import
#
#
# Verzeichnis-Pfade entweder mit / oder \\ trennen!
#
# XML-Quellverzeichnis
dir.input=Z:/y2009
# XML-Ziel für erfolgreiche Verarbeitung
dir.output=Z:/output/y2009/m06
# XML-Ziel für fehlerhafte Verarbeitung
dir.error=z:/error
#
# Datenbank-Konfiguration
#
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.223.6.81:1521/o10ar1.world
jdbc.login=APDB
jdbc.password=APDB
#
# Anzahl DB-Verbindungen/Import-Threads
#
import.threads=16
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
16
Sax Loader
•
gute Darstellung der Architektur und es Ablaufs:
http://de.wikipedia.org/wiki/Simple_API_for_XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<APDBExport xmlns:apdb="apdb.dm.">
<apdb:Masterauftrag masterauftragId="">
<Auftragsnummer>080612-61880307</Auftragsnummer>
<AuftragsbestMail>n</AuftragsbestMail>
<Vertriebskennzeichen>0180501</Vertriebskennzeichen>
<Einlesedatum>2008-06-12 15:22:52.0</Einlesedatum>
<Vorwahl>0761</Vorwahl>
<Rufnr>45367450</Rufnr>
<apdb:Quelle ID="quelleId">
<Kurztext>EKI-CSS</Kurztext>
<Langtext>T-Com Schnittstelle Online Auftrag</Langtext>
</apdb:Quelle>’
…
•
erzeugte Ereignisse
startDocument()
startElement("apdb:Masterauftrag",[masterauftragId=""])
startElement("Auftragsnummer",[])
character("080612-61880307")
endElement("Auftragsnummer")
startElement("AuftragsbestMail",[])
character(“n")
endElement("AuftragsbestMail")
startElement("Vertriebskennzeichen",[])
character("0180501")
endElement("Vertriebskennzeichen")
…
endElement("apdb:Masterauftrag")
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
17 1
7
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
18
Anzeige der Daten im Optim Browser (I)
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
19
Anzeige der Daten im Optim Browser (II)
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
20
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
21
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
22
Vorteile der Beteiligten
• für uns (die Referenten)
• für die Telekom (die Auftraggeber)
• für Sie (die Zuhörer)
22.09.2009
M. Lange / T.Tretter: Portierung XML Strukturen
23 2
3
Herunterladen