Magento zertifiziert


Magento

Magento - Intelligenter Produktimport

Intelligenter Produktimport

Ziel

Die erste Extension, die Tofex je entwickelt hat, war ein intelligenter Produktimport. Bis heute bildet er bei jedem Kunden einen wichtigen Teil des erfolgreichen Webshops. Nachdem wir zunächst versucht haben, mit den zahlreichen vorhandenen Importen das gewünschte Ziel zu erreichen, nämlich große Datenmengen intelligent und nachvollziehbar zu importieren, wurde schnell klar, dass keine Lösung unseren Ansprüchen genügt.

Hintergrund

Das häufigste Szenario bei der Integration von Webshops in eine größere Infrastruktur, sind häufige Vollexporte von ERP, Warenwirtschaft oder PIM mit zehntausenden von Produktdaten. Das Problem ist dabei nicht, wie man diese effektiv in die Datenbank bekommt. Dafür gibt und gab es immer Lösungen. Die Frage war eher, wie man verhindert, dass man Unmengen von überflüssigen Importen importiert und am Ende einen Vollindex machen muss, sodass der Webshop über Stunden beschäftigt ist.

Ein weiteres Szenario war genau das Gegenteil. Aus den externen Quellen werden kontinuierlich kleine Updates geschickt, die schnellstmöglich verarbeitet werden sollen. Das Problem beim Verwenden von Lösungen, die auf der Magento-internen Logik basieren, war stets der enorme Overhead, der sowohl den Speicherverbrauch als auch die Prozessen stets unnötig belastet hat und zudem einfach lange dauert.

Unsere Lösung

Tofex Import

Bei dieser Extension handelt es sich um den Import von EAV Entitäten, d.h. es können damit auch Kategorien, Kunden oder Adressen importiert werden. Der Produktimport ist jedoch das meistgenutzte Einsatzgebiet. Um das Ziel eines intelligenten Imports zu erreichen, wird auf drei Ebenen geprüft, ob es notwendig ist, dass ein Import der Daten erfolgen muss.

1) Source Cache

Nachdem die Daten von der externen Quelle eingelesen worden sind, z.B. aus Dateien oder externe APIs, wird über die Daten ein Hash gebildet und dieser mit vergangenen Importen verglichen. Wird hier schon festgestellt, dass für dieses Produkt die exakt selben Daten bereits importiert wurden, wird das Produkt von da an ignoriert.

2) Transformed Cache

Die externen Datenquellen liefern die Daten selten in einem Format, welches 1:1 in Magento importierbar ist. Daher werden die Daten nach dem Einlesen in eine Struktur für Magento transformiert. Ist das geschehen, wird auch hier ein Hash über die Daten gebildet und geprüft, ob exakt diese Daten schon einmal importiert worden sind. Bei einem Treffer wird das Produkt ignoriert.

3) Abgleich Datenbank

Bevor Daten wirklich geschrieben werden, werden für große Blöcke von Produkten die aktuellen Daten zunächst gelesen. Dieses Lesen von Massendaten wird auch in der Tofex Product Feed Extension verwendet, um schnell große Datenmengen zu exportieren. In diesem Fall steht darüber ein Vergleich zur Verfügung, ob sich ein Attributwert wirklich verändert hat. Nur wenn das der Fall ist, wird der Wert in die Datenbank geschrieben. Der Vorteil ist, dass nur dann die weiterfolgenden Prozesse wie Indexieren angeschoben werden, wodurch sich der Mehraufwand des Einlesens der Daten um ein vielfaches rentiert.

Intelligente Indexierung

Auch nach dem reinen Import der Daten geht die Optimierung weiter. In den späteren Versionen von Magento 1 und nun in Magento 2 wurden für das Indexieren von Daten Datenbank-Trigger eingeführt, über diese die Produkte ermittelt werden, für die eine Indexierung notwendig ist. Grundsätzlich ist das zunächst einmal besser als die Notwendigkeit, immer einen Vollindex durchzuführen oder Produktmodelle zu speichern. Aber trotzdem produziert dieser Mechanismus viel zu viele Prozesse.

Der Grund dafür ist, dass die Trigger keine Logik enthalten, was für ein Attribut sich ändert. Die meisten Indexe sind nur notwendig, wenn sich z.B. Suchrelevante Attribute ändern oder Werte, welche auf den Produktlisten angezeigt werden. Daher deaktiviert der Import diese Trigger vorrübergehend und ermittelt selbst, ob eine Datenänderung wirklich eine Indexierung notwendig macht. Somit verringert sich auch hier die Zeit der Importe deutlich.

Mit all diesen Mitteln erreichen wir, dass auch bei tausenden von Produktdaten der Import nur wenige Minuten dauert und das System nicht nur dramatisch entlastet wird, sondern es auch möglich ist, dass Importe viel häufiger durchgeführt werden können. Das ist z.B. für Bestandsimporte sehr relevant, da der Importer auch hier genauso intelligent vorgeht und sich somit auch konstant Vollimporte von Beständen durchführen lassen.

2020-07-13 22:01:59
Warum entwickeln wir eigene Extensions? Warum verkaufen wir keine Extensions?

Kontakt

Tofex UG
Unterm Markt 2
07743 Jena

Telefon: +49 3641 559 87 40
E-Mail: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!