java + xpath -> performanceproblem

Status
Nicht offen für weitere Antworten.

kermitblue

Mitglied
hallo.

ich muss ein-paar sehr grosse xml files (>4GB) in eine mysql datenbank schmeissen, soweit so gut. habe das ganze mit java, xpath und dom (verwende immer nur kleine haeppchen der grossen files) geloest und es funktioniert, mal abgesehen von der im betreff erwaehnt performance, wunderbar. aber aufgrund der komplexitaet eines einzelnen kind-vom-root knoten (hat zwischen 10.000 und 40.000 zeilen) braucht mein programm zwischen 1 und 1 1/2 stunden fuer ein 10mb haeppchen und das obwohl wir eine ziemlich wuchtige sun dahinter stehen haben. von der auslastung her brauchen wir nur ca zwischen 25 und 50 % des zugesichterten rams (ingesamt 5GB), die prozessorleistung laeuft aber staendig auf 100%. die inserts bzw die datenbank sind nicht das problem - ohne sie (nur mit stout) braucht das proggi genausolang.

ich verwende keinerlei xpath ausdruecke der art "//knoten/kindknoten" sondern immer nur direkt "kindknoten"um von einem eltern knoten auf einen (oder die) kindknoten zuzugreifen.

meine frage nun an alle java, xml (xpath) experten: welche moeglichkeiten der optimierung habe ich? ich verwende zur zeit das standard xpath paket von sun, kennt jemand kommerzielle (oder gratis, noch besser) ;), die vielleicht performanter sind? oder kann ich den code mit ein paar schaltern oder einen anderen compiler auf speed optimieren (so wie in c) - hab hier noch keine erfahrung. parallelisieren hat ja auch nicht viel sinn, nehm ich an, wenn die prozessoren sowieso auf 100 % laufen? sax ist keine opition, dafuer ist das modell zu komplex...

hat jemand vorschlaege?

danke
kermitblue
 

huckfinn

Aktives Mitglied
Hi,

Mußt du was transformieren oder nur den Baum effizient im einem RDBMS ablegen?
Brauchst du so etwas wie einen XML Schredder?

Bis denne Huck
 

huckfinn

Aktives Mitglied
Hi noch ne Frage,

Was mußt du mit denPfadausdrücken adressieren?
Ich ..äh wir haben nämlich einen XML-Schredder mit Pfadstatistik
geschrieben der das gesamte Dokument in einen RDBMS
speichert und dann Elter-Kind-Knoten Beziehungen wie
bei XPath im Baum rekursiv durchlaufen kann aber mit SQL!
Wir brauchen das für die Zerlegung von sog. Findbuchdateien,
die sind zwar nicht so stattlich haben aber auch so an die 200MB
..siehe auch
unimatrix.uni-greifswald.de

Bis denne Huck
 

kermitblue

Mitglied
hi!

eigentlich adressieren wir wirklich nur knoten und darin enthaltene textnodes bzw attribute und transformationen gibts auch keine. euer xml shredder hoert sich da ziemlich gut an. verwendet ihr sax zum durchparsen oder habt ihr euch selber was gebastelt?

lg kermitblue
 

huckfinn

Aktives Mitglied
Hi,

Zum scannen der XML Datei nehmen wir SAX bauen einen Namespace, Elemente und Attribut Lookup Tree auf (Treemap) damit können wir
eine Speicherung mit Referenzindizes realisieren das spart Speicher, schafft Performanz und ist RDBMS konform. Mit diesen Speicherstrukturen kann man dann eine Pfad-, Attribut- und Elementstatistik erstellen, das ist die eigentliche Aufgabe. Wir wollen aber dann auch bei Bedarf schnell und ohne das Dokument von vorne parsen zu müssen, wieder auf Teilgraphen bzw. Pfade zugreifen um dort Informationen rauszuziehen (Textretrival). Das machen wir dann mit SQL. Zur Erklärung, wir haben das Problem, daß die Findbücher zwar in XML kodiert sind und auch eine klare hierarchische Struktur haben, aber die Inhaltselemente zu 80% in einem "Talking Context" also gemischt mit Text wie in HTML vorliegen. Bei 164 XML-Elementen bzw Attributen ist das 'ne ganz schön unübersichtliche Sache und wird auch auf Grund der meschlichen Kreativität so vollzogen. Letztendlich geht es um eine Form von syntaktischen Informationretrival zu realisieren, um die Informationen für das Open Archive Protokoll for Metadata Harvesting aufbereiten zu können. Dafür müssen klar definierte von den Maschinen lesbaer Hierarchien existieren (Strukturretrival) in denen die Informationen in allgemeinbeschreibenden Metainformationen des Dublin Core vorliegen (Informationretrival).

