Générateur de ULID – ULIDs triables en ligne

Générez des ULIDs avec propriétés de tri lexicographique comme alternative aux UUIDs.

Essayez ces exemples :

Qu'est-ce que ULID ?

ULID (Identifiant Unique Lexicographiquement Triable Universel) est un format d'identifiant de 128 bits conçu pour surmonter les limitations des UUIDs. Il se compose de :

  • Horodatage : 48 bits de temps Unix avec une précision en millisecondes
  • Aléatoire : 80 bits de données aléatoires cryptographiquement sécurisées
  • Encodage : Représentation en Base32 (26 caractères)

Exemple de format : 01ARZ3NDEKTSV4RRFFQ69G5FAV

Comment fonctionne ULID

  1. Génère 48 bits pour l'horodatage (temps Unix en millisecondes)
  2. Génère 80 bits de données aléatoires cryptographiquement sécurisées
  3. Combine l'horodatage (plus significatif) avec l'aléatoire (moins significatif)
  4. Encode la valeur complète de 128 bits en utilisant l'alphabet Base32 de Crockford
  5. Le résultat est une chaîne de 26 caractères (les 10 premiers caractères sont l'horodatage, les 16 derniers sont aléatoires)

Avantages et Considérations

AvantagesConsidérations
  • Triable lexicographiquement
  • Jeu de caractères sûr pour les URL
  • Pas d'encodage spécial nécessaire
  • Insensible à la casse
  • Pas de problèmes de confidentialité
  • Plus récent, moins largement utilisé
  • Support limité des bibliothèques
  • Pas de compatibilité avec UUID
  • Ne peut pas remonter avant 1970

Structure ULID

ComposantBitsCaractèresDescription
Horodatage48 bits10 caractèresHorodatage Unix (ms) encodé en Base32
Aléatoire80 bits16 caractèresOctets aléatoires encodés en Base32

Comparaison ULID vs. UUID

FonctionnalitéULIDUUID v1UUID v4UUID v7
Taille128 bits128 bits128 bits128 bits
Longueur de chaîne26 caractères36 caractères36 caractères36 caractères
Basé sur le temps
Tri naturel
Sûr pour les URL
Exposition de l'adresse MAC
Composant aléatoire
Standard canonique⚠️ Brouillon

Cas d'utilisation courants

  • Clés primaires de base de données : Index optimisés pour les performances
  • Systèmes distribués : Génération sans coordination
  • APIs : Identifiants propres et sûrs pour les URL
  • Données chronologiques : Tri chronologique natif
  • Systèmes de journalisation : Identifiants d'événements triables
  • Applications modernes : Où les limitations des UUID posent problème

Pourquoi choisir ULID ?

  • Triabilité : Se trie lexicographiquement par heure de création
  • Sécurité URL : Pas besoin d'encodage URL (contrairement aux UUID avec tirets)
  • Compacité : 26 caractères contre 36 pour UUID
  • Insensibilité à la casse : Réduit les erreurs de saisie utilisateur
  • Monotonicité : Tri monotone optionnel dans la même milliseconde
  • Pas de caractères spéciaux : Format simple, uniquement alphanumérique

Foire Aux Questions

Comment ULID se compare-t-il à UUID v7 ?

Les deux utilisent des horodatages Unix pour la triabilité et ont des composants aléatoires. Les différences principales sont l'encodage (Base32 vs hexadécimal), le format (26 caractères vs 36) et la standardisation (UUID v7 est en projet de spécification RFC).

Puis-je extraire l'heure de création d'un ULID ?

Oui. Les 10 premiers caractères représentent un horodatage Unix avec une précision en millisecondes qui peut être décodé et converti en un format de date et heure standard.

Les ULIDs sont-ils compatibles avec les champs UUID des bases de données ?

Non. Les ULIDs utilisent un format différent et devraient être stockés comme des chaînes ou des données binaires plutôt que dans des types UUID natifs des bases de données.

Qu'est-ce que la monotonicité dans les ULIDs ?

Certaines implémentations d'ULID offrent une option monotone qui assure un ordre de tri séquentiel même au sein de la même milliseconde en incrémentant le composant aléatoire pour les ULIDs créés au même horodatage.

Quel jeu de caractères ULID utilise-t-il ?

ULID utilise l'encodage Base32 de Crockford (0-9, A-Z excluant I, L, O, U) qui est conçu pour minimiser la confusion et les erreurs de transcription lorsque les identifiants sont lus ou saisis manuellement.

Ressources

Alphabet Base32 de Crockford

Valeur d'encodageCaractèreNotes
0-90-9Chiffres décimaux
10-31A-ZExcluant I, L, O, U pour la lisibilité

Caractères : 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Cet encodage est insensible à la casse pour le décodage (mais les ULIDs sont généralement générés en majuscules).