ESC
Developer

Cos'è un UUID? Guida per Sviluppatori agli Identificatori Univoci

Scopri cosa sono gli UUID, come funzionano le diverse versioni, quando usarli e come generarli in JavaScript, Python, PHP e SQL.

2026-06-25 8 min read Developer
UUID Guide: A Developer's Guide to Unique Identifiers

Cos'è un UUID?

Un UUID (Universally Unique Identifier) è un identificatore a 128 bit progettato per essere unico nello spazio e nel tempo, senza coordinazione centrale. Il risultato è una stringa di 36 caratteri nel formato:

550e8400-e29b-41d4-a716-446655440000

Codifica 32 cifre esadecimali in cinque gruppi separati da trattini: 8-4-4-4-12.

Probabilità di collisione: Con UUID v4, la probabilità di generare due ID identici è circa 1 su 5,3×1036. In pratica non incontrerai mai una collisione in produzione.

Versioni di UUID

UUID v1 — Basato sul tempo + MAC

Combina il timestamp con l'indirizzo MAC. Ordinato cronologicamente ma rivela l'indirizzo MAC e il timestamp esatto — problema di privacy.

UUID v4 — Casuale (il più usato)

Riempie 122 bit con dati casuali crittograficamente sicuri. La scelta predefinita per la maggior parte dei casi.

UUID v5 — Namespace + SHA-1

Deterministico: stesso namespace + nome = stesso UUID sempre. Preferisci v5 a v3 (MD5 è obsoleto).

UUID v7 — Ordinato per tempo (nuovo standard)

Usa un timestamp Unix in millisecondi nei bit più significativi. UUID ordinabili che migliorano significativamente le prestazioni degli indici B-tree.

Per chiavi primarie DB: Preferisci UUID v7. La struttura ordinata previene la frammentazione degli indici.

Perché Usare gli UUID?

  • Nessuna coordinazione centrale: Qualsiasi client o microservizio può generare un UUID indipendentemente.
  • Sicurezza per opacità: Gli ID interi sequenziali espongono il volume dei dati. Gli UUID non rivelano nulla.
  • Fusione di database: Le tabelle con chiavi UUID si uniscono senza conflitti.
  • Generazione offline: Le app mobili possono creare record offline e sincronizzare in seguito.
  • Standard di settore: Supporto nativo in tutti i principali database e framework.

Quando NON Usare gli UUID?

  • Overhead di archiviazione: Usa BINARY(16) in MySQL o il tipo nativo uuid in PostgreSQL invece di VARCHAR(36).
  • Slug URL: Troppo lunghi e non memorabili. Usa slug leggibili per URL rivolti agli utenti.
  • Frammentazione indici con v4: Per tabelle ad alto volume di scrittura usa UUID v7 o ULID.
Suggerimento MySQL: Non memorizzare mai gli UUID come VARCHAR(36). Usa BINARY(16) con UUID_TO_BIN(uuid, 1).

Generare UUID nel Codice

JavaScript

const id = crypto.randomUUID(); // v4

Python

import uuid; id = str(uuid.uuid4())

PHP

use Ramsey\Uuid\Uuid;
$v4 = Uuid::uuid4()->toString();
$v7 = Uuid::uuid7()->toString();

SQL

-- MySQL: SELECT UUID();
-- PostgreSQL: SELECT gen_random_uuid();

Best Practice

  • Archivia come binary: BINARY(16) o tipo nativo uuid PostgreSQL.
  • Usa v4 per la maggior parte dei casi.
  • Usa v7 per le chiavi primarie del database.
  • Evita v1 nei contesti sensibili alla privacy.
  • Valida il formato UUID in input.
  • Usa sempre lettere minuscole.
Hai bisogno di generare UUID adesso? Il nostro Generatore UUID crea UUID v4 e v7 in massa.

Domande Frequenti

Due UUID possono essere uguali?

Teoricamente sì. La probabilità di collisione v4 è circa 1 su 5,3×1036. In pratica non incontrerai mai una collisione in nessun sistema reale.

v4 o v7 per le chiavi primarie?

v7 per le chiavi primarie. v4 inserisce in posizioni casuali nell'indice B-tree. v7 garantisce inserzioni alla fine dell'indice.

Gli UUID sono sensibili alle maiuscole?

No. La specifica è case-insensitive. Per convenzione usa sempre le minuscole.

Genera UUID all'Istante

Genera UUID v4 o v7 in massa, copiali negli appunti e usali nei tuoi progetti — nessun server, nessun tracciamento, 100% lato client.

Apri il Generatore UUID