RunToolz iconRunToolz
Welcome to RunToolz!
UUIDBases de DatosDiseño de API

UUIDs: Cuando Auto-Incremento No Es Suficiente

Por qué los identificadores únicos importan y cuándo usarlos en lugar de IDs secuenciales.

RunToolz Team15 de enero de 20263 min read

Tu base de datos usa IDs auto-incrementables. 1, 2, 3, 4... Simple.

Luego fusionas dos bases de datos. O expones IDs en URLs. O alguien descubre que pueden adivinar datos de otros usuarios incrementando el ID en la URL.

Los IDs secuenciales tienen problemas. Los UUIDs resuelven algunos de ellos.

¿Qué es un UUID?

Universally Unique Identifier (Identificador Universalmente Único). Un número de 128 bits, típicamente mostrado como 32 caracteres hexadecimales con guiones:

550e8400-e29b-41d4-a716-446655440000

La matemática detrás de la generación de UUID hace las colisiones astronómicamente improbables. Puedes generar UUIDs en diferentes máquinas, en diferentes momentos, sin coordinación, y no colisionarán.

¿Quieres probarlo tú mismo?Generar UUID

¿Por Qué No Solo Usar Auto-Incremento?

Seguridad. Los IDs secuenciales filtran información. Si tu ID de usuario es 15847, los atacantes saben que hay al menos 15846 otros usuarios. Pueden enumerar recursos probando IDs secuenciales.

Sistemas distribuidos. Múltiples servidores generando IDs necesitan coordinación para evitar duplicados. Los UUIDs no necesitan coordinación.

Fusionar datos. Combinar bases de datos con IDs secuenciales es una pesadilla. Los UUIDs se fusionan limpiamente.

Creación offline. Las aplicaciones móviles pueden crear registros offline con UUIDs. No necesitan esperar por un ID asignado por el servidor.

Versiones de UUID

No todos los UUIDs se crean de la misma manera.

Versión 1: Basado en timestamp y dirección MAC. Único, pero revela cuándo y dónde fue creado.

Versión 4: Aleatorio. Más común. Sin filtración de información.

Versión 7: Basado en timestamp pero ordenable. Las bases de datos más nuevas se benefician de esto.

Para la mayoría de usos, versión 4 (aleatorio) es la elección correcta.

Los Compromisos

Los UUIDs no son gratis.

Tamaño. 128 bits vs 32 bits para un entero. Índices más grandes, más almacenamiento.

Legibilidad. usuario/15 es más fácil de recordar que usuario/550e8400-e29b-41d4-a716-446655440000.

Rendimiento. Los UUIDs aleatorios causan fragmentación de índice en algunas bases de datos. UUID v7 aborda esto.

Depuración. Buscar un UUID en logs es tedioso comparado con números simples.

Cuándo Usar Qué

Usa auto-incremento cuando:

  • Solo interno, nunca expuesto a usuarios
  • Aplicaciones simples, base de datos única
  • La legibilidad humana importa

Usa UUIDs cuando:

  • Los IDs aparecen en URLs o APIs
  • Múltiples sistemas crean registros
  • La seguridad por oscuridad ayuda
  • Fusionar datos es posible

Consejos Prácticos

No uses UUIDs como claves primarias en MySQL. Úsalos como columna única secundaria en su lugar. Los índices agrupados de MySQL rinden mal con UUIDs aleatorios.

Considera UUID v7. Si tu base de datos lo soporta, los UUIDs ordenables por timestamp te dan lo mejor de ambos mundos.

Elimina guiones para URLs. 550e8400e29b41d4a716446655440000 sigue siendo un UUID válido y más corto en URLs.


Los UUIDs resuelven problemas reales que los IDs secuenciales no pueden. Pero no siempre son la elección correcta. Elige según tus requisitos reales, no porque los UUIDs suenen más profesionales.