Zu Inhalt springen

Hervorgehobene Antworten

Erstellt
comment_2723648

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:

comment_2723813

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)

comment_2724035

Dasselbe erreichst du mit einem XmlReader. Das ist ein asynchron lesender, forward-only cursor, speziell für die read-Verarbeitung grosser Dateien gedacht. (wahrscheinlich sind die Konzepte mit SAX identisch). Niemals grosse Xml Dateien über einen DOM Reader einlesen, da dieser zunächst das gesamte XmlDocument lädt und im Speicher ablegt.

comment_2724666

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.

Erstelle ein Konto, um zu kommentieren

Kürzlich Online 0

  • Kein Mitglied betrachtet die Seite.

Wichtige Informationen

Wir setzen Cookies, um die Benutzung der Seite zu verbessern. Du kannst die zugehörigen Einstellungen jederzeit anpassen. Ansonsten akzeptiere bitte diese Nutzung.

Browser-Push-Nachrichten konfigurieren

Chrome (Android)
  1. Klicke das Schloss-Symbol neben der Adressleiste.
  2. Klicke Berechtigungen → Benachrichtigungen.
  3. Passe die Einstellungen nach deinen Wünschen an.
Chrome (Desktop)
  1. Klicke das Schloss-Symbol in der Adresszeile.
  2. Klicke Seiteneinstellungen.
  3. Finde Benachrichtigungen und passe sie nach deinen Wünschen an.