ecommerce-blog.at
Juni (
4
)
Juli (
2
)
August (
3
)
März (
1
)
April (
1
)
Mai (
1
)
Juli (
2
)
August (
2
)
März (
2
)
April (
3
)
Mai (
2
)
Juni (
3
)
Juli (
3
)
August (
2
)
März (
3
)
April (
4
)
Mai (
3
)
Juni (
3
)
Juli (
3
)
August (
3
)
März (
3
)
April (
3
)
Mai (
3
)
Juni (
3
)
Juli (
3
)
August (
3
)
März (
4
)
April (
3
)
Mai (
4
)
Juni (
3
)
Juli (
3
)
August (
2
)
März (
3
)
April (
4
)
Mai (
4
)
Juni (
2
)
Juli (
4
)
August (
3
)
März (
5
)
April (
4
)
Mai (
4
)
Juni (
4
)
Juli (
4
)
August (
4
)

08.04.2011 - Import/Export von Produkten mit XML oder CSV?

Die Informationstechnologie stellt uns ständig neue Technologien zur Verfügung. Wenn es um den Austausch von Daten geht, wurde jahrzehntelang auf das Datenformat CSV gesetzt. Mehr und mehr macht es nun aber den Anschein, als würde XML diesen altbewährten Standard mehr und mehr verdrängen.
Sollte man Daten überhaupt noch mittels CSV austauschen oder sollte man überhaupt nur noch auf XML setzen?

Um diese Frage zu klären, definieren wir diese beiden Standards zunächst einmal:

Was ist CSV?

Jedem, der sich mit dem Import oder Export von Daten beschäftigt hat, wird der Begriff „CSV“ schon einmal über den Weg gelaufen ein. „Ich exportiere es schnell mal in eine CSV-Datei“. Aber was bedeutet CSV?

CSV steht für Comma Separated Values – auf deutsch: Durch Komma getrennte Werte. Eine Datentabelle wird dabei in mehrere Felder (Spalten) geteilt, die Werte werden durch ein Semikolon voneinander getrennt. Gespeichert werden CSV-Daten in einer einfachen ASCII- bzw. ANSI-Textdatei.

Einfachstes Beispiel um eine CSV-Datei zu erzeugen ist, eine Excel-Tabelle abzuspeichern. Wichtig dabei ist, dass 1 Zeile in Excel einem Datensatz, also z.B. einem Produkt, entspricht. Jede Spalte entspricht einem Datenfeld des Datensatzes, z.B. der Produktnummer, der Produktbezeichnung, dem Beschreibungstext, dem Preis, MwSt-Satz, Produktgruppen-ID, usw.

Beispiel:
12345;Testprodukt;Das ist ein Testprodukt;123,00 Euro;20%;100
12346;Testprodukt 2;Das ist ein weiteres Testprodukt;69,00 Euro;20%;100
usw.

Häufig wird im CSV-Standard die erste Zeile zur eindeutigen Identifizierung der einzelnen Spalten verwendet. Dann sieht die CSV-Datei z.B. so aus:

Beispiel:
Produktnummer;Bezeichnung;Beschreibung;Preis;MwSt,Gruppen-ID
12345;Testprodukt;Das ist ein Testprodukt;123,00 Euro;20%;100
12346;Testprodukt 2;Das ist ein weiteres Testprodukt;69,00 Euro;20%;100

usw.

Vorteil von CSV ist der niedrige Platzverbrauch der Datei, was gerade bei Datenübertragungen zwischen unterschiedlichen Standorten ein Vorteil ist, vor allem bei größeren Datenmengen. Weiters kann eine CSV-Datei bzw. ein CSV-Stream sequentiell importiert werden. Das bedeutet, dass sie zeilenweise in den Speicher gelesen und verarbeitet werden kann. Ein CSV-Import ist daher in aller Regel sehr resourcensparend, verbraucht also wenig CPU-Zeit und wenig Arbeitsspeicher.

Nachteil von CSV ist, dass komplexere Daten nicht in ein- und derselben Datei gespeichert werden können, sondern dass derartige Daten auf mehrere Dateien, oder bei Übertragungen auf mehrere Streams, aufgeteilt werden müssen. Will man beispielsweise einen vollständigen Export aus einer Warenwirtschaft mit Artikelstamm, Kundenstamm, Kundenkategorien, kundenkategoriebezogene Preislisten, usw. in ein Onlineshopsystem übertragen, wird jeweils eine eigene CSV-Datei benötigt. Dieser Nachhteil ist in diesem Fall allerdings nur kosmetischer Natur, wobei der Anwender davon überhaupt nichts bemerkt, wenn der Datentransfer – wie bei einer Kommunikation zwischen Warenwirtschaft und Onlineshopsystem üblich - vollautomatisch erfolgt. Wieviele Dateien oder Streams ein Warenwirtschaftsserver im Hintergrund zum Onlineshopserver überträgt, bemerkt der Onlineshopbetreiber nicht und in aller Regel ist ihm das auch so ziemlich egal.

