Générateur UUID/GUID en Ligne

Générez des identifiants uniques universels (UUID/GUID) sécurisés et aléatoires en quelques secondes. Idéal pour le développement logiciel, les bases de données et les systèmes distribués.

Format par défaut : 8-4-4-4-12 caractères hexadécimaux
Exemple : 550e8400-e29b-41d4-a716-446655440000

Qu'est-ce qu'un UUID/GUID ?

UUID (Universally Unique Identifier) et GUID (Globally Unique Identifier) sont des termes interchangeables pour des identifiants uniques de 128 bits. Créés pour générer des IDs uniques sans nécessiter de coordination centrale, ils sont largement utilisés dans les bases de données, APIs REST et systèmes distribués.

Versions UUID

UUID v4 - Aléatoire (Recommandé)

Généré aléatoirement à l'aide d'une cryptographie forte. Probabilité de collision : ~1 sur 2¹²² (des billions de billions). Idéal pour la plupart des cas : clés primaires, tokens de session, identifiants de ressources.

Exemple : 550e8400-e29b-41d4-a716-446655440000

UUID v1 - Basé sur Timestamp

Inclut timestamp (60 bits) + adresse MAC de l'ordinateur (48 bits) + compteur. Avantage : triable chronologiquement. Inconvénient : révèle des informations système (adresse MAC, heure de création).

Exemple : 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Autres Versions (v3, v5, v6, v7)

v3/v5 : Générés par hachage (MD5/SHA-1) d'un namespace + nom. Déterministes (même entrée = même UUID). v6/v7 : Propositions récentes combinant timestamp triable avec aléa sécurisé.

Exemple :

Cas d'utilisation courants

🗄️ Clés Primaires de Base de Données

Remplacez auto-increment par des UUIDs pour faciliter la fusion de données entre environnements (dev, staging, prod) et le sharding horizontal. MongoDB, PostgreSQL et MySQL le supportent nativement.

🔗 URLs de Ressources REST

/api/users/550e8400-e29b-41d4-a716-446655440000
Les UUIDs dans les URLs empêchent les attaques par énumération et maintiennent les URLs imprévisibles.

🎫 Tokens de Session et Authentification

Tokens OAuth, session IDs, reset tokens. Les UUIDs sont cryptographiquement sécurisés et impossibles à deviner (contrairement aux séquences numériques).

📦 Identifiants d'Événements/Messages

Traçage d'événements dans les microservices, files de messages (RabbitMQ, Kafka), logs distribués. Correlation IDs entre services.

📁 Noms de Fichiers Uniques

Téléchargements d'images, sauvegardes, fichiers temporaires. Évite les conflits et permet les téléchargements simultanés sans verrouillage.

UUID vs Auto-increment : Avantages et Inconvénients

CaractéristiqueUUIDAuto-increment (INT)
Taille16 octets (128 bits)4 octets (32 bits) ou 8 octets (64 bits)
Génération distribuée✓ Oui, sans coordination✗ Nécessite un contrôle central
PrévisibilitéImprévisible (sécurisé)Prévisible (risque d'énumération)
Performance d'indexPlus lent (128 bits aléatoires)Plus rapide (séquentiel, cache-friendly)
Ordre chronologiqueNon (v4), Oui (v1, v6, v7)Oui (séquentiel)
Fusion de bases✓ Trivial (sans collision)✗ Complexe (conflits d'ID)
Idéal pourSystèmes distribués, APIs, sécuritéSystèmes monolithiques, performance critique

Comment utiliser UUID dans différents langages

JavaScript/Node.js

// Natif (Node.js 14.17+)
import { randomUUID } from 'crypto';
const uuid = randomUUID();

// Avec bibliothèque 'uuid'
import { v4 as uuidv4 } from 'uuid';
const uuid = uuidv4();

Python

import uuid

# UUID v4
uuid_v4 = uuid.uuid4()
print(uuid_v4)  # 550e8400-e29b-41d4-a716-446655440000

# UUID v1
uuid_v1 = uuid.uuid1()
print(uuid_v1)  # 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Java

import java.util.UUID;

// UUID aléatoire
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());

PostgreSQL

-- Activer l'extension
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

-- Générer UUID
SELECT uuid_generate_v4();

-- Créer table avec UUID
CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
  name VARCHAR(100)
);

FAQ - Questions Fréquentes

1. Les UUIDs sont-ils vraiment uniques ? Peut-il y avoir des collisions ?

Les UUIDs v4 ont 2¹²² combinaisons possibles. La probabilité de collision est astronomiquement faible (1 sur 5 milliards après avoir généré 1 milliard d'UUIDs). À des fins pratiques, considérez-les comme uniques. Les bases de données modernes détectent les collisions via des contraintes UNIQUE.

2. UUID v1 est-il sécurisé ? Puis-je l'utiliser en production ?

UUID v1 révèle le timestamp de création et l'adresse MAC de la machine, considéré comme une fuite d'informations. N'utilisez pas pour les tokens de sécurité ou dans des contextes où la confidentialité est critique. Préférez v4 pour la sécurité, ou v6/v7 si vous avez besoin d'un ordre chronologique sans exposer l'adresse MAC.

3. UUID impacte-t-il les performances de la base de données ?

Oui, mais généralement acceptable. Les UUIDs aléatoires causent une fragmentation de l'index B-tree (non séquentiels). Pour PostgreSQL, utilisez UUID v7 ou ULID (Universally Unique Lexicographically Sortable Identifier). Pour des cas extrêmes de performance (milliards d'enregistrements), conservez auto-increment.

4. Dois-je utiliser des tirets ou les supprimer ?

Dépend du contexte. Avec tirets (norme RFC 4122) : plus lisible, compatible avec les bibliothèques standard. Sans tirets : économise 4 octets en stockage de chaîne, utile pour URLs courtes ou tokens. PostgreSQL stocke en binaire (16 octets) indépendamment du formatage.

5. Puis-je utiliser UUID comme raccourcisseur d'URL ?

Techniquement oui, mais inefficace. Les UUIDs ont 36 caractères (avec tirets) ou 32 sans. Pour les raccourcisseurs d'URL, utilisez des encodages plus courts : base62 (A-Za-z0-9) génère des IDs de 6-8 caractères, suffisants pour des milliards d'URLs.

6. UUID fonctionne-t-il dans les systèmes hors ligne ?

Oui ! C'est l'un des principaux avantages. Les clients hors ligne (apps mobiles, IoT) génèrent des UUIDs localement sans connexion au serveur. Lors de la synchronisation, il n'y a pas de conflits d'ID. Idéal pour les CRDTs et la synchronisation multi-appareils.

Outils Associés