MySQL Datentyp BINARY?

Das sehe ich auch so. Es geht ja nicht darum die UUID (als Client-seitig generierte ID) zu verteufeln. Nur für Währungen, Sprachen, Länder, Anrede etc. gibt es schon „short-codes“, dann muss man hier keine neue UUID für erfinden, die ja auch hier das Gegenteil von schlank und effizient ist.

1 „Gefällt mir“

Also UUIDs sind doch wohl in fast jeglicher Hinsicht besser.

  1. Man kann aus anderen Datenbanken einfach komplette Datensätzte rüberschieben, ohne sich um Kollisionen sorgen zu müssen. Eine manuelle Anpassung der Indizes & auto increment Option ist super nervig, vor allem in der Produktions-Umgebung stressig.
  2. Die ID steht schon vor dem INSERT-Befehl zur Verfügung.
  3. Die IDs sind nicht vorhersagbar, was bei fortlaufenden IDs ein Sicherheitsrisiko sein kann.
  4. Irgendwann ist der Wertebereich voll. In Shopware 5 ist „nur“ Platz für 2.147.483.647 bzw. 4.294.967.295 Einträge. Das klingt erstmal viel, kann aber im schlimmsten Fall zu Ausfällen führen.

Ja, es kann langsamer sein, weil 128 Bit groß. Aber sofern der DB-Server nicht auf einr Kartoffel läuft, sollte man davon nicht viel merken. Und zur Not rüstet man etwas RAM nach.

Das Argument der Lesbarkeit verstehe ich wirklich nicht. Ob da jetzt 123 oder 0x6eabeb53bcbd4760b39c6b592d919260 drin steht, ist mir beim Entwickeln und debuggen doch egal!?

Hm, ja wenn der Shop dann 50 Jahre läuft :slight_smile: Und die wirklichen Giganten im Online Handel (wo das eintreffen könnte) arbeiten nicht mit Shopware :slight_smile:

Wenn du 32 Stellen mit dem Auge besser erfassen kannst als 3 Stellen, dann Glückwunsch :slight_smile:

Ja, aber dafür sind die IDs nicht sortierbar, was bei bestimmten Analysen ganz nützlich wäre.

Keine Frage, alles hat seine Vor- und Nachteile.

UUIDs sind nicht nur der „neue heiße Scheiss“, der gerade gehyped wird und eigentlich vollkommen unnötig ist. Natürlich hat jedes Konzept seine Vor- und Nachteile, aber für Shopware waren Faktoren wie „sind UUIDs für fachfremde Dritte lesbar und in phpmyadmin nutzbar“ eher zweitrangig.

Viele Grüße

1 „Gefällt mir“

Cool, wann gibt es T-Shirts, Schlüpfer und Tassen mit UUIDs als Aufdruck? :slight_smile:

Ja, aber wenn du irgendwann evtl. Giganten haben möchtest, entwickelst du kein System was nicht skalierbar ist, nur um dann die paar Popelshops aus der nicht zahlenden Community zufriedenzustellen.

Ich muss die gar nicht „mit dem Auge erfassen“. Wozu sollte ich?

Alle Tabellen haben ein created_at Feld :exploding_head:

Datenbanken mögen UUID als Primärschlüssel eher nicht so: https://www.baeldung.com/uuid-vs-sequential-id-as-primary-key

Der Index wird dadurch viel größer und vorallem sind die heißen Rows zufällig verteilt und es müssen somit mehr Pages im Cache gehalten werden. Also UUID haben definitiv nicht nur Vorteile.

Die Performance ist schon spürbar besser…
SW5 war zum Ende hin keine Rakete mehr.

Je nach dem wie man Shopware verwendet kann man auch einfach eine MD5-Summe aus der Artikelnummer generieren und man hat seine UUID. :wink:
… WHERE id = UNHEX(MD5(„ARTIKELNUMMER“))

Es ist halt nun mal so und ich habe mich damit angefreundet… welche Wahl habe ich schon außer ein anderes System zu verwenden?

2 „Gefällt mir“

Genauso mache ich das mit den Category-Ids aus unsere WaWi, die kann ich für den Kategoriebaum so einfach abgleichen. Für die Artikel habe ich ja die Artikelnummer.

1 „Gefällt mir“

Ja, gerade beim Abgleich mit anderen Systemen haben die UUIDs definitiv Vorteile. Das wird vermutlich auch einer der Gründe von Shopware gewesen sein.

Ich wollte eigentlich nur sagen, warum man UUID für alles nutzen muss? Z.B. bei:

  • Produkt-Nr
  • EAN
  • ASIN
  • Währungen
  • Länder-Codes (auch Sprachen)
  • Anreden
  • Status-Codes
  • Steuersätzen

braucht Definitiv keine neuen „künstlichen“ PrimaryKey, sondern man verwendet einfach den Wert. Nur leider wurde dies von der oder dem API-Architekt(in) von Shopware wohl nicht verstanden.

Es halt halt Enums (so wie alles oben) und daraus kann man dann eine ID machen (oder eher wohl einen Integer) und dann gibt es Entities in denen es schon einen „natürlichen“ Primary-Key gibt.
Und eine KundenNr kann ich mir merken (manchmal auch eine Iban). Aber scheinbar schwirren hier auch die Genies herum, die sich locker mal eine UUID oder IPv6 merken können.

Bin wahrscheinlich old-school weil ich einen Schlüssel habe am Bund :slight_smile:

2 „Gefällt mir“