Voltar à página principal
quarta-feira 19 fevereiro 2025
52

Como Trabalhar com UUID no PostgreSQL

Ao projetarmos bancos de dados, a escolha do tipo de chave primária é fundamental. Embora os inteiros sequenciais sejam a opção mais comum, muitas vezes precisamos de um identificador mais seguro, único em nível global e difícil de adivinhar. É aqui que entram os UUIDs (Universally Unique Identifier), que oferecem uma solução robusta para gerar identificadores únicos em sistemas distribuídos.

O que é um UUID?

Um UUID (Identificador Universalmente Único) é um número de 128 bits usado para identificar de forma única informações em um sistema distribuído. Ele é definido no padrão RFC 4122 e representado como uma cadeia de texto hexadecimal dividida em cinco grupos separados por hifens, como este:

550e8400-e29b-41d4-a716-446655440000

Um UUID tem as seguintes vantagens:

  • Unicidade: Os UUIDs são únicos em nível global, tornando-os ideais para sistemas distribuídos ou onde os dados vêm de múltiplas fontes.
  • Dificuldade de previsão: Ao contrário das chaves autoincrementais, os UUIDs não seguem um padrão previsível, o que pode melhorar a segurança em algumas aplicações.

Tipos de UUID

Existem vários tipos de UUID, sendo os mais comuns:

  • UUID versão 1: Baseado no timestamp e no endereço MAC da máquina.
  • UUID versão 4: Baseado em valores aleatórios, sendo o mais utilizado para garantir unicidade sem depender da máquina onde é gerado.

Configuração do UUID no PostgreSQL

Para trabalhar com UUIDs no PostgreSQL, precisamos habilitar uma extensão especial que facilita seu uso. A seguir, explicamos como configurá-la e utilizá-la passo a passo.

Passo 1: Criar um Banco de Dados PostgreSQL

Primeiro, certifique-se de ter acesso a um banco de dados PostgreSQL. Você pode criar um novo banco de dados, se necessário:

CREATE DATABASE meu_banco_de_dados;

Depois, conecte-se ao banco de dados:

psql -d meu_banco_de_dados

Passo 2: Habilitar a Extensão uuid-ossp

Para gerar UUIDs dentro do PostgreSQL, é necessário habilitar a extensão uuid-ossp. Esta extensão fornece funções para criar UUIDs diretamente em consultas SQL.

Execute o seguinte comando para habilitar a extensão:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Passo 3: Criar uma Tabela com UUID como Chave Primária

Com a extensão habilitada, podemos utilizar o tipo de dado UUID em nossas tabelas. Aqui está um exemplo de como criar uma tabela com um campo UUID como chave primária:

CREATE TABLE usuarios (
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
    nome VARCHAR(100),
    email VARCHAR(100)
);

Neste exemplo:

  • id é o campo do tipo UUID, que serve como chave primária.
  • A função uuid_generate_v4() gera automaticamente um UUID da versão 4 (baseado em valores aleatórios) sempre que um novo registro é inserido.

Gerar UUIDs no PostgreSQL

O PostgreSQL oferece várias funções para gerar UUIDs de diferentes versões. Essas funções estão disponíveis na extensão uuid-ossp:

  • uuid_generate_v1(): Gera um UUID baseado no timestamp e no endereço MAC.
  • uuid_generate_v4(): Gera um UUID aleatório, sendo o mais utilizado para garantir unicidade sem dependência de hardware.
  • uuid_generate_v5(namespace, name): Gera um UUID baseado em um nome e um namespace, útil para garantir unicidade dentro de um contexto específico.

Exemplo: Inserir Dados em uma Tabela com UUIDs

Agora, vejamos como inserir registros na tabela usuarios que criamos anteriormente:

INSERT INTO usuarios (nome, email)
VALUES ('João Silva', 'joao.silva@email.com');

O campo id será preenchido automaticamente com um UUID gerado pela função uuid_generate_v4().

Consultar Dados com UUID

Os UUIDs funcionam como qualquer outro tipo de dado nas consultas SQL. Aqui estão alguns exemplos de uso:

Selecionar Registros

Para selecionar todos os registros da tabela usuarios:

SELECT * FROM usuarios;

Filtrar por UUID

Para selecionar um registro específico por seu UUID:

SELECT * FROM usuarios WHERE id = '550e8400-e29b-41d4-a716-446655440000';

Atualizar um Registro

Se desejar atualizar um registro baseado no UUID:

UPDATE usuarios
SET nome = 'João Carlos Silva'
WHERE id = '550e8400-e29b-41d4-a716-446655440000';

Excluir um Registro

Para excluir um registro por UUID:

DELETE FROM usuarios
WHERE id = '550e8400-e29b-41d4-a716-446655440000';

Conclusão

O uso de UUID no PostgreSQL é uma excelente opção para sistemas que requerem identificadores únicos e distribuídos. Com a extensão uuid-ossp, o PostgreSQL torna a geração e gestão de UUIDs simples e eficiente. No entanto, é importante considerar as desvantagens em termos de desempenho e armazenamento e avaliar se o uso de UUIDs é a melhor solução para o seu projeto.

Com este guia, você está pronto para começar a usar UUIDs no PostgreSQL. Se trabalha com sistemas distribuídos, eles são uma ferramenta inestimável para garantir a unicidade e integridade dos dados.

Compartilhar:
Criado por:
Author photo

Jorge García

Fullstack developer