Comment et quand utiliser le type uuid mysql

Comment et quand utiliser le type uuid mysql
Selon l'espace et le temps, l'identifiant unique universel, connu sous le nom de UUID, est une valeur longue de 128 bits qui est unique à travers le monde. L'UUID est spécifié par le RFC 4122.

Les valeurs UUID sont incroyablement fascinantes car même si les valeurs sont générées à partir du même appareil, elles ne peuvent jamais être les mêmes. Cependant, je ne vais pas entrer dans les détails des technologies utilisées pour mettre en œuvre des UUID.

Dans ce tutoriel, nous nous concentrerons sur les avantages de l'utilisation des UUIDs au lieu de INT pour les clés primaires, les inconvénients des UUID dans une base de données et comment implémenter des UUID dans MySQL.

Commençons:

Uuid dans mysql

Pour générer un UUID dans MySQL, nous utilisons la fonction UUID (). Cette fonction renvoie une chaîne UTF8 avec un groupe 5-hexadécimal sous la forme de:

aaaaaaaaa-bbbb-cccc-ddd--eeeeeeeeeee

Les trois premiers segments sont générés dans le format horodat.

Le quatrième segment de la valeur UUID est réservé pour assurer l'unicité temporaire, où la valeur horodatote baisse la monotonie.

Le segment final représente la valeur du nœud IEEE 802, signifiant l'unicité dans l'espace.

Quand utiliser UUID dans MySQL

Je sais ce que tu penses:

Si les UUID sont uniques à l'échelle mondiale, pourquoi ne les utilisons-nous pas comme les clés principales par défaut dans les tables de base de données? La réponse est à la fois simple et pas simple.

Pour commencer, les UUID ne sont pas des types de données natifs tels qu'un INT, que vous pouvez définir en tant que clé principale et auto-incrément à mesure que davantage de données sont ajoutées à la base de données.

Deuxièmement, les Uuids ont leurs inconvénients qui pourraient ne pas être applicables dans tous les cas.

Permettez-moi de partager quelques cas où l'utilisation des Uuids comme clés principales peut être applicable.

  1. Un scénario commun est l'endroit où le caractère unique est requis. Étant donné que les UUID sont uniques à l'échelle mondiale, ils offrent une option parfaite pour fusionner les lignes dans les bases de données tout en préservant le caractère unique.
  2. Sécurité - Les UUID n'exposent aucune information liée à vos données et sont donc utiles lorsque la sécurité est un facteur. Deuxièmement, ils sont générés hors ligne sans révéler aucune information sur le système.

Voici quelques-uns des inconvénients de la mise en œuvre des UUID dans votre base de données.

  1. Les uuides sont 6 octets par rapport aux entiers qui sont de 4 octets. Cela signifie qu'ils occuperont plus de stockage pour la même quantité de données par rapport aux entiers.
  2. Si les UUID sont indexés, ils peuvent entraîner des coûts de performance significatifs et ralentir la base de données.
  3. Étant donné que les Uuids sont aléatoires et uniques, ils peuvent rendre le processus de débogage inutilement lourd.

Fonctions UUID

Dans Mysql 8.0 et plus tard, vous pouvez utiliser diverses fonctions pour contrer certains des inconvénients présentés par UUIDS.

Ces fonctions sont:

  1. UUID_TO_BIN - Convertit UUID de Varchar au binaire qui est plus efficace pour le stockage dans les bases de données
  2. Bin_to_uuid - du binaire à varchar
  3. IS_UUID - Renvoie Boolean True si Arg est valide Varchar Uuid. L'inverse est vrai.

Utilisation des types de base de MySql UUID

Comme mentionné précédemment, pour implémenter UUID dans MySQL, nous utilisons la fonction UUID (). Par exemple, pour générer UUID, nous faisons:

mysql> select uuid ();
+--------------------------------------+
| UUID () |
+--------------------------------------+
| F9EB97F2-A94B-11EB-AD80-089798BCC301 |
+--------------------------------------+
1 ligne en jeu (0.01 SEC)

Table avec uuid

Créons un tableau avec des valeurs UUID et voyons comment nous pouvons implémenter de telles fonctionnalités. Considérez la requête ci-dessous:

Drop schéma si existe des uuids;
Créer des uuids de schéma;
Utiliser des uuids;
Créer la validation du tableau
(
id binaire (16) Clé primaire
));
Insérer dans la validation (ID)
VALEUR (UUID_TO_BIN (UUID ())),
(UUID_TO_BIN (UUID ())),
(UUID_TO_BIN (UUID ())),
(UUID_TO_BIN (UUID ())),
(UUID_TO_BIN (UUID ()));

Une fois tous les Uuids générés, nous pouvons les sélectionner et les convertir des valeurs binaires en chaîne UUID comme indiqué dans la requête ci-dessous:

Sélectionnez BIN_TO_UUID (ID) ID From Validation;

Voici la sortie:

Conclusion

Il n'y a pas grand-chose à couvrir sur les UUID dans MySQL, mais si vous souhaitez en savoir plus à leur sujet, envisagez de consulter la source MySQL:

https: // dev.mysql.com / doc /