Menú
dev 12 min de lectura |

UUID v4 vs v7: Eligiendo la Versión Correcta para tu Proyecto

En el mundo de la arquitectura de software, los identificadores únicos son el pegamento que mantiene unidos los datos. Durante décadas, el Identificador Único Universal (UUID) ha sido el estándar por excelencia para generar claves únicas sin una autoridad central. Sin embargo, no todos los UUID son creados iguales. A medida que nuestros sistemas han escalado, las limitaciones del clásico UUID v4 se han vuelto evidentes, lo que ha llevado a la introducción del UUID v7 ordenado por tiempo.

Esta guía explora las diferencias fundamentales entre estas dos versiones, centrándose en el rendimiento, la indexabilidad y los casos de uso. Si necesitas generar cualquiera de las versiones de inmediato, puedes usar nuestro Generador de UUID en línea para comenzar.

El Clásico: UUID v4 (Aleatorio)

UUID v4 es la versión más común en uso hoy en día. Se genera utilizando números puramente aleatorios. De los 128 bits de un UUID, 122 se utilizan para la aleatoriedad, proporcionando un espacio colosal de posibilidades únicas.

Pros:

  • Máxima imprevisibilidad: Al ser aleatorio, v4 es excelente para tokens o IDs donde no deseas filtrar ninguna información sobre cuándo se creó el ID.
  • Unicidad Global: La probabilidad de una colisión es tan baja que es virtualmente cero para la mayoría de las aplicaciones humanas.

Contras:

  • Fragmentación de la Base de Datos: Al ser aleatorios, no son "ordenables". Insertarlos en un índice B-Tree (como los de PostgreSQL o MySQL) causa "divisiones de página", lo que lleva a una degradación masiva del rendimiento a medida que la base de datos crece.
  • Sin Significado: No hay ninguna información codificada en el propio ID.

El Futuro: UUID v7 (Ordenado por Tiempo)

UUID v7 se introdujo para resolver el "problema de la aleatoriedad" en las bases de datos. Reemplaza los bits aleatorios al principio del identificador con una marca de tiempo Unix (en milisegundos).

Pros:

  • Eficiencia de la Base de Datos: Debido a que la marca de tiempo está al principio, los identificadores v7 son monótonamente crecientes. Esto significa que se insertan al "final" de un índice de base de datos, evitando la fragmentación y manteniendo rápido el rendimiento de inserción incluso con miles de millones de filas.
  • Ordenabilidad: Puedes ordenar tus registros por su clave primaria para obtener un orden cronológico aproximado sin necesidad de una columna created_at separada.
  • Precisión de Sub-milisegundo: Incluye bits para una mayor precisión y datos aleatorios para garantizar la unicidad incluso para IDs generados en el mismo milisegundo.

Contras:

  • Filtración de Información: Cualquiera que vea el ID puede saber exactamente cuándo fue generado. No uses v7 para secretos o tokens sensibles.

Comparación Directa

Característica UUID v4 UUID v7
Base de Generación 100% Aleatorio Marca de tiempo + Aleatorio
Ordenable No
Rendimiento de BD Pobre para tablas grandes Excelente
Riesgo de Colisión Insignificante Insignificante

¿Cuándo usar cuál?

La elección suele depender de dónde se utilizará el ID:

  • Usa UUID v7 para claves primarias de bases de datos, sistemas de registro (logging) y cualquier dato transaccional de alta escritura donde el rendimiento sea importante.
  • Usa UUID v4 para tokens de seguridad, enlaces de restablecimiento de contraseña o identificadores internos donde revelar la hora de creación podría ser un riesgo de seguridad.

Conclusión

Si bien UUID v4 nos sirvió bien durante años, UUID v7 es claramente la opción superior para el diseño de bases de datos modernas. Combina la unicidad global de un UUID con la eficiencia de almacenamiento de un entero autoincremental tradicional. A medida que más librerías y bases de datos (como PostgreSQL 17+) agregan soporte nativo para v7, está destinado a convertirse en el nuevo estándar de la industria.