Was willst du den mit einem Schredder machen?

Bis denne Alex
 

kermitblue

Mitglied
wir müssen einfach nur die gegebenen xml files in eine datenbank werfen -> wichtig hierbei ist eben die performance... unsere aktuelle loesung ist viel zu langsam :( du weisst nicht zufaellig ob es hier open-source loesungen gibt? ist ja wirklich (mal abgesehen von der performance) eine einfache sache... wie lang habt ihr fuer die implementation gebraucht und wie komplex ist die struktur?
 

huckfinn

Aktives Mitglied
Hi,

Also wir schreiben unter GPL/MPL ist ja 'n DFG Projekt. Wir können also Codeschnipsletten tauschen wenn ihr auch unter GPL oder OpenSource arbeitet. Die Implementierung hat an die 2 Monate gedauert allerdings ist das das Problem nicht so einfach wie bei euch. Außerdem brauchen wir zwei Leseszyklen zum Abgleich der vorhandenen Element-/ Attributlisten mit den den hinzukommenden. Wir haben mal 'ne kleine Statistik gemacht um zu sehen ob's für uns reicht !KEIN PROFILING! Um die Verbunddatenbank des ARIADNE-Servers mit (596 GB mit 6120 000 Elementen) einzulesen und sie auch wieder zu reprduzieren (XML rein SQL aufbauen und alles wieder rauschreiben) brauchen wir ca. 17h ohne das System (AMD 2GHz Takt /1 GB RAM / PostgresSQL 8) an die Wand zu fahren. Das enspricht einer grob geschätzten Schreibeschwindigkeit von 510 Elementen (DB2XML) pro Sekunde und einer Lesegeschwindikeit von 480 Elementen pro Sekunde. Das ist etwa 1/3 MB pro Sekunde.
Tja die Tools sind im OpenSource Bereich offensichtlich rar gesät und werden auch mit den Evaluierungsvarianten der großen SQL Datenbanken nicht ausgeliefert. Ich habe im Mai in einem Linuxforum auch ein POST Vielleich ist es erst mal ein guter Anfang wenn du die theoretische Geschwindigkeit einer SAX Implemntierung für dein Problem ermittelst. Ich kann dir ja das Progrämmchen mit dem wir gestartet sind schicken. Allerdings brauch ich 'ne Maill, das gehört glaube ich nicht in dieses Forum.

Bis denne Huck
 

kermitblue

Mitglied
die geschwindigkeit is schon enorm :) (wir sind schneckig dagegen unterwegs obwohl wir eine 4 prozessor maschine mit 6GB ram haben... aber das ist dom...). wir bauen das teil fuer ein österreichisches forschungsinstitut - ob die das dann unter die GPL stellen wollen weiss ich leider nicht... fallst du mir trotzdem (kleinste) codeschnippsel aus den anfängen des projektes schicken koenntest wäre ich dir sehr dankbar, falls es nicht geht, verstehe ich das natürlich... :) meine email adresse wäre gerpreis@hotmail.com

danke,
liebe grüsse
 

huckfinn

Aktives Mitglied
Hi

Ich schicke dir 'ne vollständige Variante als Netbeansprojekt zu ..muß aber sie aber noch schick machen .. irgend ein omimöses namespacehandling hat mein co da reingepinselt undüberall das Copyleft reinschreiben OK!

