Quando utilizar UUID e INT como chave primária (Primary Key)


A escolha entre UUIDs e inteiros como chaves primárias em bancos de dados, depende de várias aspectos sobre os requisitos do sistema e sua modelagem. A decisão entre usar inteiros ou UUIDs depende das necessidades e do tamanho da aplicação, podendo até combinar ambos para otimizar a funcionalidade.

Os UUIDs oferecem melhor escalabilidade e segurança, mas consomem mais armazenamento. Exitem algumas variantes de UUID, como UUID v4 e v7.

Prós e contras de IDs autoincrementáveis e por que considerar outras opções.

  • IDs autoincrementáveis são simples de usar, podem ser ordenados e consomem menos armazenamento.
  • No entanto, podem apresentar riscos de segurança devido à previsibilidade da sequência.
  • Outras pessoas podem adivinhar os valores dos IDs, o que pode levar a riscos de segurança em exibir ou editar dados.

UUID v4 é uma boa escolha para chave primária devido à sua escalabilidade e segurança.

  • UUID v4 é um conjunto aleatório de 122 bits com 6 bits para identificação.
  • A geração de UUID pode ser feita por aplicativos de cliente, evitando espera pelo banco de dados.
  • Facilita a fusão de bancos de dados, evitando conflitos de chave primária.
  • Consomem mais espaço de armazenamento do que inteiros e podem levar mais tempo para comparações em consultas.

O UUID v7 é semelhante ao UUID v4, mas inclui um componente de tempo no início, o que facilita a ordenação e uso em índices.

  • O UUID v7 é mais escalável e fácil de mesclar bancos de dados.
  • Difícil de adivinhar e pode ser ordenado para índices, melhorando o desempenho.
  • Consomem um pouco mais de armazenamento do que inteiros, mas isso pode não ser um problema.
  • O desempenho pode não ser tão bom quanto inteiros devido ao tamanho, mas é algo a ser medido.

O vídeo aborda o uso de colunas de identidade e UUIDs, mostrando como gerar e armazenar valores UUID no Postgres e em outros bancos de dados.

  • Colunas de identidade podem ser definidas ao criar a tabela, gerando um novo valor ao inserir uma linha.
  • No Postgres, UUIDs são armazenados como número, não texto, e podem ser gerados com a função gen_random_uuid.
  • É recomendado armazenar valores UUID em um tipo de dado binário para economizar espaço e melhorar o desempenho.
  • A escolha entre UUID e INT depende dos requisitos do projeto, tamanho da aplicação e preferências da equipe.

Referências


UUID vs INT - What’s Better For Your Primary Key?