Import und Export von Daten sind ein zentraler Bestandteil bei der Verwaltung jedes Webshops. Die am meisten genutzte Daten-Anbindung ist sicherlich der Import der Produkt-Daten. Magento bietet hier bereits fertige Möglichkeiten für den Import der Produkte. Dieser Import ist  jedoch weder sehr performant noch wirklich flexibel genug um komplexere Kundenwünsche umzusetzen. In diesem Blog möchte ich zeigen, wie eine Lösung aussehen kann, die in beiden Punkten eine Verbesserung verspricht.

Performance

Beim Import von Daten nimmt die Verwendung der Magento-Funktionen viel Zeit in Anspruch. Wenn man stattdessen die Daten direkt in die Datenbank schreibt, erhält man hier eine teils sehr deutliche Performance-Steigerung.

Ein Import von ca. 25.000 Produkten mit über 50 verschiedenen Attributen, darunter mehr als 10 verschiedene Preise für unterschiedliche Kundengruppen dauert mit einer solchen Lösung weniger als 4 Minuten. Ein einfacher Abgleich des Lagerbestandes bei diesem Produkt-Katalog dauert ca. 30 Sekunden.

Daten-Struktur

Ein weiteres Problem vieler Import-Module ist, dass sie nur einen kleinen Teil der Produkt-Features unterstützen, die Magento bietet. Die hier verwendete Lösung bietet unter anderem den Import folgender Produkt-Features.

  • Produktarten
    • Einfache Produkte
    • Konfigurierbare Produkte
    • Gruppen-Artikel
    • Bündel-Artikel
  • Produktverbindungen
    • Up-Selling (Anbieten des entsprechenden höherwertigen Produkts)
    • Cross-Selling (Anbieten dazu passender Zusatz-Produkte)
  • Bilder (mehrere Bilder pro Produkt und in verschiedenen Grössen)
  • Preisarten
    • Gruppenpreise
    • Sonderpreise (mit Datum für Beginn und Ende)
    • Staffelpreise

Flexibilität

Die hier verwendete Import-Lösung verlangt die Daten in einem speziellen Datenformat. Dieses Format ist stark an die Datenstruktur angelehnt, die auch Magento-Produkte haben. Um Daten zu importieren, die nicht dieses Format haben wird ein Adapter vorgeschaltet, der diese Daten übersetzt. 

Mit dieser Methode erhält man eine hohe Flexibilität. Das eigentliche Import-Modul bleibt völlig unberührt von der Art und dem Format der Daten die angeliefert werden. Wird ein neues Datenformat angeliefert muss nur ein neuer Adapter programmiert werden. Für einfache Datenformate ist dies schnell machbar und das Prinzip funktioniert auch problemlos bei komplexeren Datenformaten, wie zum Beispiel das Zusammenführen verschiedener Datenquellen mit unterschiedlicher Datenstruktur oder dem nachträglichen anreichern der Daten (wie z.B. die Berechnung von Rabatt-Preisen) .

Dadurch erreicht man die Anbindung beinahe beliebiger Eingabe-Formate. Formate, die hier immer wieder verwendet werden sind

  • CSV-Dateien
  • XML-Dateien
  • Anbindung an Webservice-Schnittstellen über SOAP oder REST
  • Anbindung an Software wie SAP oder Amicron

Sonstige Daten

Ein Webshop enthält nicht nur Produktdaten. Auch andere Daten, die im Magento-Shop zu finden sind müssen hin und wieder importiert und exportiert werden. Da hierbei aber selten so grosse Datenmengen entstehen, wie bei den Produktdaten, sollte hier genau überlegt werden, ob ein so radikaler Schritt wie bei den Produktdaten gegangen wird. Nicht die Magento-Funktionen zu benutzen, sondern direkt in die Datenbank schreiben bringt zwar auch hier Performance-Vorteile. Der Arbeitsaufwand steht bei kleineren Datenmengen aber meist in keinem Verhältnis zum tatsächlichen Performance-Gewinn.

Das Adapter-Prinzip hat sich allerdings auch bei diesen Daten bewährt. Hat man hier einmal eine Lösung, die die Magento-Daten sauber exportiert oder importiert kann diese Lösung mit dem Adapter-Prinzip einfach weiterverwendet werden und es muss nur ein neuer Adapter verwendet werden.

Daten, die auf diese Weise häufig importiert oder exportiert werden sind:

  • Bestellungen: Hier wird aufgrund der Komplexität der Daten häufig das XML-Format verwendet. Weil das XML-Format sehr flexibel ist, unterscheiden sich die Formate unterschiedlicher Anbieter erheblich. Deshalb ist hier das Adapter-Prinzip sehr zu empfehlen.
  • Kundendaten: Diese Daten können exportiert und importiert werden, da im allgemeinen sowohl auf der Kundenseite als auch im Webshop Kundendaten geändert werden können. Durch diese 2 Wege können sich Konflikte ergeben, die meist innerhalb eines Adapter gelöst werden müssen. Diese können hier also komplex werden.