Volver al blog

UUID v4 vs IDs secuenciales: qué elegir para una API

5 de enero de 2026 · Herramienta relacionada: uuid-generator

Al diseñar una API con Postgres o MySQL, la pregunta "¿clave autoincremental o UUID?" llega antes o después. Esta es la comparación real con la que decidimos en DevUtils.

UUID v4 (aleatorio)

  • Ventajas: no revela volumen de negocio ni orden; se genera en el cliente sin round-trip; imposible de adivinar por fuerza bruta (122 bits de entropía).
  • Inconvenientes: índices con páginas dispersas en b-trees (menos densidad de caché); 36 caracteres de texto.

UUID v1 (basado en tiempo)

  • Ventajas: orden temporal aproximado, útil para "event sourcing" o particionado por fecha.
  • Inconvenientes: revela la fecha y (según implementación) el nodo que lo generó. Vulnerable a adivinación si usas un nodo fijo.

IDs secuenciales

  • Ventajas: índices compactos y rápidos, fácil debugging, URLs limpias (/users/42).
  • Inconvenientes: enumerables — cualquiera puede barrer tu recurso; requieren el servidor para generarse; un bug de concurrencia los puede clonar.

Recomendación práctica

  • Usa UUID v4 como clave primaria por defecto.
  • Genera los UUID en el servidor si quieres ocultar orden, o en el cliente si buscas latencia cero.
  • Para tablas de eventos, valoras v1; para catálogos internos, una secuencia está dentro de lo razonable.
  • SIEMPRE guarda el UUID como uuid en la base de datos, no como varchar, y úsalo como claves de caché.

Puedes generar cuantos necesites con nuestro generador de UUID (v4 y v1, con o sin guiones) y validar cualquier lista con el validador antes de commitearla.