Guía en profundidad
UUID: identificadores únicos, versiones y usos
Estructura de UUID, variant y versiones, probabilidad de colisión y criterios para identificadores distribuidos.
Qué es un UUID
Un UUID es un identificador de 128 bits diseñado para generarse sin un asignador central. La forma textual canónica usa 32 dígitos hexadecimales agrupados con guiones, pero el valor esencial sigue siendo una secuencia de 128 bits.
La unicidad no es una propiedad matemática absoluta de cada UUID. Depende del algoritmo y del dominio; el objetivo práctico es hacer las colisiones despreciables o evitarlas mediante la estructura de una versión.
Variant y campo version
Determinados bits identifican el variant y la versión, que definen la familia de layout y cómo se generaron los demás bits. Una cadena puede tener formato válido y no ser la versión admitida por un protocolo.
La validación debe distinguir formato textual, variant, versión y política de aplicación. Poder parsear un UUID no demuestra que sea apropiado para el contrato.
UUID v4 y aleatoriedad
UUID v4 dedica la mayoría de bits a aleatoriedad y reserva los necesarios para versión y variant. Con un generador criptográficamente robusto ofrece un espacio enorme y colisiones extremadamente improbables a escalas habituales.
La probabilidad aumenta con el número de identificadores según el birthday bound, pero un RNG defectuoso o una implementación no conforme suele ser un riesgo más realista.
Versiones temporales y UUID v7
Otras versiones incorporan tiempo, namespace o hash. UUID v7 coloca un timestamp Unix en milisegundos en la zona más significativa y lo combina con bits aleatorios, facilitando orden temporal.
Los ID ordenables por tiempo pueden mejorar la locality de índices, pero exponen información temporal y no sustituyen el orden de negocio. La versión debe elegirse por requisitos.
Bases de datos, API y confianza
Los UUID son útiles como claves públicas porque no necesitan una secuencia global y son menos previsibles que enteros incrementales. A cambio pueden ocupar más en índices, caches y payloads textuales.
Un UUID no es un token de autorización. Conocer un identificador nunca debe conceder acceso por sí solo; autenticación y permisos siguen siendo controles independientes.
Buenas prácticas
Usa tipos UUID o binarios nativos cuando sea posible, normaliza la representación en los límites y valida la versión esperada cuando el contrato lo exija. Evita generadores aleatorios improvisados.
Define si el identificador es estable, público, reutilizable y significativo entre entornos. Elegir un ID forma parte del modelo de datos y merece una política explícita.