Saltar al contenido
toolzom

UUID v4 o v7: ¿cuál deberías usar?

Publicado

Durante años, la versión 4 fue la opción por defecto para los UUID. El RFC 9562, publicado en 2024, estandarizó la versión 7, que empieza con una marca de tiempo. Te explicamos qué cambia y cuál encaja en tu caso.

Dos formas de crear un identificador único

Ambas versiones son identificadores de 128 bits escritos como 32 dígitos hexadecimales, como 0193c4a0-7e2b-7c3d-9f1e-5a6b7c8d9e0f. Se diferencian en lo que contienen esos bits.

  • La versión 4 es casi totalmente aleatoria: 122 bits aleatorios, más 6 bits que indican la versión y la variante.
  • La versión 7 empieza con una marca de tiempo Unix de 48 bits en milisegundos, seguida de 74 bits aleatorios. Por eso, los primeros caracteres van creciendo con el tiempo.

Puedes generar ambas, y comprobar la versión de cualquier UUID, con el generador de UUID.

Por qué v7 es mejor para las bases de datos

La mayoría de bases de datos guardan las claves primarias en un índice de árbol B, que funciona mejor cuando las claves nuevas llegan en orden. Las claves v4 aleatorias caen en cualquier punto del índice, así que cada inserción toca páginas dispersas, el índice se fragmenta y la caché pierde eficacia a medida que crecen las tablas.

Las claves v7 se crean en orden creciente, así que las filas nuevas se añaden cerca del final del índice, de forma parecida a un número autoincremental. Conservas las ventajas de los UUID, como generar identificadores en cualquier servidor sin coordinación, y evitas la mayor parte del coste de rendimiento.

Además, ordenar por un identificador v7 equivale aproximadamente a ordenar por fecha de creación, y puedes leer el momento de creación directamente en el identificador.

Cuándo sigue siendo mejor v4

La marca de tiempo de v7 es visible para cualquiera que vea el identificador. En la mayoría de registros no importa, pero puede revelar información: cuándo se creó una cuenta o a qué ritmo llegan los pedidos.

  • Usa v4 en identificadores públicos cuando el momento de creación sea un dato sensible.
  • Usa v4 cuando los identificadores no deban revelar en qué orden se crearon las cosas.
  • Usa v4 cuando el sistema que los guarda no gana nada con el orden, como un almacén clave-valor.

Para qué no sirve ninguna de las dos

Un UUID es un identificador, no un secreto. Aunque v4 se genere con aleatoriedad segura, no uses UUID como contraseñas, claves de API ni tokens para restablecer contraseñas: suelen quedar en los registros, se comparten y su formato es predecible. Para eso, usa un generador de tokens aleatorios específico.

Guía rápida para decidir

  • Claves primarias en una base de datos relacional: v7.
  • Identificadores de eventos y registros que quieras ordenar por tiempo: v7.
  • Identificadores públicos que no deban mostrar cuándo se crearon: v4.
  • Sistemas existentes que ya usan v4: mantén v4 salvo que el rendimiento del índice sea un problema real.

Herramientas que se usan en esta guía