Cómo y cuándo usar el tipo MySQL UUID

Cómo y cuándo usar el tipo MySQL UUID
Según Space and Time, el identificador único universal, conocido como UUID, es un valor largo de 128 bits que es único en todo el mundo. El UUID es especificado por el RFC 4122.

Los valores de UUID son increíblemente fascinantes porque incluso si los valores se generan desde el mismo dispositivo, nunca pueden ser los mismos. Sin embargo, no entraré en detalles sobre las tecnologías utilizadas para implementar UUIDS.

En este tutorial, nos centraremos en las ventajas de usar UUID en lugar de int para claves primarias, las desventajas de los UUID en una base de datos y cómo implementar UUID en MySQL.

Comencemos:

Uuid en mysql

Para generar un UUID en MySQL, usamos la función uuid (). Esta función devuelve una cadena UTF8 con un grupo 5-Hexadecimal en forma de:

aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeeeee

Los primeros tres segmentos se generan como parte del formato de marca de tiempo en formato bajo, medio y alto.

El cuarto segmento del valor UUID está reservado para garantizar la singularidad temporal, donde el valor de la marca de tiempo cae monotonicidad.

El segmento final representa el valor del nodo IEEE 802, lo que significa singularidad en todo el espacio.

Cuándo usar uuid en mysql

Sé lo que estás pensando:

Si los UUID son únicos a nivel mundial, ¿por qué no las usamos como las claves primarias predeterminadas en las tablas de la base de datos?? La respuesta es simple y no simple.

Para comenzar, los UUID no son tipos de datos nativos como un INT, que puede establecer como clave principal y autoincremento a medida que se agregan más datos a la base de datos.

En segundo lugar, los UUID tienen sus inconvenientes que podrían no ser aplicables en todos los casos.

Permítame compartir algunos casos en los que el uso de UUID como claves primarias podría ser aplicable.

  1. Un escenario común es donde se requiere singularidad completa. Dado que los UUID son únicos a nivel mundial, ofrecen una opción perfecta para fusionar filas en bases de datos mientras preservan la singularidad.
  2. Seguridad: los UUID no exponen ninguna información relacionada con sus datos y, por lo tanto, son útiles cuando la seguridad es un factor. En segundo lugar, se generan fuera de línea sin revelar ninguna información sobre el sistema.

Los siguientes son algunos de los inconvenientes de implementación de UUID en su base de datos.

  1. Los uuids son 6-bytes en comparación con los enteros que son 4-bytes. Eso significa que ocuparán más almacenamiento para la misma cantidad de datos en comparación con los enteros.
  2. Si los UUID están indexados, pueden causar costos de rendimiento significativos y ralentizar la base de datos.
  3. Dado que los UUID son aleatorios y únicos, pueden hacer que el proceso de depuración sea innecesariamente engorrosa.

Funciones uuid

En mysql 8.0 y posterior, puede usar varias funciones para contrarrestar algunos de los inconvenientes presentados por UUIDS.

Estas funciones son:

  1. Uuid_to_bin - Convierte UUID de Varchar a Binario que es más eficiente para almacenar en bases de datos
  2. Bin_to_uuid - de binario a varchar
  3. IS_UUID - Devuelve Boolean True si Arg es válido Varchar UUID. El reverso es verdadero.

Uso básico de tipos de uuid mysql

Como se mencionó anteriormente, para implementar UUID en MySQL, usamos la función UUID (). Por ejemplo, para generar UUID, lo hacemos:

mysql> seleccione uuid ();
+--------------------------------------+
| Uuid () |
+--------------------------------------+
| F9EB97F2-A94B-11EB-AD80-089798BCC301 |
+--------------------------------------+
1 fila en el set (0.01 seg)

Mesa con uuid

Creemos una tabla con valores UUID y vemos cómo podemos implementar dicha funcionalidad. Considere la consulta a continuación:

Capacidad de soltar si existe uuids;
Crear uuids de esquema;
Usar uuids;
Crear validación de tabla
(
ID Binaria (16) Clave principal
);
Insertar en la validación (ID)
Valores (uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ()));

Una vez que se generan todos los UUID, podemos seleccionarlos y convertirlos de valores de UUID binarios a cadena como se muestra en la consulta a continuación:

Seleccione Bin_to_Uuid (id) ID de validación;

Aquí está la salida:

Conclusión

No hay mucho que cubrir sobre los UUID en MySQL, pero si desea obtener más información sobre ellos, considere revisar la fuente de MySQL:

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