Generatore UUID/GUID Online

Genera identificatori unici universali (UUID/GUID) sicuri e casuali in pochi secondi. Ideale per lo sviluppo software, database e sistemi distribuiti.

Formato predefinito: 8-4-4-4-12 caratteri esadecimali
Esempio: 550e8400-e29b-41d4-a716-446655440000

Cos'è UUID/GUID?

UUID (Universally Unique Identifier) e GUID (Globally Unique Identifier) sono termini intercambiabili per identificatori unici a 128 bit. Creati per generare ID univoci senza richiedere coordinamento centrale, sono ampiamente utilizzati in database, API REST e sistemi distribuiti.

Versioni UUID

UUID v4 - Casuale (Consigliato)

Generato casualmente utilizzando crittografia forte. Probabilità di collisione: ~1 su 2¹²² (trilioni di trilioni). Ideale per la maggior parte dei casi: chiavi primarie, token di sessione, identificatori di risorse.

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

UUID v1 - Basato su Timestamp

Include timestamp (60 bit) + indirizzo MAC del computer (48 bit) + contatore. Vantaggio: ordinabile cronologicamente. Svantaggio: rivela informazioni di sistema (indirizzo MAC, ora di creazione).

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

Altre Versioni (v3, v5, v6, v7)

v3/v5: Generati da hash (MD5/SHA-1) di un namespace + nome. Deterministici (stesso input = stesso UUID). v6/v7: Proposte recenti che combinano timestamp ordinabile con casualità sicura.

Esempio:

Casi d'uso comuni

🗄️ Chiavi Primarie di Database

Sostituisci auto-increment con UUID per facilitare la fusione dei dati tra ambienti (dev, staging, prod) e sharding orizzontale. MongoDB, PostgreSQL e MySQL lo supportano nativamente.

🔗 URL di Risorse REST

/api/users/550e8400-e29b-41d4-a716-446655440000
Gli UUID negli URL prevengono attacchi di enumerazione e mantengono gli URL imprevedibili.

🎫 Token di Sessione e Autenticazione

Token OAuth, session ID, reset token. Gli UUID sono crittograficamente sicuri e impossibili da indovinare (a differenza delle sequenze numeriche).

📦 Identificatori di Eventi/Messaggi

Tracciamento di eventi in microservizi, code di messaggi (RabbitMQ, Kafka), log distribuiti. Correlation ID tra servizi.

📁 Nomi di File Unici

Caricamenti di immagini, backup, file temporanei. Previene conflitti e consente caricamenti simultanei senza blocco.

UUID vs Auto-increment: Pro e Contro

CaratteristicaUUIDAuto-increment (INT)
Dimensione16 byte (128 bit)4 byte (32 bit) o 8 byte (64 bit)
Generazione distribuita✓ Sì, senza coordinamento✗ Richiede controllo centrale
PrevedibilitàImprevedibile (sicuro)Prevedibile (rischio di enumerazione)
Prestazioni indicePiù lento (128 bit casuali)Più veloce (sequenziale, cache-friendly)
Ordinamento cronologicoNo (v4), Sì (v1, v6, v7)Sì (sequenziale)
Fusione database✓ Banale (nessuna collisione)✗ Complesso (conflitti ID)
Ideale perSistemi distribuiti, API, sicurezzaSistemi monolitici, prestazioni critiche

Come usare UUID in diversi linguaggi

JavaScript/Node.js

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

// Con libreria '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 casuale
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());

PostgreSQL

-- Abilitare estensione
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

-- Generare UUID
SELECT uuid_generate_v4();

-- Creare tabella con UUID
CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
  name VARCHAR(100)
);

FAQ - Domande Frequenti

1. Gli UUID sono davvero unici? Possono esserci collisioni?

Gli UUID v4 hanno 2¹²² combinazioni possibili. La probabilità di collisione è astronomicamente bassa (1 su 5 miliardi dopo aver generato 1 miliardo di UUID). Per scopi pratici, considerali unici. I database moderni rilevano le collisioni tramite vincoli UNIQUE.

2. UUID v1 è sicuro? Posso usarlo in produzione?

UUID v1 rivela il timestamp di creazione e l'indirizzo MAC della macchina, considerato perdita di informazioni. Non usare per token di sicurezza o in contesti in cui la privacy è critica. Preferire v4 per sicurezza, o v6/v7 se serve ordinamento cronologico senza esporre l'indirizzo MAC.

3. UUID impatta le prestazioni del database?

Sì, ma generalmente accettabile. Gli UUID casuali causano frammentazione dell'indice B-tree (non sono sequenziali). Per PostgreSQL, usa UUID v7 o ULID (Universally Unique Lexicographically Sortable Identifier). Per casi estremi di prestazioni (miliardi di record), mantieni auto-increment.

4. Devo usare i trattini o rimuoverli?

Dipende dal contesto. Con trattini (standard RFC 4122): più leggibile, compatibile con librerie standard. Senza trattini: risparmia 4 byte in memorizzazione di stringhe, utile per URL brevi o token. PostgreSQL memorizza in binario (16 byte) indipendentemente dalla formattazione.

5. Posso usare UUID come abbreviatore di URL?

Tecnicamente sì, ma inefficiente. Gli UUID hanno 36 caratteri (con trattini) o 32 senza. Per abbreviatori di URL, usa codifiche più brevi: base62 (A-Za-z0-9) genera ID di 6-8 caratteri, sufficienti per miliardi di URL.

6. UUID funziona in sistemi offline?

Sì! È uno dei principali vantaggi. I client offline (app mobili, IoT) generano UUID localmente senza connessione al server. Quando sincronizzano, non ci sono conflitti di ID. Ideale per CRDT e sincronizzazione multi-dispositivo.

Strumenti Correlati