Shopware

Wie groß das Datenmodell von Shopware wirklich ist

231 Kernentitäten in 6.7, 217 in 6.6. Übersetzbar sind 49 davon, Custom Fields erlauben 85. Die Zahlen sagen mehr über Migrationsaufwand als jede Feature-Liste.

Pixup MediaVeröffentlicht am 9 Min. Lesezeit

Ergebnis

231 Kernentitäten in 6.7 gegen 217 in 6.6

Übersetzbar sind 49 davon (6.6: 44), Custom Fields erlauben 85 (6.6: 83). Die Rohsummen inklusive der installierten Erweiterungen liegen bei 247 und 228. Der Zuwachs von 14 Kernentitäten ist kein gleichmäßiges Wachstum: Ein neues Maßsystem bringt allein zwei Übersetzungstabellen mit.

Balkendiagramm: Kernentitäten, übersetzbare Entitäten und Entitäten mit Custom Fields im Vergleich von Shopware 6.6.10.6 und 6.7.13.1.
Drei Zählungen, zwei Versionen. Die Rohsummen mit Erweiterungen liegen höher als die Kernzahlen.

„Shopware ist groß" ist keine Aussage, mit der sich planen lässt. Für eine Migration, eine Schnittstelle oder eine Mehrsprachigkeitsentscheidung braucht man Zahlen. Wir haben sie an zwei laufenden Installationen erhoben — nicht aus der Dokumentation, sondern aus dem Kernel selbst.

Die Zählung

Ausgelesen haben wir die DefinitionInstanceRegistry beider Kernel. Dort ist jede Entität registriert, die der laufende Shop kennt. Jede Definition haben wir nach dem Namensraum ihrer Klasse eingeordnet: Kern oder Erweiterung.

6.6.10.66.7.13.1Differenz
Kernentitäten217231+14
Rohsumme mit Erweiterungen228247+19
davon übersetzbar4449+5
mit Custom-Fields-Feld8385+2

Die Trennung nach Herkunft ist notwendig, weil beide Testsysteme unterschiedliche Erweiterungen tragen. Ohne sie vergleicht man zwei Installationen, nicht zwei Versionen.

Was die drei Zahlen jeweils bedeuten

231 Kernentitäten: die Breite des Modells

Das ist die Fläche, die eine Migration abbilden muss — theoretisch. Praktisch berührt ein typischer Shop einen Bruchteil davon: Produkte, Kategorien, Kunden, Bestellungen, Medien, Regeln, Inhalte. Der Rest ist Infrastruktur, Versionierung, App-System, Protokolle.

Die Zahl ist trotzdem nützlich, wenn jemand eine vollständige Abbildung in ein anderes System verspricht. 231 Entitäten bedeuten: Es gibt keine vollständige Abbildung, es gibt eine Auswahl. Die Frage ist nur, wer sie trifft.

49 übersetzbare Entitäten: der Multiplikator

Das ist die wichtigste der drei Zahlen, sobald ein Shop mehrsprachig wird. Jede übersetzbare Entität führt eine eigene Übersetzungstabelle, und in der steht je Sprache ein eigener Datensatz.

Ein Shop mit fünf Sprachen hat nicht fünfmal so viel Inhalt, aber in diesen 49 Bereichen fünfmal so viele Zeilen — und jede davon kann gepflegt, veraltet oder leer sein. Was daraus folgt, haben wir getrennt untersucht: welche Produktdaten überhaupt sprachabhängig sind und wie man sie ohne Datenverlust übersetzt.

Die fünf neuen übersetzbaren Entitäten in 6.7 sind kein Zufall: Zwei davon gehören zum neuen Maßsystem (measurement_display_unit_translation und measurement_system_translation). Wer Maßeinheiten mehrsprachig ausgibt, bekommt hier einen Bereich dazu, den es vorher nicht gab.

85 Entitäten mit Custom Fields: die erlaubte Erweiterungsfläche

Custom Fields sind die einfachste Art, eigene Daten unterzubringen — und die mit den meisten Folgekosten, wenn man sie an der falschen Stelle einsetzt. Dass 85 Entitäten sie erlauben, ist eine technische Obergrenze, keine Empfehlung.

Wann ein Custom Field genügt und wann eine eigene Entität die bessere Wahl ist, haben wir an der Frage Custom Field oder eigene Entität durchgespielt. Die Kurzfassung: Sobald mehrere Werte, eigene Beziehungen oder eine eigene Lebensdauer im Spiel sind, ist das Custom Field die teurere Lösung.

Was der Zuwachs von 14 Entitäten aussagt

Ein Versionssprung, der 14 Kernentitäten hinzufügt, ändert das Datenmodell spürbar — aber nicht gleichmäßig. Der Zuwachs konzentriert sich auf wenige Themen. Das neue Maßsystem ist das sichtbarste Beispiel: Es bringt eigene Entitäten samt Übersetzungen mit.