Bis denne huck
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
AMStyles XPATH Befehl SVG Java XML & JSON 2
M Probleme mit XPath bei Java XML & JSON 5
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
T Tags in XML Datei mit Java erstellen XML & JSON 3
E JAXB und java.nio.file.Path XML & JSON 4
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
S Java REST Client + Json XML & JSON 8
L Lässt sich folgendes so oder so ähnlich mit Java und XML umsetzen XML & JSON 3
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
J JSON zu Java mit der GSON Google API XML & JSON 0
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
E JAVA simple.JSONObject cannot be cast to simple.JSONArray XML & JSON 9
P Einheiten in Java XML & JSON 4
T Visualisierung von XML Dateien in einer Java SwingGui XML & JSON 11
A WSDL und Java XML & JSON 5
A XMLRPC für Java XML & JSON 3
S XML auf Java Klassen Mappen XML & JSON 10
N Java XML schreiben funktioniert nicht XML & JSON 1
B aus xsd Java Klassen generieren XML & JSON 3
MiMa Mehrfachvariablen in Java durch XML XML & JSON 4
Q XML-File als Objekt in Java XML & JSON 6
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
S Wie aktualisiert man den Java-Kode mit FOP1.0? XML & JSON 1
L XSL: Aufruf Java-class XML & JSON 11
N Java Code aus XML Datei generieren XML & JSON 8
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
A Unterschiedliche Datenstruktur XML <-> Java mappen XML & JSON 9
R XSD aus Java Klassen erzeugen?? XML & JSON 2
N xsd pattern in java einlesen XML & JSON 6
M java.lang.RuntimeException: Failed to parse document XML & JSON 4
F SOAP in Java XML & JSON 6
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
F Einlesen von JDBC connection in Java von XML XML & JSON 4
D xsd->java mit Eclipse?! oder wie? XML & JSON 27
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
V JAXB schema 2 java XML & JSON 3
S XJC --> Java-Objects compile Problem XML & JSON 4
G Mit JSON Java und C# verbinden XML & JSON 4
K XML Datei in ein Java package „einbinden" XML & JSON 3
H Java - XML - Rekursion - Verwirrung XML & JSON 6
F XML Datei in Java einlesen XML & JSON 4
J XSD > XML > Java XML & JSON 7
F XML mit Java XML & JSON 2
algorismi SVG Datein mit Batik in Java reinladen XML & JSON 3
S Java - Klassen erzeugen aus xsd bzw. wsdl XML & JSON 3
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
T StAX / SAX => Wie XML Datenstruktur in Java abbilden? XML & JSON 2
H XML plattformunabhängig/Open Source für Java XML & JSON 4
C Java-Imports bei Jaxb XML & JSON 8
slawaweis Problem mit XSLT (wahrscheinlich ein Bug in Java 6) XML & JSON 16
Fadi .classpath(XML) mit Java lesen XML & JSON 2
M Frage zu Erklärung im Online book "Java ist auch eine I XML & JSON 4
M Problem mit FOP in Java Programm XML & JSON 2
H Fop / Java /Fonts XML & JSON 6
H XSL Aufruf via Java mit neuen Fonts XML & JSON 9
T Java Klasse für gegebenes XML erstellen XML & JSON 4
M Xlink in Java-Objekt umwandeln XML & JSON 9
S Jdom+java webstart XML & JSON 4
P Einstieg in XML mit Java XML & JSON 3
G MS-Word Dokument mit Java erstellen XML & JSON 2
N AXIOM mit Java 1.4 XML & JSON 4
J DTD in Java integrieren? XML & JSON 3
L XML Datei in Java angeben Pfad? XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
G XML mit JAVA an URL senden (http post) XML & JSON 12
D Java DOM Ausgabe ohne XML header XML & JSON 4
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
S Java 6 und Xerces-j-2-9 XML & JSON 3
E XML mit java einlesn XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
G JAVA und DOM XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
P DTD -> Java XML & JSON 4
K xml --> sax --> java objekthierarchie XML & JSON 2
B DTD aus Java erzeugen XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
A Kann XML weitere XMLs inkludieren? Oder kann es Java? XML & JSON 5
vogella *Erledigt* XML und Java DOM Tutorial XML & JSON 3
T SOAP mit Java ohne HTTP Server möglich? XML & JSON 3
C HTML-Befehle per Java entfernen XML & JSON 7
W Java und XML - help request XML & JSON 3
M [SOLVED]Ausgabe mit Java XML & JSON 2
P Unterschiede java 1.4 und 1.3 XML & JSON 3
M generate SVG with java XML & JSON 2
G java+xml mit dom4j XML & JSON 4
P XSLT in Java verwenden XML & JSON 7
M Auswertung arithmetischer Ausdrücke mit SAX und Java XML & JSON 7
S XMl Dateien in Java schreiben XML & JSON 4
B XML-Document mit Java erzeugen und zuruecksenden XML & JSON 1
J Beispiel aus Java Magazin 03/2004 gesucht ! XML & JSON 6
R java.net.MalformedURLException: no protocol . XML & JSON 12

Ähnliche Java Themen

Neue Themen


Oben