Todos os produtos
Search
Central de documentação

AnalyticDB:UUID-OSSP

Última atualização: Jun 27, 2026

A extensão uuid-ossp fornece funções para gerar identificadores universalmente únicos (UUIDs). Em sistemas distribuídos, os UUIDs oferecem garantias de unicidade mais robustas do que sequências, tornando-os uma escolha confiável para chaves primárias e identificadores de registros entre nós.

Formato UUID

Um UUID é composto por 32 dígitos hexadecimais organizados em cinco grupos separados por hífens: 8-4-4-4-12. Por exemplo:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

O PostgreSQL aceita UUIDs em vários formatos equivalentes:

Formato

Exemplo

Padrão (minúsculas)

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

Maiúsculas

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11

Com chaves

{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}

Sem hífens

a0eebc999c0b4ef8bb6d6bb9bd380a11

Hífens a cada 4 dígitos

a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11

Misto

{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}

Campos UUID não podem ser usados como chave de distribuição no AnalyticDB for PostgreSQL.

Instale a extensão

Antes de gerar UUIDs, instale a extensão uuid-ossp pela página Extensions da sua instância. Para mais detalhes, consulte Instalar, atualizar e desinstalar extensões.

Funções de geração de UUID

Versão 1: baseada em tempo

uuid_generate_v1() gera um UUID a partir do timestamp atual e do endereço MAC da máquina host.

uuid_generate_v1mc() funciona como uuid_generate_v1(), mas usa um endereço MAC multicast aleatório em vez do endereço MAC real, evitando a exposição direta do identificador de hardware da máquina.

Aviso

UUIDs da versão 1 incorporam o endereço MAC da máquina geradora e incluem um componente de tempo, o que os torna parcialmente previsíveis. Evite UUIDs da versão 1 em aplicações sensíveis à segurança.

Versão 3: baseada em nome (MD5)

uuid_generate_v3(namespace uuid, name text) gera um UUID determinístico aplicando hash sobre name dentro de namespace usando MD5.

  • namespace: uma constante retornada por uma das funções uuid_ns_*() (consulte Constantes de namespace).

  • name: um identificador dentro do namespace.

SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');

As mesmas entradas sempre produzem o mesmo UUID. Nenhum algoritmo aleatório ou ambiente de sistema é envolvido, portanto o resultado é totalmente reproduzível.

Versão 4: aleatória

uuid_generate_v4() gera um UUID baseado em números aleatórios.

Versão 5: baseada em nome (SHA-1)

uuid_generate_v5(namespace uuid, name text) funciona como uuid_generate_v3(), mas usa SHA-1 em vez de MD5. Como SHA-1 é mais seguro que MD5, prefira a versão 5 à versão 3 sempre que precisar de UUIDs baseados em nome.

Constantes de namespace

Use estas constantes como argumento namespace em uuid_generate_v3() e uuid_generate_v5().

Função

Namespace

uuid_ns_dns()

Domain Name System (DNS)

uuid_ns_url()

URL

uuid_ns_oid()

Identificador de objeto ISO (OID) — definido pelo padrão Abstract Syntax Notation One (ASN.1); diferente dos OIDs do PostgreSQL

uuid_ns_x500()

Nome distinto X.500 (DN)

uuid_nil() retorna uma constante UUID nula, que não é um UUID real.

Exemplos

-- Version 1 (time-based)
SELECT uuid_generate_v1();
 uuid_generate_v1
--------------------------------------
 c7f83ba4-bd93-11e9-8674-40a8f01ec4e8
(1 row)
-- Version 3 (name-based, MD5)
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
 uuid_generate_v3
--------------------------------------
 a0473a67-27a1-3c05-a2d1-5c134639347f
(1 row)
-- Version 4 (random)
SELECT uuid_generate_v4();
 uuid_generate_v4
--------------------------------------
 d7a8d47e-58e3-4bd9-9340-8553ac03d144
(1 row)
-- Version 5 (name-based, SHA-1)
SELECT uuid_generate_v5(uuid_ns_url(), 'example.com');
 uuid_generate_v5
--------------------------------------
 a5cf6e8e-4cfa-5f31-a804-6de6d1245e26
(1 row)

Referências