Use
uuid
. O PostgreSQL tem o tipo nativo por um motivo. Ele armazena o uuid internamente como um campo binário de 128 bits. Suas outras opções propostas o armazenam como hexadecimal, o que é muito ineficiente em comparação.
Não só isso, mas:
-
uuid
faz uma classificação bytewise simples para ordenação.text
,char
evarchar
considere agrupamentos e localidades, o que não faz sentido para um uuid.
-
Existe apenas uma representação canônica de umuuid
. O mesmo não é verdade para texto etc; você deve considerar hexadecimal maiúsculo vs minúsculo, presença ou ausência de{...-...}
s etc.
Não há dúvida. Use
uuid
. O único outro tipo que faz sentido é
bytea
, que pelo menos pode ser usado para armazenar os 16 bytes do uuid diretamente. Isso é o que eu faria se estivesse usando sistemas que não pudessem lidar com tipos de dados fora do conjunto básico, como algum tipo de ORM realmente estúpido.