Pourquoi j'ai abandonné les ID auto-incrémentés
Après avoir vécu plusieurs fusions de bases de données catastrophiques — où des milliers d'ID entraient en conflit — j'ai compris que les identifiants séquentiels étaient une dette technique majeure. Un UUID (Universally Unique Identifier) est un identifiant de 128 bits, standardisé par la RFC 4122, qui garantit l'unicité sans coordination centrale. Son format canonique 8-4-4-4-12 (comme 550e8400-e29b-41d4-a716-446655440000) est devenu un standard que je retrouve partout : APIs REST, logs distribués, tokens de session, noms de fichiers cloud. Avec 2^122 combinaisons possibles pour la version 4, la probabilité de collision est si faible qu'elle est considérée comme mathématiquement nulle en pratique.
Les différentes versions d'UUID et leurs cas d'usage
🕐 UUID v1 — Basé sur le temps
Combine timestamp (100-nanosecondes depuis le 15 octobre 1582) et adresse MAC de la machine. Avantages : triable chronologiquement, traçabilité temporelle. Inconvénients : expose des informations sur l'heure et la machine de création, problématique pour la vie privée.
🎲 UUID v4 — Aléatoire pur
122 bits générés aléatoirement (6 bits réservés pour la version et la variante). C'est la version que j'utilise 90% du temps : aucune information extractible, parfait pour les tokens de sécurité, simple à implémenter avec un bon CSPRNG.
🔗 UUID v3/v5 — Basé sur un nom
Hash d'un namespace + nom (MD5 pour v3, SHA-1 pour v5). Déterministe : la même entrée produit toujours le même UUID. Idéal pour créer des identifiants stables à partir de données existantes (email, URL).
⚡ UUID v7 — Le meilleur des deux mondes
Nouvelle version (RFC 9562) : timestamp Unix en millisecondes + aléatoire. Triable comme v1, mais sans exposer d'informations sensibles. Idéal pour les clés primaires en base de données — c'est devenu mon choix par défaut.
Comment utiliser cet outil
- Choisissez la version — v4 pour la plupart des cas, v1 si vous avez besoin de tri chronologique
- Générez un UUID — Cliquez sur « Générer » pour obtenir un nouvel identifiant
- Copiez le résultat — Un clic copie l'UUID dans votre presse-papiers
- Génération en masse — Besoin de 100 UUID ? Utilisez la section « Génération en masse »
- Validez un UUID existant — Collez un UUID pour vérifier sa validité et identifier sa version
Mes cas d'utilisation quotidiens
- Clés primaires distribuées — Chaque service génère ses propres ID sans coordination, fusion de bases triviale
- Tokens de session et CSRF — v4 garantit l'imprévisibilité requise pour la sécurité
- Noms de fichiers cloud — Aucune collision possible même avec des millions de fichiers
- Correlation ID dans les logs — Trace une requête à travers tous les microservices
- Identifiants d'objets métier — Clients, commandes, factures — l'UUID évite le problème des séquences exposées
- Idempotency keys — v5 avec les données de la requête garantit l'unicité des opérations
Considérations de performance et stockage
Un UUID occupe 16 octets en binaire, 36 caractères en texte. Pour les bases de données à fort volume, je recommande le stockage en BINARY(16) plutôt qu'en VARCHAR(36) — économie de 55% d'espace et index plus performants. Attention : UUID v4 fragmente les index B-tree car les valeurs sont aléatoires. Solutions : UUID v7 (ordonné), ou ULID/Snowflake pour les cas extrêmes de performance.