Nous utilisons UUID comme clé primaire pour out oracle DB et essayons de déterminer une longueur de caractère maximale appropriée pour le VARCHAR. Apparemment, il s'agit de 36 caractères, mais nous avons remarqué des UUID générés qui sont plus longs que cela - jusqu'à 60 caractères de longueur. Quelqu'un connaît-il une longueur de caractères maximale appropriée pour l'UUID?
primary-key
uuid
user1753862
la source
la source
VARCHAR
s?Réponses:
La section 3 de la RFC4122 fournit la définition formelle des représentations sous forme de chaîne UUID. C'est 36 caractères (32 chiffres hexadécimaux + 4 tirets).
On dirait que vous devez déterminer d'où proviennent les ID non valides de 60 caractères et décider 1) si vous voulez les accepter, et 2) quelle peut être la longueur maximale de ces ID en fonction de l'API utilisée pour les générer.
la source
C'est le type parfait de champ à définir comme CHAR 36, d'ailleurs, pas VARCHAR 36, puisque chaque valeur aura exactement la même longueur. Et vous utiliserez moins d'espace de stockage, car vous n'avez pas besoin de stocker la longueur des données pour chaque valeur, juste la valeur.
la source
[0-9A-Fa-f-]
qui est de 23 octets distincts en ASCII.De nos jours, la plupart des bases de données ont un type UUID natif pour faciliter leur utilisation. Si ce n'est pas le cas, ce ne sont que des nombres de 128 bits, vous pouvez donc utiliser BINARY (16), et si vous avez besoin du format de texte fréquemment, par exemple pour le dépannage, ajoutez une colonne calculée pour la générer automatiquement à partir de la colonne binaire . Il n'y a aucune bonne raison de stocker le formulaire de texte (beaucoup plus grand).
la source