EAV bei Magento und Adobe Commerce
Magento (und die kommerzielle Variante Adobe Commerce) nutzt EAV für seine Kern-Entitäten: Produkte, Kategorien, Kunden und Bestelladressen. Der historische Grund ist Flexibilität. Ein Händler kann im Backend beliebig viele eigene Attribute (in Magento „custom attributes") anlegen, ohne dass ein Entwickler das Datenbankschema ändern muss. Für sehr große, heterogene Kataloge mit stark unterschiedlichen Produkttypen ist das ein echter Vorteil — ein Möbelhändler und ein Elektronikhändler können dieselbe Magento-Installation mit völlig verschiedenen Attributsätzen betreiben.
Der Preis für diese Flexibilität ist Komplexität und Performance. Weil jede Abfrage über mehrere Tabellen joinen muss, ist EAV lese-intensiv. Magento gleicht das mit aggressivem Caching, Flat-Tables (zusammengefassten, denormalisierten Lese-Tabellen) und Indexern aus. Diese Mechanik funktioniert, macht den Datenbestand aber undurchsichtig — und genau diese Undurchsichtigkeit schlägt bei einer Migration zu.
Vor- und Nachteile auf einen Blick
EAV gegenüber dem Entitätsmodell von Shopware 6
Shopware 6 geht einen anderen Weg. Statt EAV nutzt es eine klar geschnittene Datenstruktur, die über die hauseigene Data Abstraction Layer (DAL) angesprochen wird. Produkte, Eigenschaften (Properties) und Varianten haben definierte Entitäten und Felder. Eigene Zusatzfelder werden über sogenannte Custom Fields abgebildet, nicht über ein vollständiges EAV-Schema. Das Ergebnis ist ein Datenmodell, das leichter zu lesen, zu validieren und programmatisch zu befüllen ist — auf Kosten der grenzenlosen Attributflexibilität, die Magento bietet.
Für die meisten Händler im Mittelstand ist dieser Tausch ein Gewinn: weniger Komplexität, vorhersehbarere Performance, einfacher zu wartende Schnittstellen. Für sehr große, attributgetriebene Enterprise-Kataloge kann die Flexibilität von EAV dagegen weiterhin ihren Wert haben.
Warum EAV bei einer Migration zur Herausforderung wird
Wer von Magento auf Shopware 6 wechselt, überträgt Daten aus einem EAV-Modell in ein Entitätsmodell. Zwischen beiden gibt es keine eins-zu-eins-Übersetzung. Besonders heikel sind konfigurierbare Produkte und Varianten: In Magento hängen Varianten als eigene „configurable product"-Konstruktion an einem Elternprodukt, in Shopware entstehen sie aus Properties und einer Variantenmatrix. Wer die EAV-Struktur unbesehen überträgt, riskiert doppelte Produkte, fehlende Kombinationen oder Varianten, die im Shop nicht mehr auswählbar sind.
Deshalb genügt ein Standard-Importer selten. In vielen Projekten braucht es ein Mapping-Skript oder ein Middleware-Werkzeug, das die verstreuten EAV-Werte einliest, dem richtigen Shopware-Feld zuordnet und Varianten korrekt aufbaut. Je individueller das Magento-Datenmodell ist — viele eigene Attribute, komplexe Varianten-Achsen, gewachsene Kategoriestrukturen — desto mehr wird aus der Migration ein echtes Datenprojekt. Das EAV-Modell zu verstehen, ist damit die Voraussetzung dafür, den Aufwand einer Shopware-Migration realistisch zu kalkulieren.
Die größte praktische Schwäche von EAV ist die Lese-Performance. Weil ein Produkt über viele Tabellen verteilt liegt, würde jede Storefront-Abfrage ohne Gegenmaßnahmen eine Flut von Joins auslösen. Magento begegnet dem mit mehreren Schichten. Indexer berechnen aufwändige Daten (Preise, Lagerbestände, Kategorie-Zuordnungen) im Voraus und legen sie in optimierten Index-Tabellen ab. Flat Tables fassen die verstreuten EAV-Werte eines Produkts oder einer Kategorie in einer einzigen, denormalisierten Lese-Tabelle zusammen, sodass die Storefront nicht den vollen EAV-Aufbau durchlaufen muss. Darüber liegt aggressives Caching, oft über Varnish und Redis.
Diese Maschinerie funktioniert, hat aber einen Preis: Sie muss konfiguriert, überwacht und nach Datenänderungen neu aufgebaut werden. Ein Reindex über einen großen Katalog kann spürbar Zeit kosten, und falsch eingestellte Indexer sind eine häufige Ursache für lahme Magento-Shops. Wer von Magento wegmigriert, lässt damit auch diese Betriebskomplexität hinter sich — Shopware 6 kommt ohne das EAV-bedingte Indexer-Geflecht aus.
Woher das EAV-Modell stammt
EAV ist keine Erfindung des E-Commerce. Das Muster ist in der Informatik seit Jahrzehnten bekannt und überall dort verbreitet, wo Objekte sehr viele, sehr unterschiedliche und nicht im Voraus festgelegte Eigenschaften haben. Ein klassisches Beispiel sind klinische Datensysteme: In der Medizin existieren zehntausende mögliche Befunde und Messwerte, von denen ein einzelner Patient nur eine kleine Auswahl trägt. Ein flaches Tabellenschema mit einer Spalte pro denkbarem Befund wäre nicht handhabbar. EAV löst genau dieses Problem, indem nur die tatsächlich vorhandenen Eigenschaften als Zeilen gespeichert werden. Das gleiche Argument gilt für Produktkataloge mit hunderten Produkttypen, weshalb Magento sich früh für EAV entschieden hat.
Dieses „sparse data"-Problem — viele mögliche, aber je Objekt nur wenige belegte Attribute — ist der eigentliche Daseinsgrund von EAV. Wer es kennt, versteht auch, warum EAV dort, wo Produkte einheitlich strukturiert sind, mehr Last als Nutzen bringt.
EAV, JSON-Spalten und andere Alternativen
EAV ist nicht der einzige Weg, flexible Attribute abzubilden. Moderne Datenbanken bieten Alternativen, die je nach Anwendungsfall einfacher sind:
- JSON-Spalten: Variable Attribute werden als JSON-Dokument in einer einzigen Spalte gespeichert. Das spart Joins, erschwert aber gezielte, indizierte Abfragen über einzelne Attribute.
- Flache Tabellen mit vielen Spalten: Schnell und einfach, aber unflexibel und bei hunderten optionalen Spalten unübersichtlich.
- Hybridmodelle: Häufig genutzte Attribute als feste Spalten, seltene als JSON oder Zusatzfeld. Shopware 6 geht mit seinem Entitätsmodell plus Custom Fields in diese Richtung.
Die Wahl ist immer ein Kompromiss zwischen Flexibilität, Abfrage-Performance und Wartbarkeit. EAV maximiert die Flexibilität und zahlt dafür mit Komplexität — ein Tausch, der für Magentos Anspruch sinnvoll war, für viele Mittelstandsshops aber überdimensioniert ist.
EAV in der Praxis lesen und exportieren
Wer Magento-Daten exportiert, merkt schnell, dass ein simpler Tabellen-Dump nicht reicht. Um ein vollständiges Produkt zu erhalten, müssen die Wert-Tabellen je Datentyp über die Entitäts-ID und die Attribut-ID zusammengeführt werden. Zusätzlich spielt der „Store-Scope" eine Rolle: Magento speichert Attributwerte pro Store-View, sodass derselbe Attributwert in mehreren Sprachvarianten existieren kann. Ein Export muss entscheiden, welche Scope-Ebene gilt. Genau diese Feinheiten — Datentyp-Trennung, Attribut-Sets, Store-Scopes, Standardwerte — machen das Auslesen eines EAV-Bestands zur Spezialaufgabe und sind der Grund, warum generische Export-Tools bei Magento oft unvollständige Ergebnisse liefern.
Häufige Fragen zum EAV-Modell
Wofür steht EAV? EAV steht für Entity-Attribute-Value, also Entität, Attribut und Wert — die drei Bausteine, aus denen das Datenmodell die Eigenschaften eines Objekts zusammensetzt.
Warum nutzt Magento EAV? Um Produkte, Kategorien und Kunden mit beliebig vielen eigenen Attributen erweiterbar zu machen, ohne bei jeder neuen Eigenschaft das Datenbankschema ändern zu müssen.
Ist EAV langsam? EAV ist lese-intensiv, weil Daten über viele Tabellen verteilt liegen und per Join zusammengeführt werden müssen. Magento gleicht das mit Flat-Tables, Indexern und Caching aus.
Nutzt Shopware 6 auch EAV? Nein. Shopware 6 verwendet ein klar geschnittenes Entitätsmodell über die Data Abstraction Layer (DAL) und bildet Zusatzfelder über Custom Fields ab, nicht über ein vollständiges EAV-Schema.
Warum ist EAV bei einer Migration relevant? Weil die verstreute EAV-Struktur von Magento nicht eins zu eins in das Shopware-Modell passt — besonders bei Varianten — und deshalb ein durchdachtes Daten-Mapping braucht.
Lassen sich EAV-Daten einfach als CSV exportieren? Nur eingeschränkt. Ein vollständiger Export muss die nach Datentyp getrennten Wert-Tabellen über die Entitäts- und Attribut-IDs zusammenführen und die Store-Scopes berücksichtigen. Generische CSV-Exporte liefern deshalb oft unvollständige oder falsch zugeordnete Daten.
Ist EAV grundsätzlich schlecht? Nein. Für Domänen mit sehr vielen optionalen Attributen ist EAV ein sinnvolles Muster. Es ist nur dort überdimensioniert, wo Objekte einheitlich strukturiert sind — wie in vielen Mittelstandskatalogen.
Weiterführend: eine ausführliche, sprachneutrale Beschreibung des Musters findet sich im Wikipedia-Artikel zum Entity–attribute–value model.