Für die Planung eines Umstiegs ist das die angenehmere Sorte Veränderung: neue Bereiche neben den alten, nicht umgebaute alte. Was sich an der Datenbank tatsächlich ändert — Tabellen, Spalten, Schlüssel —, haben wir in Was ein Versionssprung an der Datenbank tut vermessen. Beide Messungen gehören zusammen: Die eine zählt Definitionen, die andere Strukturen.

Warum wir nicht Tabellen gezählt haben

Naheliegend wäre gewesen, SHOW TABLES auszuführen. Das hätte eine andere Zahl ergeben und eine unschärfere. Eine Entität kann mehrere Tabellen berühren, Zuordnungstabellen haben eigene Definitionen, und Views tauchen auf, die fachlich nichts Eigenes sind.

Die Registry ist die Sicht des Systems auf sich selbst: Was dort steht, kennt der Kern als eigenständige Sache — mit Feldern, Beziehungen und Regeln. Für die Frage „wie groß ist das Modell" ist das die ehrlichere Zählung.

Einordnung für die Praxis

  • Migration geplant? Die 231 sind die Obergrenze, nicht der Aufwand. Erstellen Sie die Liste der tatsächlich genutzten Entitäten, bevor Sie schätzen lassen.
  • Mehrsprachigkeit geplant? Die 49 sind der Multiplikator. Sie entscheiden über Pflegeaufwand und Übersetzungskosten mehr als die Zahl der Produkte.
  • Eigene Felder geplant? Die 85 sagen, wo es geht. Ob es soll, ist eine Architekturfrage.
  • Versionswechsel geplant? Der Zuwachs ist additiv. Das senkt das Risiko, ersetzt aber keinen Test der eigenen Erweiterungen.

Häufige Fragen

Wie viele Entitäten hat Shopware 6.7?
In unserer Messung 231 im Kern, 247 inklusive der installierten Erweiterungen der Testinstallation. In 6.6.10.6 waren es 217 beziehungsweise 228.
Wie viele Shopware-Entitäten sind übersetzbar?
49 in 6.7.13.1 und 44 in 6.6.10.6. Übersetzbar heißt: Die Definition führt ein TranslationsAssociationField, es gibt also eigene Datensätze je Sprache.
Wo kann ich in Shopware eigene Felder anlegen?
An 85 Entitäten in 6.7 und 83 in 6.6 — überall dort, wo die Definition ein customFields-Feld führt. Das ist die technische Obergrenze, nicht eine Empfehlung.
Was bedeutet die Größe des Datenmodells für eine Migration?
Sie bestimmt den Umfang der Abbildung. Nicht jede Entität ist für jeden Shop relevant, aber jede übersetzbare Entität vervielfacht die Datensätze mit der Zahl der Sprachen.
Technische UnterstützungShopware-Agentur

Verwandte Inhalte

Alle Untersuchungen
Shopware · 11 Min.

Was ein Versionssprung an der Datenbank wirklich tut

Untersucht: Was ändert ein Sprung von Shopware 6.6 auf 6.7 tatsächlich am Datenbankschema — und welche dieser Änderungen können eine bestehende Integration brechen?

Ergebnis

23 neue Kerntabellen, 3 entfallene Spalten

Dazu 47 neue Spalten in bestehenden Tabellen und 12 Typänderungen. Keine Tabelle ist entfallen. Das Risiko für Integrationen liegt nicht bei den 23 neuen Tabellen — die stören niemanden —, sondern bei den drei entfallenen Spalten und vier Typänderungen, die aus einer erlaubten NULL eine Pflichtangabe machen.

Untersuchung lesenMessung vom
APIs & Integrationen · 9 Min.

Wie groß Shopwares API wirklich ist

Untersucht: Wie viele Endpunkte haben Shopwares Admin-API und Store-API tatsächlich — und wie viele davon sind eigens geschriebene Funktionen statt generierter CRUD-Operationen?

Ergebnis

87 Store-API gegen 2.248 Admin-API

Zahlen des Kerns, um die Routen der installierten Erweiterungen bereinigt. Von den 2.248 Admin-Routen sind 2.000 generierte CRUD-Operationen und 179 eigens geschriebene _action-Endpunkte. Die kundenseitige Store-API hat 87 Endpunkte. Wer eine Integration plant, rechnet mit 179 und 87 — nicht mit 2.248.

Untersuchung lesenMessung vom
Shopware · 9 Min.

Custom Field oder eigene Entität

Custom Fields liegen als JSON ohne Index, je Sprache getrennt, in einem installationsweiten Namensraum. Drei gemessene Eigenschaften, aus denen die Entscheidung folgt.

LesenGeprüft am