Gere Identificadores Únicos Universais (UUIDs) para várias aplicações. Crie tanto UUIDs da versão 1 (baseados em tempo) quanto UUIDs da versão 4 (aleatórios) para uso em sistemas distribuídos, bancos de dados e mais.
Um Identificador Único Universal (UUID) é um número de 128 bits usado para identificar informações em sistemas de computador. Os UUIDs são padronizados pela Open Software Foundation (OSF) como parte do Ambiente de Computação Distribuída (DCE). Esses identificadores são projetados para serem únicos tanto no espaço quanto no tempo, tornando-os ideais para várias aplicações em sistemas distribuídos e além.
Esta ferramenta geradora de UUID permite que você crie tanto UUIDs da versão 1 (baseados em tempo) quanto da versão 4 (aleatórios). Esses identificadores são úteis em vários cenários onde identificação única é necessária, como chaves de banco de dados, sistemas distribuídos e protocolos de rede.
Um UUID é tipicamente representado como 32 dígitos hexadecimais, exibidos em cinco grupos separados por hífens, na forma 8-4-4-4-12, totalizando 36 caracteres (32 caracteres alfanuméricos e 4 hífens). Por exemplo:
1550e8400-e29b-41d4-a716-446655440000
2
Os 128 bits de um UUID são divididos em campos específicos, cada um carregando informações diferentes dependendo da versão do UUID:
Aqui está um diagrama ilustrando a estrutura do UUID:
Existem várias versões de UUIDs, cada uma com seu próprio método de geração:
Esta ferramenta foca na geração de UUIDs da Versão 1 e da Versão 4.
UUIDs da versão 1 são gerados usando os seguintes componentes:
A fórmula para gerar um UUID da Versão 1 pode ser expressa como:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
UUIDs da versão 4 são gerados usando um gerador de números aleatórios criptograficamente forte. A fórmula é simplesmente:
1UUID = random_128_bit_number
2
Com bits específicos definidos para indicar a versão (4) e a variante.
Os UUIDs têm inúmeras aplicações em vários domínios da ciência da computação e engenharia de software:
Chaves de Banco de Dados: UUIDs são frequentemente usados como chaves primárias em bancos de dados, especialmente em sistemas distribuídos onde múltiplos nós podem estar gerando registros simultaneamente.
Sistemas Distribuídos: Em sistemas distribuídos de grande escala, UUIDs ajudam a identificar de forma única recursos, transações ou eventos em múltiplos nós ou data centers.
Endereçamento de Conteúdo: UUIDs podem ser usados para criar identificadores únicos para conteúdo em sistemas de armazenamento endereçados por conteúdo.
Gerenciamento de Sessões: Aplicações web frequentemente usam UUIDs para gerenciar sessões de usuários, garantindo que cada sessão tenha um identificador único.
Identificação de Dispositivos IoT: Em aplicações da Internet das Coisas (IoT), UUIDs podem ser usados para identificar de forma única dispositivos individuais em uma rede.
Embora os UUIDs sejam amplamente utilizados, existem abordagens alternativas para gerar identificadores únicos:
IDs auto-incrementais: Simples e comumente usados em sistemas de banco de dados únicos, mas não adequados para ambientes distribuídos.
IDs baseados em timestamp: Podem ser úteis para dados ordenados por tempo, mas podem enfrentar problemas de colisão em cenários de alta concorrência.
IDs Snowflake: Desenvolvidos pelo Twitter, esses IDs combinam timestamp e número do trabalhador para gerar IDs únicos em sistemas distribuídos.
ULID (Identificador Universal Unicamente Lexicograficamente Ordenável): Uma alternativa mais recente que visa ser mais amigável e ordenável do que os UUIDs.
O conceito de UUIDs foi introduzido pela primeira vez no Sistema de Computação em Rede Apollo e posteriormente padronizado pela Open Software Foundation (OSF) como parte do Ambiente de Computação Distribuída (DCE) na década de 1990. A especificação inicial foi publicada em 1997 como ISO/IEC 11578:1996 e posteriormente revisada em 2005 como parte do ISO/IEC 9834-8:2005.
Principais marcos na história do UUID:
Com o tempo, os UUIDs se tornaram uma ferramenta essencial em sistemas distribuídos e design de banco de dados, com várias implementações e adaptações em diferentes linguagens de programação e plataformas.
Aqui estão exemplos de geração de UUIDs em várias linguagens de programação:
1import uuid
2
3## Gerar um UUID da Versão 4 (aleatório)
4random_uuid = uuid.uuid4()
5print(f"UUID da Versão 4: {random_uuid}")
6
7## Gerar um UUID da Versão 1 (baseado em tempo)
8time_based_uuid = uuid.uuid1()
9print(f"UUID da Versão 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Gerar um UUID da Versão 4 (aleatório)
4const randomUuid = uuidv4();
5console.log(`UUID da Versão 4: ${randomUuid}`);
6
7// Gerar um UUID da Versão 1 (baseado em tempo)
8const timeBasedUuid = uuidv1();
9console.log(`UUID da Versão 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Gerar um UUID da Versão 4 (aleatório)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID da Versão 4: " + randomUuid);
8
9 // Gerar um UUID da Versão 1 (baseado em tempo)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID da Versão 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Gerar um UUID da Versão 4 (aleatório)
4random_uuid = SecureRandom.uuid
5puts "UUID da Versão 4: #{random_uuid}"
6
7## Ruby não tem um método embutido para UUIDs da Versão 1
8## Você precisaria usar uma gem como 'uuidtools' para isso
9
1<?php
2// Gerar um UUID da Versão 4 (aleatório)
3$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "UUID da Versão 4: " . $randomUuid . "\n";
11
12// PHP não tem um método embutido para UUIDs da Versão 1
13// Você precisaria usar uma biblioteca como 'ramsey/uuid' para isso
14?>
15
Descubra mais ferramentas que podem ser úteis para o seu fluxo de trabalho