Este site é traduzido automaticamente para vários idiomas usando software desenvolvido por Kohei Koyanagi. Consulte o original em inglês para maior precisão.

Abordagem de Identificadores Duais do Splync: UUID e Inteiro Auto-Incrementado

Splync Usa Dois Identificadores para IDs Sensíveis

No banco de dados do Splync, cada usuário — e cada projeto — é identificado por dois IDs diferentes: um UUID e um inteiro auto-incrementado. O inteiro auto-incrementado é aquele com o qual a maioria está familiarizada — é apenas um contador: 1, 2, 3 e assim por diante. O Splync usa esses inteiros dentro do banco de dados do servidor para organizar quase todas as tabelas porque são simples, rápidos e eficientes para junções. No entanto, nunca expomos esses números internos para o aplicativo. Por exemplo, se você fosse o 42º usuário a se inscrever, seu ID interno no banco de dados seria 42. Mas seu aplicativo iOS nunca vê "42". Em vez disso, o app usa um UUID para representá-lo. Aplicamos a mesma abordagem aos projetos — um ID de projeto pode ser "7" dentro do banco de dados, mas o app sempre se refere a ele usando um UUID longo.

O Que É um UUID

UUID significa Identificador Universalmente Único. O Splync usa UUIDs da versão 4, variante 1, em conformidade com o RFC 4122 — um dos padrões mais amplamente adotados. É uma string gerada aleatoriamente, que se parece com 949ca11c-a6ed-48a3-b40a-fa9727494917. Um UUID é geralmente escrito como 32 caracteres hexadecimais divididos em cinco seções separadas por hifens. É projetado para ser globalmente único, o que significa que não haverá colisão mesmo entre diferentes servidores ou bancos de dados. Matematicamente, há cerca de 16^32 = 2^128 combinações possíveis. No entanto, como seis bits são reservados para indicar a variante e a versão, o número total de UUIDs distintos da versão 4, variante 1, é aproximadamente 2^122, ou cerca de 5,3 x 10^36 — um número astronomicamente grande que garante singularidade prática.

Quão Pequeno É 1 / 5.300.000.000.000.000.000.000.000.000.000.000.000

Cada par de UUIDv4 tem cerca de 1 em 5,3 × 10^36 chance de coincidir. Esse número é tão pequeno que quase nem existe na imaginação humana. Para visualizar, imagine jogar 47 dados de uma vez. As chances de obter todos uns — cada dado mostrando "1" — são cerca de 1 em 6^47, ou aproximadamente 1 em 3,7 × 10^36. Essa é a mesma ordem de magnitude de uma colisão de UUID. Agora, imagine cada pessoa na Terra — cerca de oito bilhões de nós — jogando esses 47 dados a cada milissegundo durante um trilhão de anos. São cerca de 2,5 × 10^32 tentativas totais. Mesmo depois de tudo isso, a chance de alguém, em algum lugar, obter 47 uns de uma vez seria de apenas uma em dez mil. É assim que é improvável que dois UUIDv4s colidam. Não é "raro". É cosmicamente absurdo — o tipo de coincidência que faria matemáticos derrubarem seu café e verificarem o universo para ver se há erros.

É Fácil Gerar um UUID

À primeira vista, gerar um UUID pode parecer simples — afinal, é apenas uma string alfanumérica que parece aleatória. Mas tente escrever um você mesmo com caneta e papel. Você pode anotar 36 caracteres, claro, mas se repetir o exercício milhares de vezes, padrões claros surgirão. Talvez você prefira certos dígitos como 3 ou 8 e raramente use letras como x. Um computador pode detectar esses viéses instantaneamente. Um hacker malicioso poderia analisar seus hábitos e restringir sua string "aleatória" secreta em um dia. Então, e se você também recorrer a um computador e chamar rand(), a clássica função aleatória, para gerar cada dígito. Isso é melhor — mas não é bom o suficiente. Muitos geradores de números "aleatórios" em ambientes de programação comuns são pseudoaleatórios, o que significa que seguem uma sequência matemática previsível a partir de uma semente interna, que normalmente é baseada no tempo do sistema. Se alguém descobrir ou adivinhar essa semente, poderá reproduzir todos os valores que seu gerador já produziu.

Quão Perfeitamente Aleatório É um UUID

A aleatoriedade perfeita realmente não existe — assim como um dado perfeito não existe, ou uma jogada de dados perfeitamente aleatória não existe. Todo processo físico ou digital segue algumas regras subjacentes. Ainda assim, matemáticos e engenheiros passaram décadas projetando algoritmos que chegam o mais próximo possível da verdadeira aleatoriedade. Quando o Splync cria um novo UUID versão 4, não simplesmente "escolhe números aleatoriamente" como lançar dados. Ele pede ao sistema operacional por minúsculos traços de imprevisibilidade — por exemplo, o momento exato em que seu processador termina uma tarefa, ruído elétrico fraco dentro do hardware ou flutuações de tempo de fundo na memória. Esses fragmentos de entropia são coletados e misturados em 128 bits de dados — uma longa sequência de uns e zeros. O resultado é um código que é praticamente impossível de adivinhar ou repetir para os usuários do app ou atacantes maliciosos potenciais.

Abordagem de Identificadores Duais do Splync

O Splync usa UUIDs para identificadores sensíveis, como IDs de usuários e de projetos, porque eles são extremamente aleatórios e seguros. Ao mesmo tempo, dentro de seu servidor, o Splync converte esses UUIDs em inteiros auto-incrementados para buscas e análises mais rápidas em grandes conjuntos de dados. Esta abordagem de identificadores duais equilibra segurança e conveniência — privacidade externa com desempenho interno. O objetivo do Splync é ser um app de controle de orçamento sem estresse, simples e seguro. Por trás da interface visível, continuamos refinando nossa arquitetura para manter tudo fluido, seguro e discretamente inteligente.