UUID v4 vs UUID v7 — ¿Cuál deberías usar?
UUID v7, estandarizado en RFC 9562 (mayo de 2024), resuelve la principal debilidad de UUID v4: el mal rendimiento de los índices de base de datos.
UUID v4 (aleatorio)
UUID v4 utiliza 122 bits aleatorios y 6 bits fijos. Esto garantiza la unicidad sin coordinación, pero produce identificadores dispersos aleatoriamente en el tiempo. Cuando se usa como clave primaria B-tree en una base de datos, los identificadores aleatorios provocan divisiones de páginas y fragmentación de índices, degradando el rendimiento de escritura.
UUID v7 (ordenado por tiempo)
UUID v7 utiliza una marca de tiempo Unix de 48 bits en milisegundos seguida de bits aleatorios. El prefijo de marca de tiempo hace que los UUID sean ordenables naturalmente por tiempo de creación, resolviendo el problema de la fragmentación B-tree. Las claves siguen siendo globalmente únicas y pueden generarse sin coordinación.
Comparación
| | UUID v4 | UUID v7 | |---|---------|---------| | Estándar | RFC 9562 | RFC 9562 | | Ordenable | No | Sí (por tiempo) | | Rendimiento en BD | Malo | Bueno | | Único | Sí | Sí | | Filtra marca de tiempo | No | Sí (precisión de milisegundos) |
Recomendación: Usa UUID v7 para claves primarias de base de datos y UUID v4 cuando explícitamente no quieras revelar el tiempo de creación. Prueba ambos en nuestro generador de UUID.