Genera Identificatori Univoci Universali (UUID) per database, API, sistemi distribuiti e applicazioni. Supporta UUID v4 (completamente random) e il nuovo UUID v7 (time-ordered) per migliori performance sugli indici database.
Gli UUID (Universally Unique Identifier) sono identificatori a 128 bit progettati per essere unici a livello globale senza coordinamento centrale. Sono fondamentali nello sviluppo software moderno per identificare risorse in sistemi distribuiti.
Sostituisci gli ID auto-incrementali con UUID per database distribuiti, microservizi e sistemi che devono generare ID senza comunicare con un server centrale.
Identifica risorse REST in modo univoco. Gli UUID nell'URL sono più sicuri degli ID sequenziali che rivelano quanti record esistono.
Genera nomi univoci per upload di file, immagini, documenti. Evita collisioni anche con milioni di file.
Crea identificatori di sessione, token di reset password, codici di conferma. L'alta entropia li rende impossibili da indovinare.
Traccia eventi, transazioni, richieste attraverso sistemi distribuiti mantenendo correlazione.
Genera dati di test con ID realistici per mockup, seed database, demo applicazioni.
💡 Consiglio: Se stai iniziando un nuovo progetto nel 2024+, usa UUID v7. L'ordinamento cronologico migliora drasticamente le performance degli indici B-tree (fino al 50% più veloci su INSERT) e permette di estrarre il timestamp se necessario.
Ecco come generare UUID nei linguaggi più comuni:
crypto.randomUUID() // UUID v4
import uuid; str(uuid.uuid4())
Ramsey\Uuid\Uuid::uuid4()->toString()
gen_random_uuid()
550e8400-e29b-41d4-a716-446655440000
Dipende dal motore e da come è fatto l'indice. Il v4 è puramente casuale, quindi ogni nuovo record cade in un punto imprevedibile dell'indice B-tree: su tabelle grandi questo genera frammentazione e frequenti page split, un problema ben documentato su MySQL/InnoDB, dove la chiave primaria coincide con l'indice clusterizzato. Il v7 mette invece un timestamp Unix in millisecondi nei bit iniziali, così i valori crescono nel tempo e gli inserimenti restano quasi sequenziali, tenendo l'indice più compatto. In pratica: scegli il v7 se ti serve ordinamento cronologico o throughput elevato in scrittura, il v4 se vuoi la massima imprevedibilità e l'ordine non ti interessa.
Sì: i primi 48 bit di un UUID v7 sono un timestamp Unix in millisecondi, quindi chiunque abbia l'identificatore può ricavare, con precisione al millesimo di secondo, quando è stato generato. Non è un difetto ma una scelta esplicita della RFC 9562, che serve proprio a renderlo ordinabile. Se stai creando identificatori pubblici per risorse in cui l'istante di creazione è un'informazione delicata (per esempio ordini, ticket o account utente), preferisci il v4, che non porta con sé alcun dato temporale.
In pratica no. Un UUID v4 contiene 122 bit casuali (128 meno i bit fissi di versione e variante), cioè circa 5,3 × 10^36 valori possibili: per avere una probabilità concreta di collisione dovresti generarne miliardi al secondo per decenni. Nel v7 la parte casuale è più piccola, perché 48 bit sono occupati dal timestamp, ma restano 74 bit pseudo-casuali: bastano a distinguere anche gli UUID prodotti nello stesso identico millisecondo.
Sì, perché questo generatore si appoggia all'API crittografica del browser (crypto.randomUUID e crypto.getRandomValues), che attinge a una fonte di entropia sicura fornita dal sistema operativo. È un livello di casualità ben più solido di un semplice Math.random() e adatto anche a identificatori che non devono essere indovinabili. Ricorda però che un UUID resta un identificatore, non un segreto: per password, chiavi API o token di sessione usa strumenti nati apposta per gestire i segreti.
Sono la stessa cosa: GUID (Globally Unique Identifier) è il nome che Microsoft ha storicamente dato agli UUID definiti dalla RFC 4122. Il valore a 128 bit prodotto qui è pienamente compatibile con il tipo Guid di .NET, la colonna UNIQUEIDENTIFIER di SQL Server e i GUID del registro di Windows. L'unica differenza che a volte noti è la formattazione: alcuni contesti Microsoft racchiudono il GUID tra parentesi graffe {…}, ma la sequenza esadecimale sottostante è identica.
Questo strumento genera v4 e v7 perché coprono i due scenari più diffusi oggi: massima casualità da un lato, identificatori ordinabili nel tempo dall'altro. Il v1 non è deprecato ma è sconsigliato per i nuovi progetti, perché nella sua forma classica include l'indirizzo MAC della scheda di rete, con possibili implicazioni di privacy e tracciabilità dell'hardware; il v6 è una sua rielaborazione ordinabile introdotta dalla RFC 9562. Per quasi tutti i progetti nuovi il v7 è la scelta consigliata al posto sia del v1 sia del v6, perché offre l'ordinamento cronologico senza esporre alcun dato sull'hardware.