Curious TechieDev Toolbox
Tous les Guides/Identifiants8 min read

Qu’est-ce qu’un UUID ? Versions, Entropie et RFC 9562

Génération d’identifiants 128 bits : aléatoire v4 contre indexation temporelle optimisée v7.

Points Clés
  • Un UUID est une valeur unique de 128 bits spécifiée par la norme RFC 9562.
  • La version UUID v4 exploite 122 bits d’entropie aléatoire pour éliminer tout risque de collision.
  • La version UUID v7 intègre une composante temporelle idéale pour les index de bases de données.
  • Les microservices peuvent ainsi générer des clés primaires localement sans goulot d’étranglement.

Les architectures distribuées nécessitent des identifiants uniques pouvant être générés de façon autonome sans goulet d’étranglement centralisé. Ce standard est l’UUID (Universally Unique Identifier).

1. Structure de l’UUID 128 Bits

Spécifié par la RFC 9562, un UUID compte 16 octets (128 bits) traduits en 32 caractères hexadécimaux répartis en cinq blocs séparés par des tirets :

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
M = Numéro de version (ex. 4 ou 7) | N = Variante (généralement 8, 9, a ou b)

2. Mathématiques de Collision & Sécurité

Avec 122 bits de pur aléa dans l’UUID v4 (environ 5,3 × 10^36 identifiants possibles), il faudrait générer 1 milliard d’UUID par seconde pendant 85 ans pour atteindre 50% de probabilité d’une seule collision.

3. UUID v4 (Aléatoire) vs UUID v7 (Ordonné dans le Temps)

Tandis que l’UUID v4 est strictement aléatoire, le nouveau standard UUID v7 place un horodatage Unix en millisecondes sur 48 bits en tête, garantissant un tri chronologique naturel.

4. Indexation Base de Données & Fragmentation B-Tree

Insérer des UUID v4 aléatoires dans un index B-Tree provoque d’importantes divisions de pages. L’UUID v7 s’insère de manière séquentielle, offrant des performances d’écriture jusqu’à 10 fois supérieures sous PostgreSQL et MySQL.