3 pontos por GN⁺ 2024-08-27 | 1 comentários | Compartilhar no WhatsApp
  • As várias versões de UUID

    • UUID Version 1 (v1): gerado a partir de timestamp, contador monotônico e endereço MAC
    • UUID Version 2 (v2): reservado para IDs de segurança. Não se sabe muito sobre os detalhes
    • UUID Version 3 (v3): gerado a partir do hash MD5 dos dados fornecidos. DNS e URL são sugeridos como dados candidatos
    • UUID Version 4 (v4): gerado a partir de dados completamente aleatórios. É o UUID que a maioria das pessoas imagina
    • UUID Version 5 (v5): gerado a partir do hash SHA1 dos dados fornecidos. Assim como no v3, DNS e URL são sugeridos como dados candidatos
    • UUID Version 6 (v6): gerado a partir de timestamp, contador monotônico e endereço MAC. Usa os mesmos dados do v1, mas com a ordem alterada para permitir ordenação por momento de criação
    • UUID Version 7 (v7): gerado a partir de timestamp e dados aleatórios
    • UUID Version 8 (v8): totalmente personalizável pelo usuário (exceto pelos campos obrigatórios de versão/variante)
  • Quando usar

    • v4: use quando precisar de um ID aleatório. É uma boa escolha padrão
    • v7: use quando precisar de ordenação. Por exemplo, é adequado para uso como chave de banco de dados
    • v5 ou v8: use quando quiser incluir dados exclusivos no UUID. Você vai saber quando precisar disso
  • Explicação sobre as outras versões

    • v7 é uma versão melhorada de v1 e v6, então, sempre que possível, é melhor usar v7. Por isso, v1 e v6 normalmente não são usados
    • v2 é reservado para usos relacionados à segurança. Se você estiver usando, provavelmente não poderá saber os detalhes
    • v3 foi substituído por v5. O v5 usa um hash mais forte

Resumo do GN⁺

  • UUID tem várias versões, e cada uma foi projetada para um uso específico
  • v4 e v7 são as mais usadas de forma geral, enquanto v5 e v8 são usados quando há requisitos específicos de dados
  • A escolha da versão de UUID depende do objetivo de uso: se precisar de ordenação, v7 é uma boa opção; se precisar de um ID aleatório, v4 é indicado
  • Entender as diferentes versões de UUID ajuda a escolher o UUID mais adequado para o seu projeto

1 comentários

 
GN⁺ 2024-08-27
Comentários do Hacker News
  • O UUID Version 2 (v2) é reservado para IDs de segurança, e não há muitos detalhes bem conhecidos sobre ele

    • Isso acontece porque o documento RFC foi redigido de forma ambígua
    • É possível obter mais informações consultando a documentação do Open Group
    • Também existe o UUID de "versão 0", e ele ajudou depois a tornar outras versões compatíveis
    • Os resultados da pesquisa podem ser vistos no GitHub
  • Os detalhes do UUID v2 podem ser encontrados facilmente no documento RFC 9562

    • Ele é definido como parte do DCE, e é possível ver os detalhes clicando no link relacionado
    • Clicar no link é importante
  • O timestamp do UUID v7 é útil no Databend para encontrar arquivos de metadados rapidamente

    • Isso melhora bastante a velocidade de trabalho no AWS S3
    • O PR relacionado pode ser visto no GitHub
  • Seria bom se houvesse um padrão para UUIDs curtos

    • Ex.: 73WakrfVbNJBaAmhQtEeDv ou bK7nP9xM
    • Há necessidade de IDs curtos e fáceis de memorizar
  • É difícil entender o propósito do UUID2

    • Só me deparei com UUID2 ao solicitar a exclusão de dados pessoais na Xandr
    • Mesmo lendo a página da Wikipedia, é difícil entender por que são necessários vários tipos de UUID
    • Fico em dúvida se a mistura com código MAC aumenta a aleatoriedade do UUID2, ou se existe outro motivo
    • Para privacidade, usando identificadores bem longos, dá para usar UUIDs que não se duplicam
  • O UUID v4 é simplesmente um gerador de bytes aleatórios

    • Seria mais eficiente gerar bytes aleatórios sem hífens, informação de versão etc.
  • É melhor não usar versões baseadas em MAC

    • Em teoria, isso vale para todas as versões exceto v4 e v7
    • O v1 em especial é o pior, e o MD5 do v3 também é muito vulnerável
  • Um UUID que use dados SHA256 e um contador pode ser útil

    • Ele poderia ser usado como um identificador que protege a privacidade de forma semelhante ao PBKDF2
  • É melhor usar v7

    • Especialistas em segurança podem discordar
  • Foi uma leitura interessante

    • Dá para aprender algo novo todos os dias