Los UUID están por todas partes: en bases de datos modernas, APIs, sistemas distribuidos, blockchain, frameworks como Laravel, Spring o Django, e incluso en documentos y dispositivos móviles.

Si has visto identificadores como:


550e8400-e29b-41d4-a716-446655440000

…has visto un UUID en acción.

Pero ¿qué son realmente? ¿Por qué tantas empresas han dejado de usar IDs autoincrementales? ¿Qué ventajas y desventajas tienen? Aquí te lo explico de manera clara, moderna y con ejemplos que puedes aplicar hoy mismo.


Qué es un UUID (explicación clara)

Un UUID (Universally Unique Identifier) es un identificador de 128 bits diseñado para ser único en todo el universo sin necesidad de una base de datos central.

En otras palabras:

Cualquier sistema puede generar un UUID sin riesgo real de colisión.

Esto permite que múltiples servidores, microservicios o dispositivos creen registros sin coordinarse entre sí.

Ejemplo de UUID real


4e12fa06-5f7b-4e2f-94c8-22dfb3d8d61d

Formatos más usados: UUID v1, v4 y v7

UUID v1 (con marca de tiempo)

Incluye timestamp y MAC del dispositivo. Prácticamente no se usa hoy por razones de privacidad.

UUID v4 (aleatorio)

El más común actualmente. Generado a partir de números aleatorios criptográficamente seguros.

UUID v7 (secuencial basado en timestamp)

El nuevo estándar recomendado desde 2023–2024. Combina:

Muchos sistemas modernos ya están migrando a UUIDv7.


UUID vs Autoincremental (tabla comparativa responsive)

Característica UUID ID Autoincremental
Unicidad global No (solo dentro de la tabla)
Generación distribuida Sí, no necesita servidor central No, depende de la base de datos
Orden natural Solo UUIDv7
Riesgo de fuga de datos No expone volumen ni secuencia Alta exposición (ID incremental revela datos)
Colisiones Prácticamente nulas Ninguna dentro de la BD
Rendimiento UUIDv4: medio · UUIDv7: alto Muy alto
Uso recomendado Sistemas distribuidos, APIs, microservicios Aplicaciones sencillas en un solo servidor

Ejemplos reales generando UUID

JavaScript


crypto.randomUUID();

Python


import uuid
uuid.uuid4()

PostgreSQL


SELECT gen_random_uuid();

MySQL


SELECT UUID();

Ventajas reales de usar UUID

1. Escalabilidad horizontal inmediata

Cualquier servidor puede generar IDs únicos sin preguntar a la base de datos.

2. Seguridad: no filtra cuántos usuarios tienes

Un ID incremental como 15234 expone volúmenes internos de datos.

Un UUID no revela nada.

3. Ideal para APIs públicas

Nunca quieres exponer IDs autoincrementales en rutas como:


GET /usuarios/15123

Con UUID:


GET /usuarios/6b4f85c8-34c2-4cdf-9e24-d50c998fd718

Mucho más seguro.

4. Perfecto para sistemas distribuidos o microservicios

Cada servicio puede generar sus propios IDs sin colisión ni coordinación.


Desventajas (y cómo mitigarlas)

1. Rendimiento inferior en índices (UUIDv4)

UUIDv4 es completamente aleatorio → hace saltar páginas en disco → más lento.

Solución: usa UUIDv7

Está diseñado para ordenarse cronológicamente → índice mucho más rápido.

2. Ocupan más espacio

UUID → 128 bits INT → 32 bits BIGINT → 64 bits

El tradeoff es aceptable en sistemas modernos.


UUIDv7: la nueva generación recomendada

UUIDv7 será el estándar de facto en pocos años. Combina:

Ejemplo de UUIDv7 generado:


019f90e4-e8c7-7f52-9e8c-935d7ed8a1bf

Ejemplo práctico de uso en Base de Datos

PostgreSQL


CREATE EXTENSION IF NOT EXISTS "pgcrypto";

CREATE TABLE usuarios (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    nombre TEXT NOT NULL
);

MySQL


CREATE TABLE usuarios (
    id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
    nombre VARCHAR(255)
);

API Example


POST /api/v1/usuarios
{
    "id": "019f90e4-e8c7-7f52-9e8c-935d7ed8a1bf",
    "nombre": "Laura"
}

¿UUID o autoincrement? Decisión final

Elige UUID si:

Elige autoincrement si:


Convierte, limpia y valida UUIDs fácilmente

Nuestras herramientas te permiten manipular texto, JSON y datos estructurados sin errores ni caracteres ocultos.

Abrir JSON Formatter