Um UUID (Universally Unique Identifier) é um identificador de 128 bits pensado para ser único em escala global, sem coordenação central forte entre sistemas. Na internet e em bancos de dados ele aparece em URLs, chaves primárias, correlação de logs e contratos de API.

História e padrão

O formato mais conhecido veio da OSF e foi padronizado pela ISO/IEC 11578:1996 e, em paralelo, pela RFC 4122 (hoje obsoleta em favor de documentos atualizados pelo IETF, mas ainda referência de facto). A representação textual clássica usa 32 dígitos hexadecimais em cinco grupos separados por hífens: 8-4-4-4-12 (total 36 caracteres com hífens).

Versões mais usadas

  • UUID v1 — combina timestamp com identidade de “nó”. Historicamente ligado a MAC address; em ambientes modernos o “nó” pode ser outra fonte. Oferece ordenação aproximada por tempo de criação.
  • UUID v3 — determinístico: hash MD5 de um par (namespace UUID, nome). O mesmo par sempre gera o mesmo UUID (útil para idempotência, migrations e deduplicação).
  • UUID v4 — aleatório (122 bits de aleatoriedade nos bits não reservados). É a escolha padrão para chaves opacas quando você não precisa de ordenação por tempo.
  • UUID v5 — como o v3, porém com SHA-1 em vez de MD5; hoje é o mais comum para identificadores determinísticos derivados de nome.
  • UUID v6, v7, v8 — extensões mais recentes; o v7 combina timestamp em milissegundos com aleatoriedade e costuma ser excelente para chaves ordenáveis em índices B-tree sem “fragmentação” tão acentuada quanto v4 puro.

Na prática de produto, v4 e v7 são os que mais aparecem em APIs novas; v5 quando há necessidade de reproduzir o mesmo ID a partir de um nome estável.

Namespaces RFC

Para v3 e v5, a RFC define UUIDs fixos que representam namespaces como DNS, URL, OID e X.500. Isso garante que duas aplicações que escolhem o mesmo namespace e o mesmo nome textual produzam o mesmo UUID — propriedade poderosa para integrações.

Boas práticas

  1. Não use UUID como segurança — um v4 não deve ser adivinhável em espaço pequeno, mas não substitui autenticação ou tokens assinados.
  2. Índices — v4 aleatório pode degradar inserções em alguns motores; v1/v7 melhoram localidade temporal.
  3. Exposição — IDs em URLs podem vazar contagem ou estratégia; avalie se precisa de opacidade adicional (ex.: IDs internos + slugs públicos).
  4. Formato — armazene em binário (16 bytes) no banco quando possível; use string normalizada em APIs.

Experimentar

Lá você pode gerar v1, v3, v4, v5 e v7, validar strings, exportar em lote e conferir namespaces RFC sem enviar dados ao servidor.