Generar UUID (v1, v4, v5, v7)

genera tus UUID (Universally Unique Identifier) en v1, v4, v5 (determinista) o v7 (time-ordered), conformes con la RFC 4122

¿Por qué utilizar UUID?

Los UUID (Universally Unique Identifier) son identificadores únicos utilizados para garantizar la unicidad a través de distintos sistemas y bases de datos sin necesitar coordinación central. Se utilizan habitualmente en sistemas distribuidos y en aplicaciones web para generar identificadores únicos para los recursos.

Versiones de UUID admitidas

Esta herramienta admite las siguientes versiones de UUID:

  • Versión 1: basada en el timestamp y la dirección MAC.
  • Versión 4: generada aleatoriamente (la más utilizada).
  • Versión 5: basada en una huella SHA-1 de un namespace y un nombre (determinista: un mismo par namespace + nombre producirá siempre el mismo UUID).
  • Versión 7: ordenada temporalmente, recomendada para las claves primarias de bases de datos modernas (orden lexicográfico = orden cronológico).

UUID v5: namespace y nombre

Para generar un UUID v5, debe elegir un namespace estándar y proporcionar un nombre:

  • DNS: utilizar cuando el nombre es un nombre de dominio (por ejemplo cdrn.fr).
  • URL: utilizar cuando el nombre es una URL (por ejemplo https://cdrn.fr/).
  • OID: utilizar cuando el nombre es un identificador de objeto ISO.
  • X500: utilizar cuando el nombre es un nombre distinguido X.500.

Al ser determinista la generación, el UUID v5 es especialmente adecuado para producir identificadores reproducibles a partir de un dato estable.

Cómo generar UUID

En la página de inicio, puede generar UUID seleccionando la versión deseada en un menú desplegable y haciendo clic en el botón de generación. Para la versión 5, indique además el namespace y el nombre.

En cuanto se genere un UUID, aparecerá en una línea de resultado verde que indica que se ha generado con éxito. Si se produce un error, una línea roja mostrará el mensaje de error correspondiente.

Ejemplos de código para utilizar los UUID generados

Puede utilizar los UUID generados en sus aplicaciones integrándolos directamente en su código. Este es un ejemplo en PHP:


<?php
use Ramsey\Uuid\Uuid;

// Générer un UUID v4 (aléatoire)
$uuidV4 = Uuid::uuid4();

// Générer un UUID v5 (déterministe à partir d'un namespace et d'un nom)
$uuidV5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'cdrn.fr');

// Générer un UUID v7 (ordonnancé temporellement)
$uuidV7 = Uuid::uuid7();

echo "UUID v4 : " . $uuidV4->toString() . PHP_EOL;
echo "UUID v5 : " . $uuidV5->toString() . PHP_EOL;
echo "UUID v7 : " . $uuidV7->toString() . PHP_EOL;
?>

    

Validar y analizar los UUID

También puede validar y analizar los UUID existentes para determinar su versión y validez. Este es un ejemplo de código en PHP:


<?php
use Ramsey\Uuid\Uuid;

// Valider un UUID
$uuidString = '123e4567-e89b-12d3-a456-426614174000';
if (Uuid::isValid($uuidString)) {
    $uuid = Uuid::fromString($uuidString);
    echo "UUID valide de version : " . $uuid->getFields()->getVersion();
} else {
    echo "UUID invalide";
}
?>

    

Preguntas frecuentes

¿Qué diferencia hay entre UUID v1, v4, v5 y v7?

v1 combina un timestamp y la dirección MAC de la máquina, lo que puede revelar información sensible. v4 es puramente aleatorio (122 bits de azar), es la versión más utilizada. v5 es determinista: un mismo par namespace + nombre produce siempre el mismo UUID gracias a un hash SHA-1. v7 integra un timestamp en milisegundos al inicio del identificador, lo que lo hace ordenable cronológicamente e ideal para las claves primarias.

¿Cuál es la probabilidad de colisión de un UUID v4?

Un UUID v4 dispone de 122 bits aleatorios, es decir, unos 5,3 × 10^36 valores posibles. Para alcanzar un 50% de probabilidad de colisión (paradoja del cumpleaños), habría que generar unos 2,7 × 10^18 UUID. En la práctica, en una aplicación estándar, la probabilidad de colisión es despreciable. Es lo que permite generar identificadores en el lado del cliente sin coordinación con un servidor central.

¿Por qué preferir UUID v7 como clave primaria de base de datos?

Un UUID v4 insertado en un índice B-tree provoca una fragmentación fuerte: cada inserción cae en una posición aleatoria, lo que degrada el rendimiento y el uso de la caché. UUID v7 empieza con un timestamp en milisegundos, así que las nuevas filas se insertan siempre al final del índice. El rendimiento de inserción se aproxima entonces al de un BIGSERIAL, conservando las ventajas de un identificador universal.

¿Para qué sirven los namespaces DNS, URL, OID y X500 de UUID v5?

Esos namespaces son UUID predefinidos en la RFC 4122 que actúan como prefijo contextual para la generación determinista. DNS se usa con un nombre de dominio, URL con una URL completa, OID con un identificador ISO de objeto, X500 con un nombre distinguido LDAP. También puede definir su propio namespace privado: un UUID v4 generado una vez para su aplicación, reutilizado como raíz determinista para todos sus identificadores v5.

¿UUID o autoincremental para los identificadores en base de datos?

El autoincremental sigue siendo muy eficiente para bases monolíticas y revela voluntariamente la secuencia de escritura, lo que puede ser indeseable en una API pública. Los UUID convienen más a arquitecturas distribuidas, a la generación en el lado del cliente, a las fusiones de bases y a la exposición pública de identificadores opacos. El compromiso ideal en 2026: UUID v7 como clave primaria, que combina universalidad, opacidad razonable y buen rendimiento de índice.

¿Los UUID generados pasan por un servidor de terceros?

La generación se realiza en el entorno de cdrn.fr, sin llamada a un servicio externo. Para las versiones puramente aleatorias (v4) o temporales (v7), no se necesita ninguna información sensible como entrada. Para la v5, el namespace y el nombre que proporciona solo sirven para el cálculo SHA-1 local. Ningún identificador generado se registra; puede utilizar la herramienta para producir UUID destinados a contextos confidenciales.

Ejemplo de solicitud

curl -X POST https://cdrn.fr/api/v1/tools/uuid-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"version":"uuid_version_1","quantity":3,"namespace":"namespace_dns","name":"..."}'

Esquema de entrada

Campo Tipo Obligatorio Por defecto
version choice (uuid_version_1, uuid_version_4, uuid_version_5, uuid_version_7)
quantity integer 3
namespace choice (namespace_dns, namespace_url, namespace_oid, namespace_x500)
name string

Puntos de acceso

  • GET https://cdrn.fr/api/v1/tools - lista todas las herramientas disponibles
  • GET https://cdrn.fr/api/v1/tools/uuid-generator - recupera el esquema de esta herramienta
  • POST https://cdrn.fr/api/v1/tools/uuid-generator/execute - ejecuta esta herramienta con un payload JSON