ULID Generator
Understand ULID Generator
Génère des ULID — des identifiants de 26 caractères dont les premiers caractères encodent l'heure de création, si bien qu'ils se trient chronologiquement comme du texte brut.
How it works
Un ULID fait 128 bits : un horodatage de 48 bits en millisecondes suivi de 80 bits aléatoires, écrits en Base32 de Crockford sous la forme de 10 caractères d'horodatage et de 16 caractères aléatoires. Comme cet encodage préserve l'ordre, trier les chaînes revient à trier par heure de création, et c'est ce qui rend les ULID économiques comme clés de base de données : les nouvelles lignes s'ajoutent à la fin de l'index au lieu de s'éparpiller dedans. L'alphabet omet I, L, O et U pour que la transcription reste sans ambiguïté.
When to use it
- Des clés primaires pour une table où vous voulez un ordre temporel sans séquence centrale.
- Des identifiants d'événements, de journaux ou de messages que vous voudrez plus tard parcourir par plage temporelle.
- Des identifiants générés indépendamment sur plusieurs services et qui doivent malgré tout se trier ensemble.
- Partout où vous prendriez un UUID v4 mais où la localité d'index vous importe.
- Des identifiants qu'un humain peut avoir à lire à l'écran, où l'alphabet restreint aide.
Watch out for
- Le tri ne vaut que ce que vaut l'horloge. Le mode monotone conserve l'ordre d'un lot à l'intérieur d'une même milliseconde en incrémentant la composante aléatoire, mais deux ULID générés sur des machines différentes sont ordonnés par les horloges de ces machines — quelques millisecondes de dérive suffisent donc à les réordonner.
- L'heure de création est publique. Les 10 premiers caractères se décodent directement en un horodatage à la milliseconde, si bien que quiconque détient un ULID sait quand l'enregistrement a été créé.
- Le Base32 de Crockford est insensible à la casse sur le papier, mais un index de base de données qui compare des octets bruts ne l'est pas. Cet outil émet toujours des majuscules ; conservez une casse unique et cohérente, sinon le tri et l'égalité vous surprendront.
- La composante aléatoire fait 80 bits contre les 122 d'un UUID v4, ce qui ne compte qu'à l'intérieur d'une même milliseconde — mais cela signifie bel et bien qu'un ULID est un choix plus faible qu'un UUID v4 là où l'identifiant doit être indevinable.
Frequently Asked Questions
Pourquoi l'ULID vaut-il mieux que l'UUID v4 comme clé primaire ?
L'UUID v4 est aléatoire, ce qui provoque des insertions aléatoires dans les index B-tree et une fragmentation sévère à grande échelle. L'ULID est ordonné dans le temps — les nouveaux enregistrements s'insèrent toujours à la fin de l'index, comme des entiers auto-incrémentés, tout en restant uniques à l'échelle mondiale.
Qu'est-ce que le mode monotone d'ULID ?
Quand plusieurs ULID tombent dans la même milliseconde, le mode monotone incrémente de un la composante aléatoire précédente au lieu de tirer de nouveaux bits aléatoires. Cela garantit un ordre lexicographique strict à l'intérieur d'une milliseconde, ce que des ULID purement aléatoires ne peuvent pas offrir. Ce générateur utilise le mode monotone par défaut lorsque vous demandez un lot.
L'ULID est-il insensible à la casse ?
Oui — l'ULID utilise le Base32 de Crockford (0-9, A-Z sans I, L, O ni U), insensible à la casse par conception. 01AN4Z07BY est identique à 01an4z07by. Cet alphabet évite en outre les caractères visuellement ambigus.
How to Use ULID Generator
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.