Como e quando usar o tipo MySQL Uuid

Como e quando usar o tipo MySQL Uuid
De acordo com o Space and Time, o Universal único identificador, conhecido como UUID, é um valor longo de 128 bits que é único em todo o mundo. O UUID é especificado pelo RFC 4122.

Os valores UUID são incrivelmente fascinantes porque, mesmo que os valores sejam gerados a partir do mesmo dispositivo, eles nunca podem ser os mesmos. No entanto, não vou entrar em detalhes sobre as tecnologias usadas para implementar Uuids.

Neste tutorial, nos concentraremos nas vantagens de usar UUIDs em vez de INT para chaves primárias, as desvantagens dos UUIDs em um banco de dados e como implementar UUIDs em MySQL.

Vamos começar:

Uuid em mysql

Para gerar um UUID em MySQL, usamos a função uuid (). Esta função retorna uma string utf8 com um grupo 5-hexadecimal na forma de:

aaaaaaaa-bbbbccccc-dddd-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Os três primeiros segmentos são gerados como parte do formato de registro de data e hora no formato baixo, médio e alto.

O quarto segmento do valor UUID é reservado para garantir a singularidade temporária, onde o valor do registro de data e hora cai.

O segmento final representa o valor do nó IEEE 802, significando singularidade no espaço.

Quando usar o uuid em mysql

Eu sei o que você está pensando:

Se os uuids são únicos globalmente, por que não os usamos como as chaves primárias padrão nas tabelas de banco de dados? A resposta é simples e não simples.

Para começar, os UUIDs não são tipos de dados nativos, como um INT, que você pode definir como chave primária e incremento automático, à medida que mais dados são adicionados ao banco de dados.

Segundo, os uuids têm suas desvantagens que podem não ser aplicáveis ​​em todos os casos.

Permita -me compartilhar alguns casos em que o uso de UUIDs como chaves primárias pode ser aplicável.

  1. Um cenário comum é onde é necessária completa singularidade. Como os UUIDs são únicos globalmente, eles oferecem uma opção perfeita para mesclar linhas em bancos de dados, preservando a singularidade.
  2. Segurança - Uuids não expõem nenhuma informação relacionada aos seus dados e, portanto, são úteis quando a segurança é um fator. Segundo, eles são gerados offline sem revelar nenhuma informação sobre o sistema.

A seguir, estão algumas das desvantagens da implementação de UUIDs em seu banco de dados.

  1. Uuids são 6 bytes em comparação com números inteiros que são 4 bytes. Isso significa que eles ocuparão mais armazenamento para a mesma quantidade de dados em comparação com inteiros.
  2. Se os UUIDs forem indexados, eles podem causar custos de desempenho significativos e desacelerar o banco de dados.
  3. Como os uuids são aleatórios e únicos, eles podem tornar o processo de depuração desnecessariamente complicado.

Funções uuid

Em MySQL 8.0 e mais tarde, você pode usar várias funções para combater algumas das desvantagens apresentadas por UUIDs.

Essas funções são:

  1. Uuid_to_bin - converte Uuid de Varchar em Binário, o que é mais eficiente para armazenar em bancos de dados
  2. Bin_to_uuid - do binário a varchar
  3. Is_uuid - retorna boolean true se arg for válido varchar uuid. O inverso é verdadeiro.

Uso básico do MySQL UUID

Como mencionado anteriormente, para implementar UUIDs em MySQL, usamos a função uuid (). Por exemplo, para gerar UUID, nós fazemos:

mysql> select uuid ();
+--------------------------------------+
| Uuid () |
+--------------------------------------+
| F9EB97F2-A94B-1EB-AD80-089798BCC301 |
+--------------------------------------+
1 linha no conjunto (0.01 seg)

Mesa com uuid

Vamos criar uma tabela com valores UUID e ver como podemos implementar essa funcionalidade. Considere a consulta abaixo:

Schema de soltar se existe uuids;
Criar esquema uuids;
Use uuids;
Crie validação de tabela
(
ID Binário (16) Chave primária
);
Insira na validação (ID)
Valores (uuid_to_bin (uuid ()))),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ()));

Depois que todos os UUIDs forem gerados, podemos selecioná -los e convertê -los de valores binários para string uuid, como mostrado na consulta abaixo:

Selecione Bin_to_uuid (id) ID da validação;

Aqui está a saída:

Conclusão

Não há muito o que abordar sobre os UUIDs no MySQL, mas se você quiser saber mais sobre eles, considere verificar a fonte do MySQL:

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