Gebruik uuid
. PostgreSQL heeft niet voor niets het native type.
Het slaat de uuid intern op als een 128-bits binair veld. Je andere voorgestelde opties slaan het op als hexadecimaal, wat erg inefficiënt is in vergelijking.
Niet alleen dat, maar:
-
uuid
doet een eenvoudige bytewise-sortering voor het bestellen.text
,char
envarchar
overweeg sorteringen en landinstellingen, wat onzinnig is voor een uuid. -
Er is slechts één canonieke weergave van een
uuid
. Hetzelfde geldt niet voor tekst enz.; u moet rekening houden met hoofdletters versus kleine letters, de aanwezigheid of afwezigheid van{...-...}
s enz.
Er is gewoon geen vraag. Gebruik uuid
.
Het enige andere type dat enige zin heeft, is bytea
, die in ieder geval kan worden gebruikt om de 16 bytes van de uuid direct op te slaan. Dit is wat ik zou doen als ik systemen zou gebruiken die niet kunnen omgaan met datatypes buiten de basisset, zoals een echt domme ORM van een soort.