Un UUID (identifiant unique universel, aussi appelé GUID) est une étiquette de 128 bits écrite en 32 chiffres hexadécimaux selon le motif 8-4-4-4-12. N'importe qui peut en générer un sans registre central. Le format est défini par la RFC 9562. Créez-les avec le générateur d'UUID, lisez-les avec le décodeur d'UUID et choisissez entre les types courants dans UUID v4 vs UUID v7 vs ULID. L'entrée du glossaire est UUID.
Lire un UUID
- Exemple :
f47ac10b-58cc-4372-a567-0e02b2c3d479. - La version est le premier chiffre hexadécimal du troisième groupe (ici
4: aléatoire). - La variante se lit dans le premier chiffre du quatrième groupe :
8,9,aoubdésigne la disposition standard (icia). - Deux valeurs spéciales existent : l'UUID nul
00000000-0000-0000-0000-000000000000et l'UUID maximalffffffff-ffff-ffff-ffff-ffffffffffff.
Les versions
| Version | Contenu | Remarques |
|---|---|---|
| 1 | Horodatage (ticks de 100 ns depuis 1582-10-15) + ID de nœud | Hérité ; l'ID de nœud peut divulguer une adresse MAC |
| 3 | Hachage MD5 d'un espace de noms et d'un nom | Même entrée, même UUID ; à éviter pour du neuf |
| 4 | 122 bits aléatoires | Le choix par défaut ; ne révèle rien |
| 5 | Hachage SHA-1 d'un espace de noms et d'un nom | Même entrée, même UUID ; ID stables pour des noms |
| 6 | v1 avec l'horodatage réordonné pour se trier | Compatibilité avec v1 |
| 7 | Heure Unix de 48 bits en ms + aléatoire | Se trie par date de création ; adaptée aux clés de bases de données |
| 8 | Personnalisée : disposition définie par le fournisseur | Usage expérimental ou privé |
Quelle probabilité de collision ?
Un UUID version 4 porte 122 bits aléatoires, soit environ 5,3 × 10^36 valeurs. D'après le paradoxe des anniversaires, il faudrait environ 2,7 × 10^18 UUID pour avoir 50 % de chances d'un seul doublon : à un milliard par seconde, cela prend environ 86 ans.
Conseils pratiques
- Les UUID fondés sur un nom sont reproductibles : l'UUID version 5 de
example.comdans l'espace de noms DNS est toujourscfbff0d1-9375-5685-968c-48ce8b15ae17. - Un UUID est un identifiant, pas un secret. Ne l'utilisez pas comme jeton de réinitialisation de mot de passe ou clé d'API sauf s'il provient d'une source aléatoire sûre, et préférez des jetons plus longs pour les secrets.
- Stockez les UUID sur 16 octets (une colonne
uuidnative), et non en texte de 36 caractères, quand c'est possible. - Utilisez la v7, ordonnée dans le temps, pour les nouvelles clés primaires afin de ne pas disperser les insertions dans l'index.