Zum Inhalt springen

Empfohlene Beiträge

Hallo zusammen,

 

kann mir jemand einen Tipp bzgl. dem Einlesen großer Dateien im XML-Format geben? Ich bin auf der Suche nach Pro und Contra für die jeweiligen Techniken. Ich befürchte, etwas mit einer Technik zu realisieren, die sich eventuell nachher nicht für große Datenmengen eignet.

 

Ich bedanke mich im voraus für eure Hilfe. :lookaround:

Link zu diesem Kommentar

SAX- Parser ist ideal für die Bearbeitung "riesiger" Dateien, hauptsächlich, weil er nicht die gesamte Datei auf einmal einliest. Er kann ereignisgesteuert verwendet werden, d.h. er erkennt Anfang oder Ende eines "records". Eventueller Nachteil: er ist unhandlich zu handhaben, dafür bestens modular programmierbar - wenn man kein Quick and Dirty Murks mag - und natürlich beliebig skalierbar.

 

Alle anderen Parser haben zwei Nachteile - sie versuchen die XML- Datei einzulesen, egal wie groß sie ist und ganz gleich ob sie damit die Ressourcengrenze sprengen. Sie versuchen zudem eine XML- Datei umgehend zu interpretieren, d.h. Gültigkeit und Validität zu überprüfen. Beides gute Gründe für sehr dediziert ausgearbeitete Ausnahmeregelungen. Ersteres sprengt vor allem Multiuser Anwendungen auf Servern, zweites liest fröhlich 1 GB Daten ein und verabschiedet sich dann, z.B. mit einem Syntax Error. Vielleicht sogar mit einer Zeilenangabe, der man leider nicht immer trauen kann.

 

Fazit: Viele kleine XML- Dateien sind unendlich effizienter.

 

Workaround: SAX- Parser verwenden und aus Giga- Datei viele kleine machen.

Bearbeitet von Lukarnam
Link zu diesem Kommentar

XML ist heute Standard für sehr viele Schnittstellen.

Man kann davon aus gehen, dass der Speicherbedarf für in XML aufbereitete Daten unkomprimiert um durchschnittlich 1/3 größer ist als z.B. in CSV-Aufbereitung. Aber dafür gibt es Libs, die XML-Import und Export Streams gleich mit einer ZIP-Kompression kombinieren (aktuelle Office Dateien sind solche gepackten XML-Dateien, bzw. Archive mit mehreren gepackten XML-Dateien) und direkten Zugriff auf einzelne Datensätze zu lassen. Du musst also nicht unbedingt Hauptspeicher für die gesamte Datei reservieren.

Link zu diesem Kommentar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...