Developer Tools

Les UUID expliqués : quand les utiliser et comment ils fonctionnent

Découvrez ce que sont les UUID, les différences entre les versions, les risques de collision et comment les générer en toute sécurité pour les bases de données et les API.

7 min de lecture

Server room abstract

Un UUID (Universally Unique Identifier) est un label de 128 bits, généralement écrit sous la forme xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Les développeurs utilisent les UUID comme clés primaires, identifiants de corrélation et jetons opaques, car ils peuvent être créés sans coordinateur central tout en présentant une probabilité de collision extrêmement faible.

Pourquoi ne pas simplement utiliser des entiers ?

Les entiers auto-incrémentés sont simples et compacts, mais ils révèlent des informations : des concurrents peuvent deviner le nombre de vos commandes ou parcourir vos ressources en itérant sur les ID. Les UUID sont impossibles à deviner en pratique et peuvent être exposés en toute sécurité dans les URL et le code côté client.

Les UUID ne constituent pas à eux seuls une fonctionnalité de sécurité. Si vous avez besoin d'autorisation, appliquez-la quand même côté serveur.

Les versions courantes d'UUID

Version Mode de génération Utilisation typique
v1 Adresse MAC + horodatage Héritage ; à éviter si la confidentialité vous importe
v4 Bits aléatoires Choix par défaut pour les nouveaux systèmes
v5 Hachage SHA-1 d'un espace de noms + nom ID déterministes à partir d'entrées stables

La plupart des applications utilisent aujourd'hui UUID v4 pour les clés primaires. Certaines équipes préfèrent les ULIDs ou les Snowflake IDs pour des chaînes triables par date ; les UUID restent les plus largement pris en charge.

Probabilité de collision

Avec la v4, le risque de collision est astronomiquement faible jusqu'à ce que vous génériez des milliards d'ID par seconde. Pour les applications web classiques, il est raisonnable de traiter les collisions comme impossibles — à condition que votre source aléatoire soit cryptographiquement solide (utilisez le CSPRNG du système d'exploitation ou du langage, et non Math.random() pour les ID sensibles sur le plan de la sécurité).

// Browser: prefer crypto.randomUUID() when available
const id = crypto.randomUUID();
console.log(id); // e.g. 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

Conseils pratiques

  • Index de base de données : Les UUID aléatoires fragmentent davantage les index B-tree que les ID séquentiels. La fonction gen_random_uuid() de PostgreSQL, UUID v7 (ordonné dans le temps) ou les techniques de type COMB peuvent aider si les performances d'insertion comptent à très grande échelle.
  • Logs et traçage : Utilisez un UUID par requête comme identifiant de corrélation afin de pouvoir filtrer les logs entre les services.
  • Tests : Générez de nouveaux UUID dans les jeux de données de test pour que les tests ne dépendent pas de valeurs fixes, sauf si vous avez besoin de reproductibilité (dans ce cas, la v5 ou un générateur avec graine peut convenir).

Essayez-le dans le navigateur

Utilisez notre Générateur d'UUID gratuit pour créer des identifiants de type v4 instantanément — sans inscription, et tout s'exécute localement dans votre onglet.

Pour des usages complémentaires, vous pourriez également apprécier le Générateur de Hash pour les sommes de contrôle et le Décodeur JWT pour déboguer les jetons qui accompagnent souvent les UUID dans les API.