1001Ferramentas
🆔Geradores

Gerador de UUID v7

Gere UUIDs versão 7 — UUIDs ordenáveis por tempo (timestamp 48-bit em ms + random). Ideal para chaves primárias em banco. Tudo no navegador.

UUID v7: o UUID ordenado por tempo

O UUID versão 7 foi padronizado na RFC 9562 em maio de 2024, sucessora da RFC 4122. Mantém os mesmos 128 bits e o tradicional layout hexadecimal 8-4-4-4-12 do UUID v4, mas a primeira metade do valor não é mais aleatória — ela carrega um carimbo de tempo Unix em milissegundos, então IDs novos ordenam depois dos antigos.

Layout de bits

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           unix_ts_ms                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          unix_ts_ms           |  ver  |       rand_a          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

São 48 bits de unix_ts_ms, 4 bits de versão (0111 = 7), 12 bits de rand_a (aleatoriedade ou entropia sub-milissegundo), 2 bits de variante e 62 bits de rand_b. Entropia total após o timestamp: 74 bits aleatórios — bastante resistente a colisões.

Por que usar v7 em vez de v4

UUIDs aleatórios espalham as escritas pelo índice inteiro, então cada insert atinge uma página fria. UUIDs ordenados por tempo são acrescentados na folha mais à direita — menos page splits, melhor localidade de cache, menos volume de WAL. Benchmarks publicados no Postgres mostram inserts de v7 cerca de 40% mais rápidos que v4 em tabelas com dezenas de milhões de linhas. Debugging também fica mais fácil: dá para ler a hora de criação direto do prefixo.

A família UUID

  • v1 — timestamp + endereço MAC. Vaza identidade de hardware.
  • v3 / v5 — determinísticos, derivados de namespace + nome (MD5 / SHA-1).
  • v4 — aleatório. Padrão dominante antes do v7.
  • v6 — v1 reordenado para ordenação lexicográfica.
  • v7 — timestamp em ms + aleatoriedade. Recomendado para IDs novos.
  • v8 — layout totalmente customizado, definido pelo fornecedor.

Cuidado com clock skew

Em sistemas distribuídos, dois nós gerando no mesmo milissegundo podem produzir IDs muito próximos mas não estritamente monotônicos. A RFC 9562 sugere duas mitigações: manter um contador monotônico por processo, ou preencher rand_a com entropia sub-milissegundo para que colisões dentro do mesmo tick ainda sejam resolvidas pela ordenação.

Perguntas frequentes

Posso migrar de v4 para v7 na mesma coluna? Sim — ambos são UUIDs de 128 bits e compartilham o mesmo formato em wire. O tipo uuid do PostgreSQL aceita os dois sem nenhuma alteração.

v7 é globalmente único? Sim, com probabilidade altíssima. Os 74 bits aleatórios tornam colisões dentro do mesmo milissegundo astronomicamente raras.

Dá para recuperar o timestamp? Sim — pegue os 12 primeiros dígitos hexadecimais, leia como inteiro de 48 bits, e interprete como milissegundos Unix.

Gere UUIDs v7 ordenáveis por tempo

Para quem trabalha com banco de dados, o UUID v7 é o sucessor natural do identificador único. Ele guarda um timestamp logo no início, e por isso os IDs já saem ordenados pela ordem de criação. Esta ferramenta gera UUIDs v7 válidos sob demanda.

A vantagem sobre o v4, que é totalmente aleatório, salta aos olhos no uso como chave primária. Como o v7 cresce em sequência no tempo, os índices do banco ficam muito mais enxutos, sem aquele espalhamento que o v4 provoca. Você junta a unicidade do UUID com a ordenação de um autoincremento.

A geração se apoia na aleatoriedade do navegador e roda localmente, sem mandar identificador nenhum para servidores. Gere um único ou vários de uma vez e copie na sequência.

Ferramentas Relacionadas