Brug uuid
. PostgreSQL har den oprindelige type af en grund.
Den gemmer uuid internt som et 128-bit binært felt. Dine andre foreslåede muligheder gemmer den som hexadecimal, hvilket er meget ineffektivt i sammenligning.
Ikke kun det, men:
-
uuid
udfører en simpel bytemæssig sortering til bestilling.text
,char
ogvarchar
overveje sammenstillinger og lokaliteter, hvilket er useriøst for en uuid. -
Der er kun én kanonisk repræsentation af en
uuid
. Det samme gælder ikke for tekst osv.; du skal overveje store versus små bogstaver hex, tilstedeværelse eller fravær af{...-...}
s osv.
Der er bare ingen tvivl. Brug uuid
.
Den eneste anden type, der giver nogen mening, er bytea
, som i det mindste kan bruges til at gemme de 16 bytes af uuid direkte. Dette er, hvad jeg ville gøre, hvis jeg brugte systemer, der ikke kunne klare datatyper uden for det grundlæggende sæt, som en virkelig dum ORM af en slags.