Salta al contingut

Generador de CUID Eficient per a Identificadors Únics en Sistemes

Genereu identificadors únics resistents a col·lisions (CUIDs) per a sistemes distribuïts, bases de dades i aplicacions web. Creeu ID escalables i ordenables a l'instant.

Generador de CUID

Genereu un ID resistent a col·lisions de manera ràpida i senzilla.

Feu clic a «Genera un nou CUID» per crear un identificador.
Calculadora de càrrega...
📚

Documentació

Què és un CUID?

Un CUID (identificador únic resistent a les col·lisions) és una cadena curta de lletres i dígits que s’utilitza per etiquetar un registre, un fitxer o un esdeveniment, de manera que cap parell d’elements comparteixi el mateix nom. Aquesta eina genera CUID2, la versió actual del format, mitjançant la biblioteca @paralleldrive/cuid2. Cada identificador té 25 caràcters, conté només lletres minúscules i dígits, i es crea íntegrament al navegador: no s’envia res a cap servidor.

Com s’utilitza aquest generador de CUID

  1. Feu clic a Genera un CUID nou per crear un identificador.
  2. Feu clic a Copia al porta-retalls per copiar-lo.
  3. Enganxeu l’identificador en una base de dades, un nom de fitxer o una aplicació.
  4. Feu clic de nou a Genera per obtenir un altre identificador. Les col·lisions entre valors CUID2 independents són extremadament improbables, tot i que no són matemàticament impossibles.
  5. Feu clic a Restableix per esborrar el resultat.

L’identificador generat també es desa a l’URL de la pàgina, de manera que es pot compartir o afegir a les adreces d’interès un enllaç al resultat.

Estructura i fórmula de CUID2

Un CUID2 es construeix de la manera següent:

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

La funció resum combina quatre entrades privades: l’hora actual, un comptador per sessió, una empremta de la màquina amfitriona i entropia aleatòria. Les processa amb SHA3-512, converteix el resultat a base 36 (dígits 0–9 i lletres a-z) i després en conserva 24 caràcters. La lletra inicial aleatòria fa que l’identificador acabat tingui 25 caràcters, la longitud que té establerta aquesta eina.

Només el primer caràcter és independent: una lletra aleatòria situada al davant perquè tots els identificadors comencin per una lletra i no per un dígit. Molts sistemes, com ara els noms de taules i columnes SQL, exigeixen que els identificadors comencin per una lletra; per tant, això fa que un CUID2 es pugui utilitzar amb seguretat com a nom gairebé a qualsevol lloc. Tots els caràcters posteriors a aquesta primera lletra formen part d’un únic cos de resum continu i opac: no té seccions separades.

Com que el resum només funciona en una direcció, no es pot recuperar cap de les seves entrades a partir de l’identificador acabat. Un CUID2 no conté cap marca de temps recuperable, ni cap comptador ni cap empremta recuperable. És una decisió deliberada de privadesa i seguretat: un identificador per si sol no pot revelar quan ni on s’ha creat.

Exemple resolt

La generació d’un identificador amb aquesta eina podria produir:

1vcpuhcj51eomj1o31dnlqopu0
2

Aquí v és la lletra inicial aleatòria, i cpuhcj51eomj1o31dnlqopu0 (24 caràcters) és el cos del resum. Les dues parts només tenen un aspecte diferent perquè es garanteix que el primer caràcter sigui una lletra; el cos del resum pot contenir una barreja de lletres i dígits.

Per què els sistemes utilitzen CUID2

  • No cal coordinació. Qualsevol màquina pot generar un identificador vàlid pel seu compte, sense demanar el valor següent a cap servidor o base de dades central.
  • Resistència a les col·lisions. La combinació de l’hora, el comptador, l’empremta de l’amfitrió i l’entropia aleatòria fa que sigui extremadament improbable que dues màquines generin el mateix identificador, fins i tot quan en generen molts per segon.
  • Adequat per a URL. Un CUID2 només utilitza lletres minúscules i dígits, de manera que no cal codificar-lo per utilitzar-lo en una adreça web.
  • Generació ràpida i privada. Com que aquesta eina executa el generador al navegador, els identificadors es creen instantàniament i no surten mai del dispositiu.