Was ist XML?

XML steht für Extensible Markup Language, was übersetzt soviel wie „erweiterbare Auszeichnungssprache“ bedeutet. XML ist eine Auszeichnungsprache zur Darstellung hierarchisch strukturierter Daten. Auch XML-Daten werden in einer ASCII- bzw. ANSI-Textdateien abgespeichert.

So neu ist XML eigentlich auch nicht mehr, denn die erste Ausgabe von XML erschien bereits 1998. Durchgesetzt hat sich XML aber erst nach und nach ab etwa 2005.

Beispiel einer XML-Datei:

<?xml version=“1.0“ encoding=“UTF-8“ standalone=“yes“>
<Produkte>
<Produkt>
<Produktnummer>
12345</Produktnummer>
<Bezeichnung>
Testprodukt</Bezeichnung>
<Beschreibung>
Das ist ein Testprodukt</Beschreibung>
<Preis>
123,00 Euro</ Preis >
<MwSt>
20%</MwSt>
<Gruppen-ID>
100</Gruppen-ID>
</Produkt>
<Produkt>
<Produktnummer>
12346</Produktnummer>
<Bezeichnung>
Testprodukt 2</Bezeichnung>
<Beschreibung>
Das ist ein weiteres Testprodukt</Beschreibung>
<Preis>
169,00 Euro</ Preis >
<MwSt>
20%</MwSt>
<Gruppen-ID>
100</Gruppen-ID>
</Produkt>
</Produkte>
usw.

Im Vergleich zu CSV erkennt man nun ganz deutlich zwei Dinge. Zum einen sieht XML viel übersichtlicher als CSV aus, was als kleiner Vorteil zählt – ja, wenn der Datentransfer im Hintergrund stattfindet interessiert das den Onlineshopbetreiber eigentlich nicht. Vorteil ist aber, dass in ein- und derselben Datei bzw. in ein- und demselben Stream, sämtliche Daten einer Datenübertragung strukturiert und hierarchisch abgebildet werden können.
Auf der anderen Seite erkennt man aber auch, dass die zu speichernden und evtl. über das Internet zu übertragenden Daten durch die vielen notwendigen XML-Tags (<Produkte><Produkt><Produktnummer><Bezeichnung> usw.), welche je Produkt zweimal vorkommen, sehr aufgebläht werden. Dieselben Daten als XML gespeichert benötigen daher meist ein großes Vielfaches an Speicherkapazität, verglichen mit einer Formatierung als CSV.
Das ist aber noch nicht alles. Der größte Nachteil von XML besteht darin, dass ein XML-Import nicht sequentiell, also nicht zeilenweise, verarbeitet werden kann. Wo eine CSV-Datei nur wenige Bytes an Arbeitsspeicher zur Verfügung stellen muss, muss eine XML-Datei gänzlich in den Arbeitsspeicher gelesen werden, was Unmengen an Arbeitsspeicher verbraucht. Im obigen Beispiel haben wir eine XML-Datei mit gerade einmal 2 Produkten definiert. Stelle man sich nun eine XML-Datei mit tausenden, zehntausenden oder gar hunderttausenden Produkten vor – keine Seltenheit bei Onlineshops. Nicht nur dass die Übertragung über das Internet entsprechend länger dauert, der Server benötigt ein Vielfaches an Arbeitsspeicher zum Import und was noch viel Schlimmer ist: Da die Daten nicht zeilenweise nach und nach verarbeitet werden können, sind diese vom Importsystem durch resourcenfressende Algorithmen so aufzuspalten, damit sie dann in die Datenbank des Importservers geschrieben werden können. Ein XML-Import benötigt daher nicht nur deutlich mehr Arbeitsspeicher, sondern auch deutlich mehr CPU-Zeit, wodurch der Server um ein Vielfaches ausgelastet wird.

Welches Datenformat ist nun der Sieger?

