UUID vs IDs auto-incrementales en bases de datos
Compara UUID e IDs auto-incrementales para APIs públicas, sistemas distribuidos, índices de base de datos y flujos de depuración.
Elegir entre UUID e IDs auto-incrementales no es solo una preferencia de base de datos. Afecta URLs públicas, importaciones de datos, sharding, localidad de índices y cómo depuran los desarrolladores los registros.
Ambas opciones son válidas. La mejor depende de dónde viaja el identificador.
Los IDs auto-incrementales son simples y compactos
Los IDs secuenciales son fáciles de leer, eficientes de indexar y agradables en sistemas internos:
42es fácil de escribir.- Los índices de base de datos se mantienen compactos.
- Las filas nuevas suelen quedar cerca unas de otras.
- Ordenar por ID suele aproximar el orden de creación.
Para una sola base de datos que sirve una app interna, los IDs auto-incrementales suelen bastar.
Los UUID brillan con creación distribuida
Los UUID destacan cuando los registros pueden crearse fuera de una base de datos central:
- Clientes offline pueden crear IDs antes de sincronizar.
- Varios servicios pueden generar IDs de forma independiente.
- Las importaciones pueden evitar colisiones.
- Las URLs públicas no revelan el conteo de filas.
- Los eventos pueden llevar IDs estables entre sistemas.
Un UUID Generator es útil cuando necesitas valores de prueba para fixtures, ejemplos de API o scripts de migración.
Los IDs públicos e internos pueden diferir
Muchos sistemas usan ambos:
- Clave primaria numérica interna para joins en base de datos.
- UUID o slug público para URLs y referencias de API.
Así las operaciones de base de datos se mantienen simples y se evitan identificadores públicos predecibles.
Compensaciones de índices
Los UUID aleatorios pueden reducir la localidad del índice porque los valores nuevos no se agrupan de forma natural. En tablas muy intensivas en escritura, esto puede importar.
Opciones:
- Mantener UUID como IDs públicos pero claves primarias numéricas internas.
- Usar formatos de ID ordenados por tiempo cuando el sistema necesite IDs distribuidos y localidad de índice.
- Medir antes de optimizar si la tabla no tiene carga de escritura alta.
Compensaciones en depuración
Los IDs secuenciales son más fáciles de decir en chat y logs. Los UUID son más difíciles de tipear mal pero más difíciles de escanear.
Para tooling operacional, haz los IDs copiables, buscables y claramente etiquetados. La estrategia de identificadores no debería complicar el trabajo de soporte más de lo necesario.
Regla práctica de decisión
Usa IDs auto-incrementales cuando los datos son internos, centralizados y sensibles al rendimiento. Usa UUID cuando los IDs cruzan límites de servicio, aparecen en URLs públicas o deben generarse antes de llegar a la base de datos.
Cuando existen ambas necesidades, usa ambos de forma intencional.