Qu'est-ce que les UUID ?
UUID (Identifiant Universel Unique) est un format d'identifiant standardisé conçu pour être unique globalement dans l'espace et le temps. Les UUID sont des valeurs 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 UUID sont définis par la norme RFC 9562 (qui remplace la précédente RFC 4122) et sont utilisés sur toutes les plateformes informatiques pour identifier des informations sans nécessiter d'enregistrement ou de coordination centralisée.
Format UUID
Tous les UUID partagent un format commun composé de 36 caractères (32 chiffres hexadécimaux plus 4 tirets) arrangé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 UUID (1-7)N
indique la variante UUID (typiquement 8, 9, A ou B pour les UUID modernes)
Comparaison des versions UUID
Version | Name | Méthode de génération | Time-ordered | Cas d'utilisation |
---|---|---|---|---|
UUID v1 | Timestamp | Horodatage actuel + ID de nœud (MAC) | Oui (partiellement) | Journalisation, systèmes distribués |
UUID v3 | Basé sur le nom (MD5) | Hash MD5 de l'espace de noms + nom | No | IDs cohérents pour la même entrée |
UUID v4 | Random | Nombres aléatoires ou pseudo-aléatoires | No | Usage général, le plus courant |
UUID v5 | Basé sur le nom (SHA-1) | Hash SHA-1 de l'espace de noms + nom | No | IDs cohérents avec un hash plus fort |
UUID v6 | Horodatage réordonné | Horodatage (ordonné pour tri) | Yes | Clés de base de données, enregistrements triables par temps |
UUID v7 | Horodatage Unix Epoch | Horodatage Unix + données aléatoires | Yes | Identifiants modernes triables |
UUID nul | UUID zéro | Tous les zéros | N/A | Valeur spéciale, marqueur non initialisé |
Avantages des UUID
- Pas de coordination requise: Générer des IDs sans coordination centrale
- Unicité globale: Probabilité de collision extrêmement faible
- Longueur fixe: Représentation en chaîne de 36 caractères cohérente
- Cross-Platform: Pris en charge dans pratiquement tous les langages de programmation
- Versatile: Différentes versions pour différents cas d'utilisation
Alternatives non standard aux UUID
Type d'ID | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Implémentation Microsoft de UUID | Fonctionnellement équivalent à UUID | Quelques différences d'implémentation dans les anciens systèmes |
ULID | Identifiant universellement unique triable lexicographiquement | Triable lexicographiquement, horodatage en premier, insensible à la casse | Plus récent, adoption moins répandue |
ID Snowflake | 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 | Court, adapté à la génération côté client | Pas une norme officielle |
Nano ID | Générateur d'ID unique petit, sécurisé et compatible URL | Plus petit que UUID, alphabet configurable | Non standardisé |
UUID court | Encodage plus court des UUID standards | Représentation plus compacte | Nécessite conversion vers/depuis UUID standard |
UUID nul | UUID avec tous les bits à zéro | Signification sémantique spéciale | Pas unique (utilisé comme valeur spéciale) |
UUID Minecraft | UUID avec ou sans tirets | Compatible avec les UUID standards | Différences de format uniquement |
Applications pratiques
- Clés primaires de base de données: Particulièrement dans les bases distribuées ou répliquées
- Systèmes distribués: Identifier des entités à travers plusieurs systèmes
- Applications web: Identifiants de session, suivi des utilisateurs anonymes
- Gestion de contenu: Identifiants de documents et médias
- APIs: Identifiants de requêtes et transactions pour traçage et débogage
- Internet des objets: Identification des appareils sans enregistrement central
- Synchronisation des données: Identification des enregistrements à travers plusieurs magasins de données
- Licences logicielles: Clés de produit ou de licence uniques