Publicado em

- 1 minuto de leitura

Utilizando guid em dotnet

img of Utilizando guid em dotnet

Quando estamos desenhando um banco de dados nos vem o seguinte problema, nas nossas chaves primárias vamos usar o que, muitos sistemas utilizando a abordagem de um UUID que é um identificador universal único, projetado para não haver colisão, ou seja não existir o mesmo id.

Mas o que é um guid?

Guid é uma implementação deste identificador, temos guids em varios locais, como documentos, contas e etc

Como usar Guid em dotnet?

A plataforma dotnet já tem uma implementação pronta e simples para a utilização, basta utilizar

      Guid.NewGuid()
Imagem com o texto: Curso testes automatizado com Angular e um Robo azul com uma logo do Angular atrás. Logo abaixo existe um botão com o texto 'Eu quero!'

Qual o problema causado pela linha anterior ?

Aparentemente não vemos os problemas, mas é no detalhes que eles se escondem, começamos a popular nosso banco de dados, como cada guid é gerado de forma aleatória, criamos um problema de busca e ordernação no banco de dados.

Mas como resolver este problema

  • Podemos usar a biblioteca SecurityDriven.FastGuid
  • Podemos usar a biblioteca Cysharp/Ulid
  • Ou a implementação do Guid na versão 7, está versão utilizando o timestamp atual para geração do guid
      Guid.CreateVersion7()

Conclusão

Percebemos que dependendo da nossa abordagem ou passamos um carga excessiva para o banco de dados, fazendo o mesmo ficar lento ao manipular os registros, essa abordagem da utlização do guid em sua versão 7 está disponível somente na versão 9 do dotnet, caso queria utilizar id’s aleatorios, sugiro a utilização das libs citadas.

Referências

https://betterexplained.com/articles/the-quick-guide-to-guids/ https://learn.microsoft.com/en-us/dotnet/api/system.guid?view=net-9.0 https://github.com/Cysharp/Ulid https://github.com/sdrapkin/SecurityDriven.FastGuid

Assine nossa Newsletter

Receba novos posts como esse na sua caixa de e-mail!

Sobre o autor

Author's photo
Moisés Bueno Back-End Developer | .NET | C# | Sql Server |