Auswirkung von Custom ID's auf Performance (B-tree)

Hallo zusammen,

ich möchte Produkte in SW6 über die API erstellen und updaten. Da hierfür im Gegensatz zu SW5 für sämtliche Datensätze beim Update die ID benötigt wird, würde ich hierfür gerne die ID des Quellsystems (PIM/Warenwirtschaft) nutzen. Im Quellsystem werden UUIDv4 ID’s für neue Datensätze angelegt. Shopware 6 nutzt jedoch UUIDv7, vermutlich aus Performancegründen, da wie ich gelesen habe, B-Tree als Indexstruktur genutzt wird.

Werde ich, falls ich nun einfach die UUIDv4 ID’s nutze bei der Synchronisation Perfomanceprobleme bekommen? Es handelt sich um einen Shop mit ca. 6.000 Artikel wovon ca. 1000 Artikel zusätzliche Varianten besitzen.

Könnte ich sonst irgendwelche Probleme bekommen? Gibt es ein Problem wenn ich eine Mischung nutze? Bereits jetzt vorhandene Datensätze würde unter der UUIDv7 des Shops laufen und neu angelegte Datensätze würden die UUIDv4 des Quellsystems bekommen.

Bin für alle Tipps oder Ideen offen und dankbar.

Ob du Perfomance-Probleme bekommst, kann man so in blaue nicht sagen. Das hängt von Server-Leistung ab.

Im Prinzip kannst du aber dir aber auch eine fixe & eindeutige UUIDv7 bauen:

Der Timestamp-Part kann ja z.B. das Release-Datum (oder irgendein anderes fixes Datum) sein und der „Random“-Part ist die Artikelnummer/Id.

Damit kommst du von jedem Artikel zu einer UUIDv7 und wieder zurück.

2 „Gefällt mir“

Der Datenbank ist es egal, die ID‘s werden nicht validiert, kann genau so ein MD5 Hash aus der Artikelnummer sein.

1 „Gefällt mir“

Ja, ach ne. Dann kann er gleich seine UUIDv4 nehmen, die er eh schon hat.

Noch eine Ergänzung:

Ein Mix aus beiden Versionen wird vermutlich kaum Vorteile bringen aber auch keine Nachteile. Im schlimmsten Fall hast du die Perfomance wie bei UUIDv4.

Aber wenn man einmal eine neue Regel für UUIDv7 Artikel-IDs hat, ist es ja auch kein Problem die vorhandenen IDs in der Datenbank zu ändern.

1 „Gefällt mir“

Vermutlich ist eine eigene UUIDv7 zu generieren und diese zu nutzen wirklich die beste Lösung.

Das keine Validierung der ID’s stattfindet ist mir klar. Trotzdem kann es negative Auswirkungen haben.