Els identificadors CUID2 no es poden ordenar per l’hora de creació. A diferència d’un número d’increment automàtic d’una base de dades o del format CUID anterior (versió 1), un CUID2 amaga la seva marca de temps dins del resum en lloc d’emmagatzemar-la de manera visible. Les aplicacions que necessitin ordenar els registres per ordre de creació haurien d’emmagatzemar una columna de marca de temps independent al costat de l’identificador.

CUID2 vs. UUID vs. identificadors d’increment automàtic

CaracterísticaCUID2UUID v4Increment automàtic
Longitud25 caràcters36 caràcters (amb guionets)Varia (normalment un número curt)
Joc de caràctersLletres minúscules i dígitsDígits hexadecimals i guionetsDígits
Necessita coordinació centralNoNoSí (una seqüència de base de dades)
Ordenable per l’hora de creacióNoNoSí
Adequat per a URL sense codificacióSíSíSí

CUID2 i UUID v4 resolen el mateix problema: generar identificadors sense coordinació central. CUID2 és més curt i utilitza un joc de caràcters més reduït, cosa que en facilita la lectura i l’enganxament en una URL. Un UUID també és segur en una adreça web, perquè el guionet és un caràcter no reservat a les URL, però té 11 caràcters més.

Usos habituals

  • Claus primàries en bases de dades distribuïdes, on diversos servidors insereixen files de manera independent
  • Identificadors de sol·licitud o de seguiment utilitzats per seguir una acció entre diversos microserveis
  • Noms de fitxer per a càrregues, perquè dos fitxers no se sobreescriguin mai
  • Identificadors de sessió o de testimoni per a aplicacions web
  • Identificadors de missatge en cues com Kafka o RabbitMQ

Una breu història

El format CUID original va ser publicat per Eric Elliott l’any 2012 com a alternativa als UUID per a aplicacions distribuïdes. CUID2, publicat pel mateix projecte Paralleldrive, va redissenyar el format al voltant d’un resum criptogràfic i va eliminar la marca de temps i el comptador recuperables que exposava la versió original. Aquesta eina només genera identificadors CUID2.

Preguntes freqüents

Quina diferència hi ha entre CUID (v1) i CUID2? CUID v1 emmagatzemava una marca de temps i un comptador visibles dins de l’identificador, cosa que permetia ordenar-los, però també revelava quan i quants identificadors s’havien creat. CUID2 substitueix aquests camps visibles per un resum unidireccional, de manera que no es pot extreure cap informació de l’identificador.

Els CUID d’aquesta eina es poden ordenar per l’hora de creació? No. Un CUID2 no té cap marca de temps recuperable, de manera que els identificadors no es poden ordenar segons el moment en què es van generar només mirant la cadena.

Quina longitud té un identificador generat i es pot canviar? Aquesta eina sempre genera identificadors de 25 caràcters. No hi ha cap opció per sol·licitar una longitud diferent.

Poden dues màquines diferents generar el mateix CUID2 alhora? En teoria és possible, però a la pràctica és extremadament improbable. Cada identificador combina una empremta específica de l’amfitrió amb entropia aleatòria, de manera que és molt improbable que màquines independents produeixin mai el mateix resum.

Aquesta eina envia dades a algun servidor? No. L’identificador el genera JavaScript que s’executa al navegador mitjançant el rellotge del sistema local i l’aleatorietat proporcionada pel navegador. No es transmet res.

Puc utilitzar un CUID2 com a clau primària d’una base de dades? Sí. Els identificadors CUID2 funcionen bé com a claus primàries en bases de dades distribuïdes, ja que qualsevol node en pot generar un sense consultar cap seqüència central. No s’ordenen naturalment per l’hora d’inserció; per tant, una aplicació que necessiti aquest ordre hauria de conservar una columna created_at independent.