ULID-Generator – Sortierbare ULIDs online

Online-Tool zur Generierung von ULIDs mit lexikografischer Sortierung als UUID-Alternative.

Versuchen Sie diese Beispiele:

Was ist ULID?

ULID (Universell Eindeutiger Lexikographisch Sortierbarer Identifikator) ist ein 128-Bit-Identifikatorformat, das entwickelt wurde, um die Einschränkungen von UUIDs zu überwinden. Es besteht aus:

  • Zeitstempel: 48 Bits Unix-Zeit mit Millisekundenpräzision
  • Zufallswert: 80 Bits kryptografisch sicherer Zufallsdaten
  • Kodierung: Base32-Darstellung (26 Zeichen)

Formatbeispiel: 01ARZ3NDEKTSV4RRFFQ69G5FAV

Wie ULID funktioniert

  1. Generiert 48 Bits für den Zeitstempel (Unix-Zeit in Millisekunden)
  2. Generiert 80 Bits kryptografisch sicherer Zufallsdaten
  3. Kombiniert den Zeitstempel (höchstwertig) mit dem Zufallswert (niedrigstwertig)
  4. Kodiert den gesamten 128-Bit-Wert mit Crockfords Base32-Alphabet
  5. Das Ergebnis ist eine 26-Zeichen-Zeichenkette (die ersten 10 Zeichen sind der Zeitstempel, die letzten 16 der Zufallswert)

Vorteile & Überlegungen

VorteileÜberlegungen
  • Lexikographisch sortierbar
  • URL-sicherer Zeichensatz
  • Keine spezielle Kodierung nötig
  • Groß-/Kleinschreibung irrelevant
  • Keine Datenschutzbedenken
  • Neuer, weniger verbreitet
  • Eingeschränkte Bibliotheksunterstützung
  • Keine UUID-Kompatibilität
  • Kann nicht vor 1970 zurückgehen

ULID-Struktur

KomponenteBitsZeichenBeschreibung
Zeitstempel48 Bits10 ZeichenUnix-Zeitstempel (ms) in Base32 kodiert
Zufallswert80 Bits16 ZeichenZufallsbytes in Base32 kodiert

ULID vs. UUID Vergleich

EigenschaftULIDUUID v1UUID v4UUID v7
Größe128 Bits128 Bits128 Bits128 Bits
Zeichenkettenlänge26 Zeichen36 Zeichen36 Zeichen36 Zeichen
Zeitbasiert
Natürliche Sortierung
URL-sicher
MAC-Adress-Offenlegung
Zufallskomponente
Kanonischer Standard⚠️ Entwurf

Häufige Anwendungsfälle

  • Datenbank-Primärschlüssel: Leistungsoptimierte Indizes
  • Verteilte Systeme: Koordinationsfreie Generierung
  • APIs: Saubere, URL-sichere Kennungen
  • Zeitreihendaten: Native chronologische Sortierung
  • Protokollsysteme: Sortierbare Ereigniskennungen
  • Moderne Anwendungen: Wo UUID-Einschränkungen problematisch sind

Warum ULID wählen?

  • Sortierbarkeit: Lexikografisch nach Erstellungszeit sortierbar
  • URL-Sicherheit: Keine URL-Kodierung nötig (im Gegensatz zu UUIDs mit Bindestrichen)
  • Kompaktheit: 26 Zeichen gegenüber 36 für UUID
  • Unabhängigkeit von Groß-/Kleinschreibung: Reduziert Benutzereingabefehler
  • Monotonie: Optionale monotone Sortierung innerhalb derselben Millisekunde
  • Keine Sonderzeichen: Einfaches, rein alphanumerisches Format

Häufig gestellte Fragen

Wie vergleicht sich ULID mit UUID v7?

Beide verwenden Unix-Zeitstempel für die Sortierbarkeit und haben Zufallskomponenten. Die Hauptunterschiede sind die Kodierung (Base32 vs. Hex), das Format (26 Zeichen vs. 36) und die Standardisierung (UUID v7 ist in RFC-Entwurfsspezifikation).

Kann ich die Erstellungszeit aus einem ULID extrahieren?

Ja. Die ersten 10 Zeichen repräsentieren einen Unix-Zeitstempel mit Millisekundenpräzision, der dekodiert und in ein Standard-Datums-/Zeitformat umgewandelt werden kann.

Sind ULIDs mit UUID-Datenbankfeldern kompatibel?

Nein. ULIDs verwenden ein anderes Format und müssten als Zeichenketten oder Binärdaten statt in nativen UUID-Datenbanktypen gespeichert werden.

Was ist Monotonie bei ULIDs?

Einige ULID-Implementierungen bieten eine monotone Option, die die sequenzielle Sortierreihenfolge selbst innerhalb derselben Millisekunde gewährleistet, indem die Zufallskomponente für ULIDs, die im gleichen Zeitstempel erstellt wurden, inkrementiert wird.

Welchen Zeichensatz verwendet ULID?

ULID verwendet Crockfords Base32-Kodierung (0-9, A-Z ohne I, L, O, U), die entwickelt wurde, um Verwechslungen und Übertragungsfehler zu minimieren, wenn IDs manuell gelesen oder eingegeben werden.

Ressourcen

Crockfords Base32-Alphabet

KodierungswertZeichenHinweise
0-90-9Dezimalziffern
10-31A-ZOhne I, L, O, U für bessere Lesbarkeit

Zeichen: 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Diese Kodierung ist für die Dekodierung unabhängig von Groß-/Kleinschreibung (aber ULIDs werden normalerweise in Großbuchstaben generiert).