Arquitetura Corporativa para Todos

Artigo / Post

UUID (GUID)- Algumas provocações Praticas

Tive uma reunião a algum tempo para avaliar uma solução de alta volumetria com persistência de dados; para entendimento das grandezas envolvidas, são alguns terabytes de armazenamento e algo próximo de 1 bilhão de registros.  São números significativos onde, entre outros temas relevantes e uma excelente apresentação pelo time de engenharia da épocaa escolhas de tipos de dados foram debatidas.

Um dos tipos que participaram deste discursão produtiva foi o uso de GUID como identificadores de registros. Este é um tipo recorrente em varias solução que vejo por aqui e resolvi fazer uma provocação:


Usar GUID como um identificador único **externo** e uma coisa, Usar GUID como um identificador único **interno** para representar a unicidade de dado é outra coisa!


UUID garante aleatoriedade e unicidade , características desejadas de segurança para não permitir a previsão de valores e manter um identificador único. Estas características são uteis quando precisamos expor estes identificadores para o mundo externo ou fora do domínio
de uma solução.

UUID aplicada a representar a unicidade de dado, presumindo que este dado é persistido sobre esta chave, é uma grande dor de cabeça, sabe porquê ? Como a chave não é ordenada, o banco de dados armazenar esta informação de forma não eficiente em disco, gerando uma quantidade de operações E/S em disco para encontrar o registro apropriado. Isso é custo de cpu e perda de performance (latência).

Alguns bancos de dados possuem funcionalidades para gerar uma UUID capaz de ser ordenada mas vale apena ?

  • Se acoplamento não é problema e restringir a geração somente no contexto de banco de dados então pode ser uma alternativa a ser avaliada.
    Se você desejar ter esta funcionalidade “cross” independente de contexto talvez devesse avaliar alternativas como identificadores únicos Lexicograficamente Classificáveis : ULID (https://lnkd.in/dE34e-HK)
  • Algumas de suas característicasCompatibilidade de 128 bits com UUID
  • 1.21e+24 ULIDs exclusivos por milissegundo
  • Classificável lexicograficamente!
  • Codificado canonicamente como uma sequência de 26 caracteres, em oposição ao UUID de 36 caracteres
  • Usa base32 de “Crockford” para melhor eficiência e legibilidade (5 bits por caractere)
  • Não diferencia maiúsculas de minúsculas
  • Sem caracteres especiais (URL seguro)
  • Ordem de classificação monotônica (detecta e trata corretamente o mesmo milissegundo)

Quando você escolhe trabalhar com GUIDS, quais considerações você utiliza ?


Tenham um excelente dia! Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável.

Compatilhe

0 0 votos
Avaliação Global
0 Comentários
Feedbacks embutidos
Ver todos os comentários
Categorias

Sobre o Autor

Picture of Fernando Cerqueira

Fernando Cerqueira

Eu sou Fernando Cerqueira e entrego estratégias digitais para os desafios do presente, com propostas de inovação para um futuro sustentável. Como arquiteto sênior, aproveito meus mais de 20 anos de experiência em arquitetura e desenvolvimento de software para projetar e implementar soluções baseadas em nuvem que ajudam os clientes a transformar seus negócios com tecnologia.

Outros Posts

Categorias

Adotar classes seladas em .NET por padrão é uma ótima escolha

Adotar classes seladas em .NET por padrão é uma ótima escolha. Saiba por que! Em .net todas as classes que são criadas por padrão (template), permitem herança. Esta opção padrão deixa mais flexível qualquer implementação por herança, mas sendo sincero, acredito não ser esta a melhor opção : Uma classe

Open Finance – Uma análise de estratégia digital

Conceitos Na prática é o compartilhamento de dados de clientes (pessoa física ou jurídica) e de produtos e serviços financeiros onde os clientes terão a liberdade de compartilhar o histórico financeiro. São informações como: contas que foram pagas, o tipo de cartão, limites disponíveis, empréstimos, produtos contratuais entre outros. “Open

CancellationToken – O que você precisa e deveria saber antes de usar

No mundo moderno da engenharia de software os processos , atividades e dependências ocorrem a todo o momento de forma concorrente! Falar de concorrência é ter consciência que várias tarefas são executadas simultaneamente e/ou concorrentes com os ciclos/processadores disponíveis e que estes recursos são finitos e/ou tem custos associados à

Os 13 fatores de desenvolvimento de software!

Os 13 fatores de desenvolvimento de software! Não, você não leu errado😁. São 13 mesmo, adicionei um fator extra 😮 , mas antes de falar dele, vamos relembrar os **12** fatores que ajudam a criar aplicações mais resilientes, portáveis e fáceis de gerenciar: Código Base : Uma única base de

"O foco da tecnologia deve estar em fornecer ao board e aos C-levels uma estratégia digital que direcione a empresa aos seus objetivos estratégicos, garantindo uma evolução sólida ao longo da implantação e da jornada de maturidade."

Fernando Cerqueira | Arquiteto Corporativo

Sua Reflexão

0
Adoraria saber sua opinião, comente.x