Générer des UUID (v1, v4, v5, v7)

génère vos UUID (Universally Unique Identifier) en v1, v4, v5 (déterministe) ou v7 (time-ordered), conformément à la RFC 4122

Pourquoi utiliser des UUID ?

Les UUID (Universally Unique Identifier) sont des identifiants uniques utilisés pour garantir l'unicité à travers différents systèmes et bases de données sans nécessiter une coordination centrale. Ils sont couramment utilisés dans les systèmes distribués et les applications web pour générer des identifiants uniques pour les ressources.

Versions d'UUID prises en charge

Cet outil prend en charge les versions d'UUID suivantes :

  • Version 1 : basée sur l'horodatage et l'adresse MAC.
  • Version 4 : générée de manière aléatoire (la plus utilisée).
  • Version 5 : basée sur une empreinte SHA-1 d'un namespace et d'un nom (déterministe : un même couple namespace + nom produira toujours le même UUID).
  • Version 7 : ordonnancée temporellement, recommandée pour les clés primaires de bases de données modernes (tri lexicographique = tri chronologique).

UUID v5 : namespace et nom

Pour générer un UUID v5, vous devez choisir un namespace standard et fournir un nom :

  • DNS : à utiliser quand le nom est un nom de domaine (par exemple cdrn.fr).
  • URL : à utiliser quand le nom est une URL (par exemple https://cdrn.fr/).
  • OID : à utiliser quand le nom est un identifiant d'objet ISO.
  • X500 : à utiliser quand le nom est un nom distingué X.500.

La génération étant déterministe, l'UUID v5 est particulièrement adapté pour produire des identifiants reproductibles à partir d'une donnée stable.

Comment générer des UUID

Sur la page d'accueil, vous pouvez générer des UUID en sélectionnant la version souhaitée dans un menu déroulant et en cliquant sur le bouton de génération. Pour la version 5, renseignez en plus le namespace et le nom.

Dès qu'un UUID est généré, il apparaîtra dans une ligne de résultat verte indiquant qu'il a été généré avec succès. Si une erreur se produit, une ligne rouge affichera le message d'erreur correspondant.

Exemples de code pour utiliser les UUID générés

Vous pouvez utiliser les UUID générés dans vos applications en les intégrant directement dans votre code. Voici un exemple en PHP :


<?php
use Ramsey\Uuid\Uuid;

// Générer un UUID v4 (aléatoire)
$uuidV4 = Uuid::uuid4();

// Générer un UUID v5 (déterministe à partir d'un namespace et d'un nom)
$uuidV5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'cdrn.fr');

// Générer un UUID v7 (ordonnancé temporellement)
$uuidV7 = Uuid::uuid7();

echo "UUID v4 : " . $uuidV4->toString() . PHP_EOL;
echo "UUID v5 : " . $uuidV5->toString() . PHP_EOL;
echo "UUID v7 : " . $uuidV7->toString() . PHP_EOL;
?>

    

Valider et analyser les UUID

Vous pouvez également valider et analyser les UUID existants pour en déterminer la version et la validité. Voici un exemple de code en PHP :


<?php
use Ramsey\Uuid\Uuid;

// Valider un UUID
$uuidString = '123e4567-e89b-12d3-a456-426614174000';
if (Uuid::isValid($uuidString)) {
    $uuid = Uuid::fromString($uuidString);
    echo "UUID valide de version : " . $uuid->getFields()->getVersion();
} else {
    echo "UUID invalide";
}
?>

    

Questions fréquentes

Quelle différence entre UUID v1, v4, v5 et v7 ?

v1 combine un horodatage et l'adresse MAC de la machine, ce qui peut révéler des informations sensibles. v4 est purement aléatoire (122 bits d'aléa), c'est la version la plus utilisée. v5 est déterministe : un même couple namespace + nom produit toujours le même UUID grâce à un hash SHA-1. v7 intègre un timestamp en millisecondes en début d'identifiant, ce qui le rend trié chronologiquement et idéal pour les clés primaires.

Quelle est la probabilité de collision d'un UUID v4 ?

Un UUID v4 dispose de 122 bits aléatoires, soit environ 5,3 × 10^36 valeurs possibles. Pour atteindre 50% de probabilité de collision (paradoxe des anniversaires), il faudrait générer environ 2,7 × 10^18 UUID. En pratique, sur une application standard, la probabilité de collision est négligeable. C'est ce qui permet de générer des identifiants côté client sans coordination avec un serveur central.

Pourquoi privilégier UUID v7 pour une clé primaire de base de données ?

Un UUID v4 inséré dans un index B-tree provoque une fragmentation forte : chaque insertion tombe à une position aléatoire, ce qui dégrade les performances et l'usage du cache. UUID v7 commence par un timestamp en millisecondes, donc les nouvelles lignes s'insèrent toujours en fin d'index. Les performances d'insertion se rapprochent alors de celles d'un BIGSERIAL, tout en gardant les avantages d'un identifiant universel.

À quoi servent les namespaces DNS, URL, OID et X500 d'UUID v5 ?

Ces namespaces sont des UUID prédéfinis dans la RFC 4122 qui agissent comme préfixe contextuel pour la génération déterministe. DNS s'utilise avec un nom de domaine, URL avec une URL complète, OID avec un identifiant ISO d'objet, X500 avec un nom distingué LDAP. Vous pouvez aussi définir votre propre namespace privé : un UUID v4 généré une fois pour votre application, réutilisé comme racine déterministe pour tous vos identifiants v5.

UUID ou auto-incrément pour les identifiants en base ?

L'auto-incrément reste très efficace pour des bases monolithiques et révèle volontiers la séquence d'écriture, ce qui peut être indésirable côté API publique. Les UUID conviennent mieux aux architectures distribuées, à la génération côté client, aux fusions de bases, et à l'exposition publique d'identifiants opaques. Le compromis idéal en 2026 : UUID v7 en clé primaire, qui combine universalité, opacité raisonnable et bonnes performances d'index.

Les UUID générés transitent-ils par un serveur tiers ?

La génération s'effectue dans l'environnement de cdrn.fr, sans appel à un service externe. Pour les versions purement aléatoires (v4) ou temporelles (v7), aucune information sensible n'est nécessaire en entrée. Pour la v5, le namespace et le nom que vous fournissez servent uniquement au calcul SHA-1 local. Aucun identifiant généré n'est journalisé, vous pouvez utiliser l'outil pour produire des UUID destinés à des contextes confidentiels.

Exemple de requête

curl -X POST https://cdrn.fr/api/v1/tools/uuid-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"version":"uuid_version_1","quantity":3,"namespace":"namespace_dns","name":"..."}'

Schéma d'entrée

Champ Type Requis Défaut
version choice (uuid_version_1, uuid_version_4, uuid_version_5, uuid_version_7)
quantity integer 3
namespace choice (namespace_dns, namespace_url, namespace_oid, namespace_x500)
name string

Points d'accès

  • GET https://cdrn.fr/api/v1/tools - liste tous les outils disponibles
  • GET https://cdrn.fr/api/v1/tools/uuid-generator - récupère le schéma de cet outil
  • POST https://cdrn.fr/api/v1/tools/uuid-generator/execute - exécute cet outil avec un payload JSON