UUID vs IDs auto-incremento em bancos de dados
Compare UUIDs e IDs sequenciais para APIs públicas, sistemas distribuídos, índices e fluxos de depuração.
Escolher entre UUID e ID auto-incremento não é só preferência de banco. Afeta URLs públicas, importação de dados, sharding, localidade de índice e como desenvolvedores depuram registros.
As duas opções são válidas. A melhor depende de onde o identificador circula.
IDs auto-incremento são simples e compactos
IDs sequenciais são fáceis de ler, eficientes em índice e agradáveis em sistemas internos:
42é fácil de digitar.- Índices permanecem compactos.
- Linhas novas costumam ficar próximas umas das outras.
- Ordenar por ID muitas vezes aproxima a ordem de criação.
Para um único banco servindo app interno, auto-incremento costuma bastar.
UUIDs são melhores para criação distribuída
UUIDs brilham quando registros podem nascer fora de um banco central:
- Clientes offline criam IDs antes de sincronizar.
- Vários serviços geram IDs de forma independente.
- Importações evitam colisões.
- URLs públicas não revelam contagem de linhas.
- Eventos carregam IDs estáveis entre sistemas.
Um Gerador de UUID ajuda em fixtures, exemplos de API ou scripts de migração.
IDs públicos e internos podem divergir
Muitos sistemas usam ambos:
- Chave primária numérica interna para joins.
- UUID ou slug público em URLs e referências de API.
Isso mantém operações de banco simples e evita identificadores públicos previsíveis.
Trade-offs de índice
UUIDs aleatórios reduzem localidade de índice porque valores novos não agrupam naturalmente. Em tabelas com muita escrita, isso pode importar.
Opções:
- UUID público com chave primária numérica interna.
- Formatos ordenados por tempo quando precisa de IDs distribuídos e localidade.
- Medir antes de otimizar se a carga de escrita ainda é baixa.
Trade-offs de depuração
IDs sequenciais são mais fáceis de falar em chat e logs. UUIDs são mais difíceis de errar ao digitar, mas mais difíceis de escanear.
Em ferramentas operacionais, torne IDs copiáveis, pesquisáveis e bem rotulados. A estratégia de identificador não deve dificultar suporte.
Regra prática
Use auto-incremento quando os dados são internos, centralizados e sensíveis a desempenho. Use UUID quando IDs cruzam fronteiras de serviço, aparecem em URLs públicas ou precisam existir antes de chegar ao banco.
Quando as duas necessidades existem, use as duas de forma intencional.