PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

UUID ou SEQUENCE para chave primária?


Uma sequence no PostgreSQL faz exatamente o mesmo que AUTOINCREMENT em MySQL. Uma sequence é mais eficiente que um uuid porque tem 8 bytes em vez de 16 para o uuid . Você pode usar um uuid como chave primária, assim como a maioria dos outros tipos de dados.

No entanto, não vejo como isso se relaciona ao mascaramento de um ID de usuário. Se você quiser mascarar o ID de um determinado usuário de outros usuários, você deve gerenciar cuidadosamente os privilégios da tabela e/ou fazer o hash do ID usando - por exemplo - md5() .

Se você deseja proteger uma tabela com dados do usuário de hackers bisbilhoteiros que estão tentando adivinhar outros IDs, então o uuid tipo é uma excelente escolha. Pacote uuid-ossp tem vários sabores. A versão 4 é então a melhor escolha, pois possui 122 bits aleatórios (os outros 6 são usados ​​para identificação da versão). Você pode criar uma chave primária assim:
id uuid PRIMARY KEY DEFAULT uuid_generate_v4()

e então você nunca mais terá que se preocupar com isso.

PostgreSQL 13+

Agora você pode usar a função interna gen_random_uuid() para obter um UUID aleatório da versão 4.