Guías Desarrollo

Cómo funcionan los UUID

La estructura de un UUID (bits de versión y de variante), qué significa cada versión, por qué los UUID aleatorios casi nunca colisionan (con las cifras de la paradoja del cumpleaños) y cómo generarlos y decodificarlos.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

Un UUID (identificador único universal, también llamado GUID) es una etiqueta de 128 bits escrita como 32 dígitos hexadecimales con el patrón 8-4-4-4-12. Cualquiera puede generarlo sin un registro central. El formato lo define la RFC 9562. Créelos con Generador de UUID, léalos con Decodificador de UUID y ULID y elija entre los tipos más habituales en UUID v4 vs UUID v7 vs ULID. La entrada del glosario es UUID.

Cómo leer un UUID

  • Ejemplo: f47ac10b-58cc-4372-a567-0e02b2c3d479.
  • La versión es el primer dígito hexadecimal del tercer grupo (aquí 4: aleatorio).
  • La variante está en el primer dígito del cuarto grupo: 8, 9, a o b indica la disposición estándar (aquí a).
  • Existen dos valores especiales: el UUID nulo 00000000-0000-0000-0000-000000000000 y el UUID máximo ffffffff-ffff-ffff-ffff-ffffffffffff.

Las versiones

Versión Qué contiene Notas
1 Marca de tiempo (ticks de 100 ns desde 1582-10-15) + ID de nodo Heredada; el ID de nodo puede filtrar una dirección MAC
3 Hash MD5 de un espacio de nombres y un nombre Misma entrada, mismo UUID; evítela en trabajos nuevos
4 122 bits aleatorios La opción por defecto; no revela nada
5 Hash SHA-1 de un espacio de nombres y un nombre Misma entrada, mismo UUID; ID estables para nombres
6 v1 con la marca de tiempo reordenada para que se ordene Compatibilidad con v1
7 Hora Unix de 48 bits en ms + aleatorio Se ordena por hora de creación; buena para claves de bases de datos
8 Personalizada: disposición definida por el proveedor Uso experimental o privado

¿Qué probabilidad hay de una colisión?

Un UUID versión 4 lleva 122 bits aleatorios, unos 5,3 × 10^36 valores. Por la paradoja del cumpleaños, harían falta aproximadamente 2,7 × 10^18 UUID para un 50 % de probabilidad de un solo duplicado: generando mil millones por segundo, serían unos 86 años.

Consejos prácticos

  • Los UUID basados en nombre son reproducibles: el UUID versión 5 de example.com en el espacio de nombres DNS es siempre cfbff0d1-9375-5685-968c-48ce8b15ae17.
  • Un UUID es un identificador, no un secreto. No lo use como token de restablecimiento de contraseña o clave de API a menos que proceda de una fuente aleatoria segura, y prefiera tokens más largos para los secretos.
  • Guarde los UUID como 16 bytes (una columna uuid nativa), no como texto de 36 caracteres, cuando pueda.
  • Use la v7, ordenada por tiempo, para nuevas claves primarias de bases de datos y evite dispersar las inserciones por el índice.

Pruebe estas herramientas

Véase también

  • Glosario UUID
    Un UUID (identificador único universal) es un valor de 128 bits, escrito con 36 caracteres.
  • Comparativa UUID v4 vs UUID v7 vs ULID
    UUID aleatorios, UUID ordenados por tiempo y ULID comparados: disposición de bits, longitud del texto, ordenación.
  • Glosario Marca de tiempo Unix (Unix timestamp)
    Una marca de tiempo Unix es el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC (la «época Unix»).
  • Glosario Hash
    Un hash es la huella de longitud fija que una función hash calcula de cualquier entrada.
  • Guía Cómo funciona el hashing
    Qué hace una función hash, el efecto avalancha mostrado con salida real de SHA-256, qué algoritmos siguen siendo seguros.
  • Guía Cómo funcionan el azar y los sorteos justos
    Azar pseudoaleatorio y seguro, sesgo del módulo, por qué las mezclas ingenuas son sesgadas, rachas y probabilidades exactas de loterías.

Preguntas frecuentes

En teoría sí, pero un UUID versión 4 tiene 122 bits aleatorios, así que para un 50 % de probabilidad de una sola colisión harían falta unos 2,7 × 10^18 UUID. En la práctica, un mal generador de números aleatorios es un riesgo mayor que el azar.

AdSense Placeholder
Slot: footer_leaderboard