Buscar en la documentación

ADR-0010: ULID público y BIGINT interno

ULID público y BIGINT interno

1 min de lecturaVer en GitHub
  • Estado: Aceptada. El formato del código legible cambió en el ADR-0074
  • Fecha: 2026-10-31

Contexto

Los identificadores deben ser eficientes para los JOIN, no revelar información en la URL y mantenerse estables entre entornos, para facilitar migraciones e integraciones.

Alternativas evaluadas

  • Solo un id autoincremental.
  • Solo UUID o ULID como clave primaria.
  • BIGINT como clave interna, más un ULID público.

Decisión

  • users e incidents: un BIGINT como clave primaria interna, más una columna ulid única e inmutable. La API expone solo el ULID.
  • Incidentes: además, un código legible para las personas (hoy TZ-26-0142; ver el ADR-0074).
  • Catálogos: usan su code como clave natural.

Alternativas descartadas

  • Solo autoincremental: expone ids secuenciales que se pueden adivinar, y que cambian entre entornos.
  • ULID como clave primaria: índices más grandes y JOIN más costosos en las tablas de mayor volumen.

Consecuencias

  • La API no permite enumerar recursos. La autorización la siguen garantizando las Policies.
  • Cualquier registro se puede mapear entre entornos por su ULID o su código.