ULID-Generator
Erzeugen Sie in großer Zahl ULIDs — chronologisch sortierbare Kennungen, die sich als Alternative zu UUIDs eignen.
Tipps zur Nutzung
- Die ersten 10 Zeichen einer ULID kodieren einen Zeitstempel (den Erzeugungszeitpunkt), die restlichen 16 Zeichen sind zufällig. Außer wenn zwei ULIDs innerhalb derselben Millisekunde erzeugt werden, genügt eine einfache Sortierung als Zeichenkette, um die Erzeugungsreihenfolge wiederherzustellen.
- Wird als Primärschlüssel einer Datenbank ein vollständig zufälliger UUID v4 verwendet, führt dies dazu, dass neue Zeilen an zufälligen Positionen im Index eingefügt werden, was leicht zur Fragmentierung von B-Tree-Indizes führt. Da ULIDs annähernd zeitlich sortiert sind, werden neue Zeilen meist nahe dem Ende des Index eingefügt, was dieses Problem abmildert.
- Eine ULID wird als 26 Zeichen in Crockfords Base32 dargestellt (das 32-Zeichen-Alphabet `0`-`9` und `A`-`Z`, aus dem die leicht zu verwechselnden Buchstaben I, L, O und U entfernt wurden). Damit ist sie kürzer als eine UUID (36 Zeichen inklusive Bindestriche) und lässt sich auch in Umgebungen ohne Unterscheidung von Groß- und Kleinschreibung sicher verwenden.
- Einen Formatvergleich mit Nano ID und UUID v4 finden Sie in der Vergleichstabelle auf unserem Schwestertool, der Nano-ID-Generator-Seite.
Häufig gestellte Fragen
Übrigens – wie ULID die chronologische Ordnung in die Welt der IDs brachte
Die ULID-Spezifikation wurde 2016 von Alizain Feerasta veröffentlicht. Zu dieser Zeit war UUID bereits der Standard zur Erzeugung eindeutiger IDs in verteilten Systemen, doch seine vollständig zufällige Natur — die eine Sortierung unmöglich machte — galt als unpraktisch für die Effizienz von Datenbankindizes und für die zeitliche Analyse von Logs. Genau dieses Problem sollte ULID lösen.
Tatsächlich besitzt auch UUID zeitbasierte Varianten: Version 1 (MAC-Adresse plus Zeitstempel) und Version 7 (2024 standardisiert, eine Kombination aus Zeitstempel und Zufallswerten). ULID ist jedoch eine eigenständige Spezifikation, unabhängig vom UUID-Standard (RFC 4122), und zeichnet sich durch ein einfacheres Design sowie eine kompakte Base32-Darstellung aus.
Heute existieren für nahezu alle wichtigen Programmiersprachen Implementierungsbibliotheken für ULID, und es wird überall dort eingesetzt, wo die Erzeugungsreihenfolge erhalten bleiben soll: bei Ereignis-IDs in verteilten Systemen, Trace-IDs in Logs und Primärschlüsseln in Datenbanken. In der Designphilosophie überschneidet es sich stark mit dem etwa zeitgleich entstandenen UUID v7, und beide existieren nebeneinander als unterschiedliche Ansätze für dasselbe Ziel: eine sortierbare, UUID-ähnliche Kennung.