Man sieht also ganz klar: Zum Datentransfer zwischen zwei Systemen hat der altbewährte Standard CSV deutlich mehr gravierende Vorteile als XML und keine nennenswerten Nachteile. Erfolgt der Datenaustausch darüber hinaus auch noch vollautomatisch, so hat CSV gegenüber XML absolut keine Nachteile.
XML ist zum Austausch von größeren Datenmengen über das Internet sogar vollkommen ungeeignet.

Hat XML also keine Daseinsberechtigung?

Oh doch. XML ist zwar eindeutig die falsche Wahl, wenn es darum geht, größere Datenmengen zeitkritisch zwischen zwei Systemen zu übermitteln. Geht es allerdings darum, nur einzelne Datensätze zu übertragen, bietet XML den entscheidenden Vorteil, eine komplette Struktur hierarchisch in nur einer einzelnen Datei bzw. in einem einzelnen Stream zu übertragen.

Webservices stellen hier ganz klar das gängigste Anwendungsbeispiel dar. Mit Hilfe eines Webservices ist es möglich, einen Echtzeitaustausch von Daten zwischen zwei Systemen zu realisieren. Möchte man in einem Onlineshop beispielsweise neben der allgemeinen Verfügbarkeitsanzeige, welche die Daten aus der Shopdatenbank bezieht und daher nicht 100% genau ist (es könnten ja auch Bestellungen über einen anderen Vertriebskanal eingehen, der Lagerbestand wird erst mit dem nächsten Import abgeglichen) einen Echtzeitlagerbestand anbieten, so ist ein Webservice die Lösung. Der Webservice wird am Warenwirtschaftsserver installiert. Das Onlineshopsystem kann eine Anfrage an den Warenwirtschaftsserver senden und erhält eine entsprechende Antwort.

Zugegeben – geht es nur um dieses konkrete Beispiel, so kommt man auch in diesem Fall bestens mit CSV aus. Stellt die Warenwirtschaft aber mehrere, unterschiedliche Daten in Echtzeit zur Verfügung, welche unterschiedlich strukturiert sind, bietet XML aufgrund seiner Flexibilität deutliche Vorteile.

Ergo:
Man sollte nicht zwanghaft versuchen eine neue Technologie überall zu verwenden. In vielen Fällen bieten altbewährte gegenüber neuen Technologien ganz erhebliche Vorteile.

So setzt beispielsweise auch das jahrelang bewährte Enterprise-Onlineshopsystem Trade-System nach wie vor auf CSV, wenn es darum geht größere Datenmengen mit anderen Systemen auszutauschen, kann aber auch problemlos mit XML arbeiten, wenn es für den jeweiligen Verwendungszweck notwendig bzw. sinnvoll ist.

zurück zur Übersicht


Kommentare

4 Kommentar(e) gefunden:


Wolfgang
08.04.2011 11:35
Ich seh das genauso. Wobei vielleicht noch ergänzt: CSV kann nicht nur im Ascii/Ansi-Bereich eingesetzt werden, sondern auch im Unicode mit UTF8.

Lois
08.04.2011 14:44
Ja, lasst euch von keinem aufschwatzen, Euer Shopsystem sei veraltet weil es mit CSV importiert. Wer einen kompletten Artikelstamm mit XML importiert, hat meiner Meinung nach ein etwas verplantes Shopsystem in Verwendung :)

Jul
09.04.2011 10:49
Dass XML für falsche Zwecke eingesetzt wird sieht man tatsächlich echt viel zu oft. Aber wer kommt auf die Idee einen kpl. Produktstamm mit XML zu importieren? Ich meine gerade im Internet, wo alles rasch und resourcenschonend sein muss.

Gerhard
11.04.2011 16:19
@Jul: Oh, das gibts. OS-Systeme machen das mit Vorliebe. Warum sei dahingestellt, aber wahrscheinlich will man wirklich mit Gewalt was neues rein bringen. Ist ja oft auch ein toller Marketingknüller: Nehmt unser System, das arbeitet nur noch mit XML, ist ja viel neuer. Script-Rookies denen es noch an Erfahrung fehlt glauben solche Statements dann auch noch und die Mundpropaganda führt letztendlich zu zahlreichen verplanten Onlineshops, die nach 2 oder 3 Jahren wieder gewechselt werden müssen weil sich herausstellt, dass die als neu vermarktete Technologie doch nicht das gelbe vom Ei ist. Leidtragender ist letztendlich der Shopbetreiber...
ecommerce-blog.at - Onlineshop & Shopsystem Österreich
Wir danken unserem Sponsor www.arweb.at

Empfohlene Bücher: