Vai al contenuto

Generatore CUID Efficiente per Identificatori Unici nei Sistemi

Genera identificatori unici resistenti alle collisioni (CUID) per sistemi distribuiti, database e applicazioni web. Crea ID scalabili e ordinabili istantaneamente.

Generatore di CUID

Genera un ID resistente alle collisioni in modo rapido e semplice.

Fai clic su «Genera Nuovo CUID» per creare un identificatore.
Calcolatore di caricamento...
📚

Documentazione

Che cos'è un CUID?

Un CUID (identificatore univoco resistente alle collisioni) è una breve stringa di lettere e cifre usata per etichettare un record, un file o un evento, in modo che nessun elemento condivida lo stesso nome con un altro. Questo strumento genera CUID2, la versione attuale del formato, utilizzando la libreria @paralleldrive/cuid2. Ogni ID è lungo 25 caratteri, contiene solo lettere minuscole e cifre e viene creato interamente nel browser: non viene inviato nulla a un server.

Come usare questo generatore di CUID

  1. Fai clic su Genera nuovo CUID per creare un ID.
  2. Fai clic su Copia negli appunti per copiarlo.
  3. Incolla l'ID in un database, in un nome di file o in un'applicazione.
  4. Fai di nuovo clic su Genera per ottenere un altro ID. Le collisioni tra valori CUID2 distinti sono estremamente improbabili, anche se non impossibili dal punto di vista matematico.
  5. Fai clic su Reimposta per cancellare il risultato.

L'ID generato viene memorizzato anche nell'URL della pagina, quindi è possibile condividere o aggiungere ai segnalibri un link al risultato.

Struttura e formula di CUID2

Un CUID2 viene costruito nel modo seguente:

1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2

La funzione hash combina quattro input privati: l'ora corrente, un contatore per sessione, un'impronta della macchina host e l'entropia casuale. Li elabora con SHA3-512, converte il risultato in base 36 (cifre da 0–9 e lettere da a a z), quindi conserva 24 di questi caratteri. La lettera iniziale casuale porta l'ID completo a 25 caratteri, la lunghezza impostata per questo strumento.

Solo il primo carattere è indipendente: una lettera casuale collocata all'inizio, affinché ogni ID inizi con una lettera anziché con una cifra. Molti sistemi, come i nomi di tabelle e colonne SQL, richiedono che gli identificatori inizino con una lettera; questo rende quindi un CUID2 utilizzabile come nome quasi ovunque. Ogni carattere successivo alla prima lettera fa parte di un unico corpo hash continuo e opaco: non contiene sezioni separate.

Poiché l'hash è a senso unico, nessuno dei suoi input può essere ricavato dall'ID completo. Un CUID2 non contiene un timestamp recuperabile, né un contatore o un'impronta recuperabili. Si tratta di una scelta intenzionale in materia di privacy e sicurezza: il solo ID non può rivelare quando o dove è stato creato.

Esempio di calcolo

La generazione di un ID con questo strumento può produrre:

1vcpuhcj51eomj1o31dnlqopu0
2

Qui v è la lettera iniziale casuale, mentre cpuhcj51eomj1o31dnlqopu0 (24 caratteri) è il corpo hash. Le due parti hanno un aspetto diverso solo perché il primo carattere è garantito come lettera; il corpo hash può contenere una combinazione di lettere e cifre.

Perché i sistemi usano CUID2

  • Nessun coordinamento necessario. Qualsiasi macchina può generare autonomamente un ID valido, senza chiedere a un server centrale o a un database il valore successivo.
  • Resistenza alle collisioni. La combinazione di ora, contatore, impronta dell'host ed entropia casuale rende estremamente improbabile che due macchine producano lo stesso ID, anche generandone molti al secondo.
  • Adatto agli URL. Un CUID2 usa solo lettere minuscole e cifre, quindi non deve mai essere codificato per essere usato in un indirizzo web.
  • Generazione rapida e privata. Poiché questo strumento esegue il generatore nel browser, gli ID vengono creati istantaneamente e non lasciano mai il dispositivo.

Gli ID CUID2 non sono ordinabili in base all'ora di creazione. A differenza di un numero autoincrementale di database o del formato CUID precedente (versione 1), un CUID2 nasconde il timestamp all'interno dell'hash invece di memorizzarlo in chiaro. Le applicazioni che devono ordinare i record in base all'ordine di creazione dovrebbero memorizzare una colonna timestamp separata insieme all'ID.

CUID2, UUID e ID autoincrementali a confronto

CaratteristicaCUID2UUID v4Autoincrementale
Lunghezza25 caratteri36 caratteri (con trattini)Varia (di solito un numero breve)
Set di caratteriLettere minuscole e cifreCifre esadecimali e trattiniCifre
Richiede un coordinamento centraleNoNoSì (una sequenza del database)
Ordinabile in base all'ora di creazioneNoNoSì
Adatto agli URL senza codificaSìSìSì

CUID2 e UUID v4 risolvono lo stesso problema: generare ID senza un coordinamento centrale. CUID2 è più breve e usa un set di caratteri più piccolo, il che lo rende più facile da leggere e incollare in un URL. Anche un UUID è sicuro in un indirizzo web, perché il trattino è un carattere non riservato negli URL, ma è lungo 11 caratteri in più.

Usi comuni

  • Chiavi primarie nei database distribuiti, in cui più server inseriscono righe in modo indipendente
  • ID di richiesta o di traccia utilizzati per seguire un'azione attraverso diversi microservizi
  • Nomi di file per i caricamenti, così due file non si sovrascrivono mai
  • ID di sessione o di token per le applicazioni web
  • ID di messaggi nelle code come Kafka o RabbitMQ

Una breve storia

Il formato CUID originale è stato rilasciato da Eric Elliott nel 2012 come alternativa agli UUID per le applicazioni distribuite. CUID2, pubblicato dallo stesso progetto Paralleldrive, è stato riprogettato attorno a un hash crittografico e non espone più il timestamp e il contatore recuperabili della versione originale. Questo strumento genera esclusivamente ID CUID2.

Domande frequenti

Qual è la differenza tra CUID (v1) e CUID2? CUID v1 memorizzava nell'ID un timestamp e un contatore visibili, rendendo gli ID ordinabili, ma rivelando anche quando e quanti ID erano stati creati. CUID2 sostituisce questi campi visibili con un hash a senso unico, quindi dall'ID non è possibile ricavare alcuna informazione.

Gli ID CUID generati da questo strumento sono ordinabili in base all'ora di creazione? No. Un CUID2 non contiene un timestamp recuperabile, quindi non è possibile ordinare gli ID in base al momento della generazione osservando soltanto la stringa.

Quanto è lungo un ID generato e se ne può modificare la lunghezza? Questo strumento genera sempre ID di 25 caratteri. Lo strumento non offre alcuna opzione per richiedere una lunghezza diversa.

È possibile che due macchine diverse generino contemporaneamente lo stesso CUID2? In teoria è possibile, ma nella pratica è estremamente improbabile. Ogni ID combina un'impronta specifica dell'host con entropia casuale, quindi è estremamente improbabile che macchine indipendenti producano mai lo stesso hash.

Questo strumento invia dati a un server? No. L'ID viene generato da JavaScript eseguito nel browser, utilizzando l'orologio del sistema locale e la casualità fornita dal browser. Non viene trasmesso nulla.

È possibile usare un CUID2 come chiave primaria di un database? Sì. Gli ID CUID2 funzionano bene come chiavi primarie nei database distribuiti, poiché qualsiasi nodo può generarne uno senza verificare la sequenza centrale. Non sono ordinati naturalmente in base all'ora di inserimento, quindi un'applicazione che necessita di quell'ordine dovrebbe mantenere una colonna created_at separata.