Gerar identificadores únicos é uma necessidade comum em aplicações de banco de dados. No PostgreSQL, o tipo de dado UUID (identificador único universal) oferece uma forma simples de fazer isso. Neste artigo, vamos ver como gerar UUIDs no PostgreSQL, discutir por que e quando usá-los e mostrar exemplos de código com a saída esperada.
O que é um UUID?
UUID significa Universally Unique Identifier (identificador único universal), um número de 128 bits usado para identificar informações de forma única em sistemas computacionais. A principal vantagem dos UUIDs é fornecer uma chave única entre diferentes plataformas e bancos de dados sem necessidade de coordenação.
Por que usar UUIDs?
- Unicidade entre sistemas: diferente dos IDs seriais tradicionais, UUIDs podem ser gerados de forma independente em sistemas diferentes.
- Difíceis de adivinhar: UUIDs não são sequenciais, o que os torna menos previsíveis.
- Únicos globalmente: eles garantem unicidade global, evitando colisões de IDs ao mesclar conjuntos de dados.
Gerando UUIDs no PostgreSQL
O PostgreSQL facilita a geração de UUIDs com seu suporte nativo, mas é preciso habilitar extensões adicionais.
Passo 1: habilite a extensão uuid-ossp
A extensão uuid-ossp fornece funções para gerar UUIDs. Você precisa habilitar essa extensão no seu banco de dados.
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Passo 2: usando uuid_generate_v4()
A função mais usada para gerar UUIDs aleatórios é uuid_generate_v4(). Veja como usá-la:
SELECT uuid_generate_v4() as generated_uuid;
Saída esperada:
generated_uuid
--------------------------------------
550e8400-e29b-41d4-a716-446655440000
Cada execução da função retorna um UUID novo e único.
Passo 3: usando UUIDs em tabelas
Você pode usar UUIDs como chaves primárias ou identificadores únicos nas suas tabelas. Uma boa prática é definir o tipo da coluna como UUID e fornecer um valor padrão usando a função uuid_generate_v4().
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
username VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
Inserindo dados:
Você pode contar com o PostgreSQL para gerar UUIDs automaticamente ao inserir novos registros.
INSERT INTO users (username, email) VALUES ('johndoe', 'john@example.com');
SELECT id, username, email FROM users;
Saída esperada:
id | username | email
-----------------------------------+----------+-------------------
8df00d7f-6d5d-45e8-bd9c-8c5f29e6e0a7 | johndoe | john@example.com
Métodos alternativos de geração de UUID
uuid_generate_v1()
Gera um UUID com base no timestamp atual e no endereço MAC. É determinístico e menos seguro, mas pode ser útil em alguns cenários.
SELECT uuid_generate_v1() as generated_uuid;
Saída esperada:
generated_uuid
--------------------------------------
6a7fede0-e1e3-11ed-b5ea-0242ac120002
uuid_generate_v1mc()
Semelhante a uuid_generate_v1(), mas permite especificar um endereço MAC.
uuid_generate_v3(namespace UUID, name TEXT)
Gera um UUID versão 3 com base em um namespace e um nome, usando hash MD5.
uuid_generate_v5(namespace UUID, name TEXT)
Semelhante a uuid_generate_v3(), mas usa hash SHA-1, criando um UUID versão 5.
Conclusão
A funcionalidade de UUID do PostgreSQL oferece uma forma robusta e flexível de gerar identificadores únicos para suas aplicações de banco de dados. Com UUIDs, você garante que seus IDs sejam únicos, imprevisíveis e consistentes entre diferentes sistemas. Seja criando uma nova aplicação ou migrando uma existente, os UUIDs oferecem uma abordagem moderna para a geração de IDs.
Com a extensão uuid-ossp e sua variedade de funções, o PostgreSQL facilita a escolha do tipo de UUID mais adequado às suas necessidades. Comece a usar UUIDs no seu banco de dados hoje e aproveite a unicidade global que eles oferecem.
Beekeeper Studio é um cliente de banco de dados gratuito e open source
A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit
O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários dizem sobre o Beekeeper Studio
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com banco de dados agradável de novo."
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."