Was das Tool macht
Dieses Tool erzeugt ULIDs in deinem Browser. Eine ULID ist eine 128-Bit-Kennung wie eine UUID, wird aber mit 26 Zeichen geschrieben und sortiert sich nach ihrem Erstellungszeitpunkt. Damit eignen sich ULIDs gut als Primärschlüssel in Datenbanken, als Event- und Log-IDs, für Dateinamen und für alles andere, was du ohne separate Zeitstempel-Spalte in Erstellungsreihenfolge auflisten willst.
Eine ULID besteht aus zwei Teilen:
- Zeitstempel (erste 10 Zeichen): Millisekunden seit der Unix-Epoche, 48 Bit. Er reicht bis zum Jahr 10889.
- Zufall (letzte 16 Zeichen): 80 Bit aus dem kryptografischen Zufallszahlengenerator des Browsers.
ULIDs verwenden Crockfords Base32-Alphabet 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Es lässt I, L, O und U weg, damit sich IDs leicht vorlesen und schwer vertippen lassen, und enthält keine Zeichen, die in URLs escaped werden müssen.
So benutzt du es
- Wähl, wie viele IDs du brauchst, von 1 bis 1000.
- Aktiviere Monoton, wenn die IDs ihre Reihenfolge behalten müssen, auch wenn mehrere in derselben Millisekunde erzeugt werden. Der Zufallsteil wird dann für jede neue ID um eins erhöht.
- Aktiviere Kleinbuchstaben, wenn dein System IDs kleingeschrieben speichert. ULIDs unterscheiden nicht zwischen Groß- und Kleinschreibung, die kanonische Form ist großgeschrieben.
- Kopier die Liste oder lade sie als Textdatei herunter. Klick erneut auf Generieren für einen neuen Stapel.
Beispiel
01ARZ3NDEKTSV4RRFFQ69G5FAV
Hier ist 01ARZ3NDEK der Zeitstempel 1469922850259 (2016-07-30 23:54:10.259 UTC), und TSV4RRFFQ69G5FAV ist der Zufallsteil. Zwei ULIDs, die eine Sekunde auseinander erzeugt wurden, haben dieselben ersten Zeichen – deshalb bringt eine einfache String-Sortierung sie in zeitliche Reihenfolge.
ULID im Vergleich zu UUID
Eine zufällige UUID v4 verteilt neue Zeilen über einen B-Baum-Index, was Inserts bei großen Tabellen verlangsamt. ULIDs steigen größtenteils an, sodass neue Zeilen am Ende des Index landen – wie bei einem Auto-Increment-Integer –, und sind trotzdem ohne Koordination über mehrere Rechner hinweg eindeutig. Der Nachteil: Eine ULID verrät ungefähr, wann sie erstellt wurde. Wenn das wichtig ist, nimm eine UUID v4.
FAQ
› Was ist eine ULID?
Eine ULID (Universally Unique Lexicographically Sortable Identifier) ist eine 128-Bit-ID, geschrieben als 26 Zeichen in Crockford-Base32. Die ersten 10 Zeichen kodieren einen Millisekunden-Zeitstempel, die letzten 16 sind zufällig.
› ULID oder UUID: Was soll ich verwenden?
Nimm eine ULID, wenn du IDs möchtest, die nach Erstellungszeit sortiert sind, etwa als Datenbankschlüssel oder Log-IDs. Nimm UUID v4, wenn die ID nicht verraten darf, wann sie erstellt wurde. UUID v7 ist eine standardisierte Alternative, die ebenfalls zeitlich geordnet ist.
› Was bewirkt der monotone Modus?
IDs, die in derselben Millisekunde erzeugt werden, bekommen normalerweise unabhängige Zufallsteile, sodass ihre Reihenfolge innerhalb dieser Millisekunde zufällig ist. Im monotonen Modus wird der Zufallsteil stattdessen um eins erhöht, sodass jede ID im Stapel strikt nach der vorherigen sortiert.
› Werden die IDs sicher erzeugt?
Ja. Der Zufallsteil stammt aus dem kryptografischen Zufallszahlengenerator des Browsers, und nichts wird an einen Server gesendet.