🌐 ES

🆔 Generador de UUID

Genera identificadores únicos universales (UUID). Crea UUID estándar utilizados para claves de bases de datos, tokens de API, identificadores de sesión y mucho más.

Información de la versión

v1 (basada en marca de tiempo)
Basada en la dirección MAC y la marca de tiempo. Orden temporal garantizado.
v4 (aleatoria)
Completamente aleatoria. La más utilizada.
v7 (ordenable por marca de tiempo)
Ordenable por marca de tiempo. Estándar más reciente.
GUÍA

Más información

01

1. ¿Qué es un UUID?

El UUID (Universally Unique Identifier, identificador único universal) es un identificador de 128 bits que garantiza la unicidad sin coordinación central. Se representa en formato hexadecimal 8-4-4-4-12 (por ejemplo: 550e8400-e29b-41d4-a716-446655440000), y la probabilidad de duplicación es extremadamente baja sin importar dónde se genere en el mundo. Se utiliza en claves primarias de bases de datos, identificadores de sesión, nombres de archivo, tokens de API y mucho más. También se conoce como GUID (Globally Unique Identifier) y está definido por el estándar RFC 4122.

02

2. Comparación de las versiones de UUID

Existen 5 versiones de UUID, cada una con un método de generación diferente. La v1 combina la dirección MAC y la marca de tiempo para garantizar el orden temporal, pero presenta riesgos de seguridad por la exposición de la dirección MAC. La v4 es completamente aleatoria, la más utilizada y con alta imprevisibilidad. La v7 es la versión más reciente, estandarizada en 2024, ordenable por marca de tiempo y ventajosa para la indexación de bases de datos. La v2 se usa para seguridad DCE, y las v3/v5 se basan en espacios de nombres para usos especiales.

03

3. Casos de uso del UUID

Los UUID son útiles en muchas situaciones. En sistemas distribuidos, se pueden generar identificadores únicos sin un servidor central, lo que ofrece una excelente escalabilidad. En bases de datos, usar UUID como claves primarias en lugar de identificadores autoincrementales evita conflictos de fusión. En arquitecturas de microservicios, se usan para rastrear la comunicación entre servicios. También se utilizan ampliamente para evitar colisiones de nombres de archivo al subir archivos, generar tokens temporales, rastrear eventos y analizar correlaciones en registros.

04

4. Guía para elegir entre v1, v4 y v7

La elección de la versión de UUID depende de los requisitos. Elige la v1 si el orden temporal es importante y la exposición de la dirección MAC es aceptable. Sin embargo, la dirección MAC permite rastrear el lugar de generación, lo que plantea problemas de privacidad. La v4 es la mejor opción si la seguridad es importante y no se necesita orden. Es completamente aleatoria, impredecible y no expone información personal. La v7 se recomienda si deseas tanto ordenación temporal como seguridad. La ordenación basada en marca de tiempo ofrece un buen rendimiento en bases de datos y menor fragmentación de índices.

05

5. Principio que garantiza la unicidad del UUID

La probabilidad de colisión de los UUID es astronómicamente baja. En el caso de la v4, 122 bits son aleatorios, lo que ofrece 2^122 = 5,3 x 10^36 combinaciones posibles. Incluso generando mil millones por segundo, tomaría 85 años alcanzar una probabilidad de colisión del 50 %. La v1 garantiza la unicidad basada en el tiempo mediante la marca de tiempo (60 bits) y la secuencia de reloj (14 bits), y la unicidad espacial mediante la dirección MAC (48 bits). La v7 combina la marca de tiempo Unix (48 bits) y una parte aleatoria (74 bits) para satisfacer tanto el orden temporal como la unicidad.

06

6. Uso del UUID en bases de datos

Usar UUID como claves primarias de bases de datos tiene varias ventajas. En entornos distribuidos, cada nodo puede crear identificadores de forma independiente sin un generador de ID central, lo que ofrece una excelente escalabilidad. No hay conflictos de identificadores al fusionar datos, y es imposible adivinar secuencialmente incluso si se exponen en una URL, lo que brinda ventajas de seguridad. Sin embargo, también hay desventajas. Con 16 bytes, es más grande que los enteros (4-8 bytes), y la aleatoriedad de la v4 puede degradar el rendimiento de la indexación. En esos casos, usar la v7 permite un orden temporal que mejora el rendimiento de los índices B-tree.