Ce qu'est réellement un UUID
Un UUID, abréviation d'Universally Unique Identifier (identifiant universellement unique), est une valeur de 128 bits utilisée pour étiqueter quelque chose sans demander la permission à personne au préalable. Vous le verrez aussi appelé GUID, ou Globally Unique Identifier, qui n'est que le nom donné par Microsoft à la même idée dans l'univers Windows et .NET. Les deux termes décrivent le même nombre de 128 bits dans presque tous les cas qui comptent, donc quand un collègue dit GUID et que vous dites UUID, vous parlez presque toujours exactement de la même chose.
Ces 128 bits s'écrivent normalement sous forme de 32 chiffres hexadécimaux répartis en cinq groupes séparés par des traits d'union, selon un motif 8-4-4-4-12. Une valeur typique ressemble à 123e4567-e89b-12d3-a456-426614174000. Les traits d'union n'ont aucune signification propre ; ils existent uniquement pour qu'un humain puisse lire la valeur sans s'y perdre. Chaque caractère est un chiffre hexadécimal de 0 à f, ce qui explique pourquoi un UUID paraît plus dense qu'un nombre ordinaire, alors qu'au fond ce n'est qu'un très grand entier.

Les versions, et pourquoi la v4 l'emporte
La norme définit plusieurs versions, qui diffèrent par la façon dont les bits sont remplis. La version 1 est basée sur le temps : elle entremêle l'horodatage courant et l'adresse MAC réseau de la machine. Cela rend les valeurs v1 triables par date de création, mais cela divulgue aussi des informations sur l'endroit et le moment approximatif où elles ont été produites, ce qui n'est pas toujours bienvenu. Les versions 3 et 5 sont basées sur un nom, en hachant un espace de noms plus un nom de sorte que la même entrée produise toujours le même identifiant.
La version 4 emprunte une voie totalement différente. Elle est presque purement aléatoire. Sur les 128 bits, six sont réservés pour marquer la version et la variante, ce qui laisse 122 bits à remplir de données aléatoires. Aucun horodatage, aucune adresse MAC, aucun espace de noms, juste du bruit. C'est précisément pour cela que la plupart des générateurs, dont celui-ci, produisent du v4 par défaut. Il ne révèle rien sur l'appareil ni sur le moment de création, et il ne nécessite aucune coordination entre les parties qui le génèrent. L'outil de cette page s'exécute entièrement dans votre navigateur, donc les valeurs aléatoires ne quittent jamais votre machine.
À quel point une collision est réellement improbable
L'inquiétude raisonnable est que deux UUID aléatoires puissent un jour être identiques. Avec 122 bits aléatoires, l'espace des valeurs v4 possibles est 2 à la puissance 122, soit environ 5,3 suivi de 36 zéros. Pour le ramener à l'échelle humaine, il faudrait générer des milliards d'UUID chaque seconde pendant de nombreuses décennies avant que les chances d'un seul doublon n'atteignent quoi que ce soit de mesurable. La norme elle-même décrit le risque de collision comme suffisamment proche de zéro pour être négligeable. En pratique, les équipes traitent le v4 comme unique et passent à autre chose, et elles ont raison.

Là où les développeurs y recourent
Comme l'unicité ne nécessite aucune autorité centrale, les UUID brillent là où la coordination est coûteuse ou impossible. Ils conviennent naturellement aux clés primaires de base de données, surtout quand plusieurs services insèrent chacun des lignes et que vous ne pouvez pas faire une pause pour demander le numéro suivant à un compteur partagé. Dans les systèmes distribués, deux nœuds à l'opposé de la planète peuvent tous deux frapper des identifiants au même instant sans jamais entrer en collision. Ils alimentent aussi les clés d'idempotence d'API, où un client attache un UUID à une requête afin que le serveur puisse ignorer en toute sécurité un doublon si le réseau réessaie. Les jetons de session, les noms de fichiers, les identifiants d'événements et les clés de messages s'appuient tous sur la même propriété.
UUID contre identifiants auto-incrémentés
L'alternative classique est l'entier auto-incrémenté : 1, 2, 3, et ainsi de suite. Les identifiants séquentiels sont compacts, se trient naturellement et sont faciles à lire, mais ils ont de réels inconvénients. Ils exposent combien d'enregistrements existent et permettent à des tiers de deviner les valeurs voisines, et ils forcent chaque insertion à passer par un compteur unique, qui devient un goulot d'étranglement quand vous fragmentez une base de données ou fusionnez des données de nombreuses sources. Les UUID résolvent ces problèmes en laissant n'importe quelle partie générer une clé de manière indépendante et en ne révélant rien sur le volume ni sur l'ordre. La contrepartie, c'est la taille et un peu moins de localité dans les index. Pour les systèmes qui montent en charge ou qui doivent cacher leurs rouages internes, ce compromis vaut généralement la peine. Vous pouvez explorer cet utilitaire et d'autres similaires via notre collection de générateurs, ou parcourir l'ensemble plus large des outils pour développeurs pour des briques de base connexes.
Foire aux questions
Un GUID est-il identique à un UUID ?
Pour un usage courant, oui. GUID est le nom de Microsoft pour le même identifiant de 128 bits. La seule vraie différence est l'ordre des octets dans la forme binaire brute sur certains systèmes Windows ; sous forme de chaîne, ils sont identiques et interchangeables.
Quelle version d'UUID cet outil génère-t-il ?
Il génère la version 4, la variante aléatoire. Sur ses 128 bits, 122 sont remplis de données aléatoires, ce qui rend chaque valeur extrêmement peu susceptible de se répéter et signifie qu'elle ne porte aucune information d'horodatage ni d'appareil.
Deux UUID peuvent-ils être identiques un jour ?
En théorie, la probabilité n'est pas exactement nulle, mais avec environ 5,3 fois 10 puissance 36 valeurs v4 possibles, elle est si petite qu'on la traite comme négligeable. Il faudrait en générer des quantités astronomiques avant qu'une collision ne devienne probable.
Pourquoi utiliser un UUID plutôt qu'un nombre auto-incrémenté ?
Les UUID peuvent être créés indépendamment par n'importe quel service sans compteur partagé, ils ne révèlent ni le nombre d'enregistrements ni l'ordre, et ils rendent indolore la fusion de données de nombreuses sources. Les identifiants auto-incrémentés sont plus petits mais deviennent un goulot d'étranglement et divulguent des informations à grande échelle.
Les UUID sont-ils générés sur un serveur ?
Non. Cet outil s'exécute entièrement dans votre navigateur, donc les valeurs aléatoires sont produites localement et ne sont jamais envoyées nulle part. C'est ce qui rend son usage sûr pour des clés et des jetons que vous comptez garder privés.
Que signifie le motif des traits d'union ?
Le regroupement 8-4-4-4-12 n'est qu'une convention de lisibilité. Les traits d'union ne portent aucune donnée ; ils découpent les 32 chiffres hexadécimaux en blocs pour que l'on puisse parcourir et comparer les valeurs plus facilement.
