DevToolPal
NL

ULID-generator

Genereer ULID’s: unieke ID’s van 26 tekens die op tijd sorteerbaar zijn, met veilige willekeur, tot 1000 tegelijk.

Draait lokaal, wordt nooit geüpload

Opties

ULID’s

0 tekens · 0 B

Wat het doet

Deze tool genereert ULID’s in je browser. Een ULID is een identifier van 128 bits, net als een UUID, maar hij wordt geschreven als 26 tekens en sorteert op het moment waarop hij is aangemaakt. Daardoor passen ULID’s goed als primaire sleutels in een database, ID’s voor events en logs, bestandsnamen en alles wat je in volgorde van aanmaak wilt tonen zonder aparte timestampkolom.

Een ULID bestaat uit twee delen:

  • Timestamp (eerste 10 tekens): milliseconden sinds de Unix-epoch, 48 bits. Dit loopt tot het jaar 10889.
  • Willekeur (laatste 16 tekens): 80 bits uit de cryptografische randomgenerator van de browser.

ULID’s gebruiken het Base32-alfabet van Crockford: 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Daarin ontbreken I, L, O en U, zodat ID’s makkelijk voor te lezen zijn en moeilijk verkeerd te typen, en er zitten geen tekens in die in URL’s geëscapet moeten worden.

Zo gebruik je het

  1. Kies hoeveel ID’s je nodig hebt, van 1 tot 1000.
  2. Zet Monotoon aan als de ID’s hun volgorde moeten behouden, ook als er meerdere in dezelfde milliseconde worden aangemaakt. Het willekeurige deel wordt dan voor elk nieuw ID met één verhoogd.
  3. Zet Kleine letters aan als je systeem ID’s in kleine letters opslaat. ULID’s zijn hoofdletterongevoelig en de canonieke vorm is in hoofdletters.
  4. Kopieer de lijst of download hem als tekstbestand. Genereer opnieuw voor een nieuwe reeks.

Voorbeeld

01ARZ3NDEKTSV4RRFFQ69G5FAV

Hier is 01ARZ3NDEK de timestamp 1469922850259 (2016-07-30 23:54:10.259 UTC) en TSV4RRFFQ69G5FAV het willekeurige deel. Twee ULID’s die een seconde na elkaar zijn aangemaakt, delen hun eerste paar tekens; daarom zet een gewone stringsortering ze op tijdsvolgorde.

ULID vergeleken met UUID

Een willekeurige UUID v4 verspreidt nieuwe rijen over een B-tree-index, wat inserts op grote tabellen vertraagt. ULID’s lopen grotendeels op, dus nieuwe rijen komen aan het eind van de index terecht, net als bij een auto-increment-integer, terwijl ze toch uniek zijn over machines heen zonder coördinatie. Het nadeel is dat een ULID ongeveer verraadt wanneer hij is aangemaakt. Als dat ertoe doet, gebruik dan een UUID v4.

Veelgestelde vragen

› Wat is een ULID?

Een ULID (Universally Unique Lexicographically Sortable Identifier) is een ID van 128 bits, geschreven als 26 tekens in Crockford Base32. De eerste 10 tekens coderen een timestamp in milliseconden en de laatste 16 zijn willekeurig.

› ULID of UUID: welke moet ik gebruiken?

Gebruik een ULID als je ID's wilt die op aanmaaktijd sorteren, bijvoorbeeld als databasesleutels of log-ID's. Gebruik UUID v4 als het ID niet mag verraden wanneer het is aangemaakt. UUID v7 is een standaardalternatief dat ook op tijd geordend is.

› Wat doet de monotone modus?

ID's die in dezelfde milliseconde worden aangemaakt, krijgen normaal onafhankelijke willekeurige delen, dus hun volgorde binnen die milliseconde is willekeurig. In de monotone modus wordt het willekeurige deel in plaats daarvan met één verhoogd, zodat elk ID in de reeks strikt na het vorige sorteert.

› Worden de ID's veilig gegenereerd?

Ja. Het willekeurige deel komt uit de cryptografische randomgenerator van de browser, en er wordt niets naar een server gestuurd.