Volver al blog Abrir Generador de UUID
18 de marzo de 2026Developer
Versiones de UUID: v1, v4, v7 y Rendimiento de Bases de Datos
Conoce las diferentes versiones de UUID — v1, v4 y v7 — su estructura, ventajas y desventajas, y cómo cada una impacta la indexación de bases de datos, el rendimiento de consultas y los sistemas distribuidos.
Un Identificador Único Universal (UUID) es una etiqueta de 128 bits utilizada en el desarrollo de software para identificar información sin una autoridad central. El formato más común es de 36 caracteres separados por guiones. Aunque el concepto parece simple, la forma en que se genera un UUID tiene profundas implicaciones para el rendimiento de las bases de datos, la seguridad y el diseño de sistemas. Comprender las diferencias entre las versiones de UUID no es académico: afecta directamente la velocidad de las consultas y la escalabilidad de sistemas distribuidos.
La versión 1 genera identificadores usando una combinación de marca temporal y dirección MAC de la máquina que los crea. Como la marca temporal es monótona, los UUID v1 se pueden ordenar por tiempo — útil cuando necesitas iterar registros en orden de inserción. Sin embargo, v1 expone metadatos sensibles del sistema: la dirección MAC puede revelar qué máquina generó el identificador, y la marca temporal expone cuándo se creó el registro. En entornos con requisitos de seguridad o privacidad, esto es una desventaja significativa. Además, v1 requiere una fuente de reloj sincronizada para evitar colisiones en configuraciones distribuidas.
La versión 4 resuelve estos problemas basándose enteramente en la generación de números aleatorios criptográficamente fuerte. De los 128 bits, 6 están fijos para los campos de versión y variante, dejando 122 bits de aleatoriedad. Esto produce aproximadamente 5,3 × 10^36 valores posibles — haciendo las colisiones accidentales tan improbables que pueden ignorarse de forma segura en cualquier aplicación práctica. La ausencia de marcas temporales o datos específicos de hardware significa que los UUID v4 no llevan metadatos y no requieren coordinación entre nodos, lo que los convierte en el estándar para la mayoría de sistemas distribuidos modernos.
El compromiso con v4 es el rendimiento. Como cada UUID generado es efectivamente aleatorio, insertarlos en un índice B-tree (el predeterminado para claves primarias en la mayoría de bases de datos) causa máxima fragmentación de páginas. Los B-trees funcionan manteniendo los datos ordenados; cuando insertas un valor aleatorio, la base de datos debe dividir páginas frecuentemente para hacer espacio, lo que lleva a mala localidad en disco, mayor write amplification y degradación del rendimiento de lectura con el tiempo. Para cargas de trabajo con muchas escrituras, esto puede causar inflamación del índice y ralentización de consultas significativamente.
La versión 7 se introdujo para abordar los problemas de rendimiento de v4 manteniendo sus beneficios de privacidad. v7 codifica una marca temporal Unix en los bits más significativos, seguida de datos aleatorios. Como la marca temporal cambia monótonamente, los UUID v7 son ordenables por tiempo y muestran B-tree friendliness similar a v1, sin exponer direcciones MAC ni requerir relojes sincronizados. La mayoría de bases de datos pueden añadir valores v7 eficientemente al lado derecho del índice B-tree, minimizando divisiones de página y preservando la localidad en disco.
Elegir la versión correcta de UUID depende finalmente del caso de uso. Para tokens de sesión, IDs de correlación e identificadores únicos donde el orden no importa, v4 sigue siendo la opción más segura y ampliamente soportada. Para claves primarias en sistemas con alta carga de escritura, v7 (o ULID, una alternativa similar ordenable por tiempo) ofrecerán mejor rendimiento. Si necesitas orden temporal estricto entre nodos sin sincronización externa de relojes, v7 o v1 son viables, aunque v7 es preferible por su entropía y ausencia de dependencia de hardware.
La generación masiva de UUIDs es esencial para poblar bases de datos de prueba, entornos staging y generar fixtures para pruebas de carga. Generar 1000 UUID v4 del lado del cliente toma solo milisegundos, y los navegadores modernos proporcionan aleatoriedad criptográficamente fuerte a través de
crypto.getRandomValues(), asegurando que incluso los lotes generados masivamente cumplan con los mismos estándares de entropía. La consideración clave al generar UUIDs en masa es el formato de salida: algunos sistemas esperan valores separados por guiones para legibilidad, mientras otros requieren cadenas compactas sin guiones para almacenamiento o procesamiento eficiente.