Que es un UUID?
Un UUID (Universally Unique Identifier) es un identificador de 128 bits estandarizado por RFC 4122. Tiene este aspecto:
550e8400-e29b-41d4-a716-446655440000
Cinco grupos de caracteres hexadecimales separados por guiones, siempre con 36 caracteres de longitud. La "universalidad unica" proviene de la combinacion de tiempo, aleatoriedad y/o espacio de nombres, segun la version.
Los UUID se usan cuando necesita generar IDs sin una autoridad central. Son ideales para sistemas distribuidos, IDs generados por el cliente y casos en los que no puede permitirse un viaje de ida y vuelta a un servidor.
Versiones de UUID
UUID v1, Basado en tiempo
Generado a partir del timestamp actual combinado con la direccion MAC de la maquina que lo genera. Garantizado como unico entre maquinas al mismo momento, pero la direccion MAC filtra la identidad de la maquina.
UUID v3, Basado en nombre (MD5)
Deterministico: el mismo nombre + espacio de nombres siempre produce el mismo UUID. Usa hashing MD5. Se prefiere v5 para proyectos nuevos.
UUID v4, Aleatorio (el mas comun)
Generado a partir de 122 bits de datos aleatorios. La version mas ampliamente utilizada. La probabilidad de colision es astronomicamente baja. Uselo a menos que tenga una razon especifica para no hacerlo.
UUID v5, Basado en nombre (SHA-1)
Igual que v3 pero usa SHA-1 en lugar de MD5. Preferido sobre v3 para trabajo nuevo.
UUID v7, Aleatorio ordenado por tiempo (nuevo estandar)
Introducido en la revision 2022 del RFC. Combina un prefijo de timestamp con precision de milisegundos con bits aleatorios. El prefijo de timestamp significa que los UUID v7 se ordenan cronologicamente, una ventaja importante para claves primarias de base de datos. Esta es la opcion recomendada para IDs de base de datos en adelante.
Cuando usar UUID
- Claves primarias de base de datos, especialmente en sistemas distribuidos donde multiples nodos insertan registros simultaneamente
- Identificadores de recursos API, exponer enteros secuenciales filtra informacion sobre el volumen de datos; los UUID no
- Nomenclatura de archivos y activos, nombres resistentes a colisiones para archivos subidos sin servidor de coordinacion
- Claves de idempotencia, generar una clave del lado del cliente para reintentar de forma segura una solicitud
UUID vs ULID vs NanoID
ULID (Universally Unique Lexicographically Sortable Identifier): un ID de 128 bits como UUID pero ordenable por tiempo. Objetivo similar a UUID v7.
NanoID: mas pequeno (21 caracteres por defecto), seguro para URL, alfabeto configurable. Util para IDs cortos en URLs.
Para la mayoria del trabajo de bases de datos backend, UUID v7 es la mejor practica moderna. Para IDs cortos compatibles con URL, NanoID es una opcion popular. UUID v4 sigue siendo la opcion mas universalmente compatible.
Generar UUID en el navegador
Puede generar UUID v4 (y otras versiones) instantaneamente con el generador de UUID de este sitio, sin registro, sin viaje al servidor, completamente en el navegador.
Resumen
Los UUID son identificadores de 128 bits resistentes a colisiones con multiples versiones para diferentes estrategias: basado en tiempo (v1), aleatorio (v4), basado en nombre (v5) y aleatorio ordenado por tiempo (v7). UUID v4 es la opcion de proposito general mas comun; UUID v7 es la mejor opcion para claves primarias de base de datos donde importa el orden.