Qu'est-ce qu'un UUID ?
UUID (Identifiant Universel Unique) est un format d'identifiant standardisé conçu pour être unique au niveau mondial dans l'espace et le temps. Les UUIDs sont des valeurs de 128 bits généralement représentées par 32 chiffres hexadécimaux, affichés en cinq groupes séparés par des tirets : 123e4567-e89b-12d3-a456-426614174000
.
Les UUIDs sont définis par la norme RFC 9562 (qui remplace l'ancienne RFC 4122) et sont utilisés dans les plateformes informatiques pour identifier des informations sans nécessiter d'enregistrement ou de coordination centralisée.
Format d'un UUID
Tous les UUIDs partagent un format commun composé de 36 caractères (32 chiffres hexadécimaux plus 4 tirets) organisés selon le modèle :
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Où :
x
est un chiffre hexadécimal quelconque (0-9, a-f)M
indique la version de l'UUID (1-7)N
indique la variante de l'UUID (typiquement 8, 9, A ou B pour les UUIDs modernes)
Comparaison des versions d'UUID
Version | Nom | Méthode de Génération | Trié par Temps | Cas d'Utilisation |
---|---|---|---|---|
UUID v1 | Horodatage | Horodatage actuel + ID de nœud (MAC) | Oui (partiellement) | Enregistrements, systèmes distribués |
UUID v3 | Basé sur le Nom (MD5) | Hash MD5 de l'espace de noms + nom | Non | IDs cohérents pour la même entrée |
UUID v4 | Aléatoire | Nombres aléatoires ou pseudo-aléatoires | Non | Usage général, le plus courant |
UUID v5 | Basé sur le Nom (SHA-1) | Hash SHA-1 de l'espace de noms + nom | Non | IDs cohérents avec un hash plus fort |
UUID v6 | Horodatage Réordonné | Horodatage (ordonné pour le tri) | Oui | Clés de base de données, enregistrements triés par temps |
UUID v7 | Horodatage Unix | Horodatage Unix + données aléatoires | Oui | Identifiants modernes triables |
Nil UUID | UUID Nul | Tout à zéro | N/A | Valeur spéciale, marqueur non initialisé |
Avantages des UUIDs
- Pas de Coordination Requise : Générer des IDs sans coordination centrale
- Unicité Globale : Probabilité extrêmement faible de collision
- Longueur Fixe : Représentation cohérente de 36 caractères
- Multi-plateforme : Compatible avec pratiquement tous les langages de programmation
- Polyvalent : Différentes versions pour différents cas d'utilisation
Alternatives non standard aux UUIDs
Type d'ID | Description | Avantages | Inconvénients |
---|---|---|---|
GUID | Implémentation UUID de Microsoft | Équivalent fonctionnel à UUID | Quelques différences d'implémentation sur les anciens systèmes |
ULID | Identifiant Universel Unique Ordonnable Lexicographiquement | Ordonnable lexicographiquement, horodatage en premier, insensible à la casse | Plus récent, adoption moins généralisée |
Snowflake ID | Système d'ID distribué de Twitter | Triable par temps, compact (64 bits) | Nécessite une coordination centrale |
CUID/CUID2 | IDs résistants aux collisions | Courts, adaptés à la génération côté client | Pas une norme officielle |
Nano ID | Générateur de chaînes uniques petites, sécurisées et adaptées aux URL | Plus petit qu'un UUID, alphabet configurable | Non standardisé |
Short UUID | Codage plus court des UUIDs standards | Représentation plus compacte | Nécessite une conversion vers/depuis UUID standard |
Nil UUID | UUID avec tous les bits à zéro | Signification sémantique spéciale | Non unique (utilisé comme valeur spéciale) |
Minecraft UUID | UUIDs avec ou sans tirets | Compatible avec les UUIDs standards | Différences de format uniquement |
Applications Pratiques
- Clés Primaires de Base de Données : Surtout dans les bases de données distribuées ou répliquées
- Systèmes Distribués : Identifier des entités dans plusieurs systèmes
- Applications Web : Identifiants de session, suivi des utilisateurs anonymes
- Gestion de Contenus : Identifiants de documents et de médias
- APIs : Identifiants de requêtes et de transactions pour le suivi et le débogage
- Internet des Objets : Identification des appareils sans enregistrement central
- Synchronisation de Données : Identifier des enregistrements dans plusieurs magasins de données
- Licences de Logiciels : Clés uniques de produit ou de licence