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.