Fehler 1: UUID als VARCHAR(36) statt Binärtyp speichern
Angenommenes Beispiel-Szenario: Ein Reviewer sieht in einem Pull-Request eine neue Tabelle mit id VARCHAR(36) PRIMARY KEY, obwohl die verwendete Datenbank einen nativen UUID-Typ (PostgreSQL) oder BINARY(16) (MySQL) anbietet. Das funktioniert zwar, verschenkt aber Platz — 36 Zeichen als String benötigen typischerweise mehr Bytes als die reinen 16 Byte der UUID — und macht Indexvergleiche etwas aufwendiger, weil String-Vergleiche in der Regel mehr Rechenaufwand verursachen als der Vergleich fester Binärblöcke.
Die Korrektur ist meist unkompliziert: Spaltentyp auf den nativen UUID- oder Binärtyp der jeweiligen Datenbank umstellen und die Konvertierung beim Lesen/Schreiben der Anwendung überlassen. Für schnelle Zwischentests eignet sich der UUID-Generator, um mit der Bulk-Funktion (bis zu 1.000 Werte) realistische Testdaten für beide Spaltentypen zu erzeugen und Speicherverbrauch/Antwortzeiten selbst zu vergleichen.
Fehler 2: v1-UUIDs in öffentlichen URLs verwenden
Angenommenes Beispiel-Szenario: Ein Entwickler baut einen öffentlichen Freigabe-Link für ein Dokument nach dem Muster /share/<uuid> und generiert dafür versehentlich eine echte v1-UUID statt v4. Ein aufmerksamer Reviewer merkt an, dass sich aus dem Zeitstempel-Teil einer v1-UUID der ungefähre Erstellungszeitpunkt des Datensatzes ablesen lässt — für die meisten Anwendungen ein unnötiges, leicht vermeidbares Informationsleck.
- Für öffentlich sichtbare IDs: v4 (rein zufällig, keine Zeit- oder Geräteinformation) oder v7 (nur ein grober Zeitstempel, keine Geräte-ID).
- Für interne Datenbank-Primärschlüssel: v7 kann wegen der Sortierbarkeit sinnvoll sein, siehe den ersten Blog-Beitrag zu diesem Tool.
- Der „v1-ähnliche" Modus in diesem Generator: verwendet ohnehin nur eine zufällig erzeugte Node-ID statt einer echten MAC-Adresse — nützlich zum Testen von v1-Parsing-Code, ohne echte Gerätedaten preiszugeben.
Fehler 3: Uneinheitliche Formatierung im Team
Angenommenes Beispiel-Szenario: Ein Frontend-Team erzeugt UUIDs ohne Bindestriche für kürzere URLs, während der Backend-Service sie im Standardformat mit Bindestrichen erwartet. Ein einfacher if (idFromUrl === idFromDb)-Vergleich schlägt fehl, obwohl beide dieselbe UUID repräsentieren — nur eben unterschiedlich formatiert.
Der UUID-Generator bietet genau diese Formatoptionen nebeneinander an (Klein-/Großbuchstaben, mit/ohne Bindestriche, geschweifte Klammern, URN-Präfix) — praktisch, um schnell zu prüfen, wie derselbe Wert in unterschiedlichen Darstellungen aussieht, bevor eine Formatentscheidung im Code festgeschrieben wird.
| Format | Beispiel | Zeichenlänge |
|---|---|---|
| Standard (Kleinbuchstaben, mit Bindestrichen) | 550e8400-e29b-41d4-a716-446655440000 | 36 |
| Ohne Bindestriche | 550e8400e29b41d4a716446655440000 | 32 |
| Geschweifte Klammern (.NET GUID) | {550e8400-e29b-41d4-a716-446655440000} | 38 |
Fehler 4 & 5: Fehlende Validierung und Versionsverwechslung
Angenommenes Beispiel-Szenario: Ein API-Endpunkt akzeptiert eine UUID als Pfad-Parameter und prüft nur grob per Regex auf 36 Zeichen mit Bindestrichen an den richtigen Stellen, ohne die Versions- und Varianten-Bits (Zeichen 15 bzw. die ersten 1-2 Bit von Zeichen 20) zu kontrollieren. Ein zufällig oder böswillig erzeugter String, der dem Muster entspricht, aber keine gültige RFC-4122-UUID ist, kommt so ungeprüft durch.
Eng verwandt ist eine Versionsverwechslung: Etwa wenn Code, der einen Zeitstempel aus einer UUID extrahieren soll, versehentlich auf eine v4- oder v3/v5-UUID angewendet wird — diese enthalten schlicht keine Zeitinformation, ein Extraktionsversuch liefert dann bestenfalls Datenmüll, schlimmstenfalls einen unbemerkt falschen Zeitstempel.
UUIDs generieren, validieren und in verschiedenen Formaten vergleichen — direkt im Browser, ganz ohne Serveranfrage.
Zum UUID-Generator →