Generar identificadores únicos es un requisito común en las aplicaciones de bases de datos. En PostgreSQL, el tipo de dato identificador único universal (UUID) ofrece una forma sencilla de lograrlo. En este artículo veremos cómo generar UUID en PostgreSQL, por qué y cuándo usarlos, y te mostraremos ejemplos de código con su resultado esperado.
¿Qué es un UUID?
UUID significa Universally Unique Identifier (identificador único universal), un número de 128 bits que se usa para identificar información de forma única en sistemas informáticos. La gran ventaja de los UUID es que proporcionan una clave única entre distintas plataformas y bases de datos sin necesidad de coordinación.
¿Por qué usar UUID?
- Unicidad entre sistemas: a diferencia de los IDs seriales tradicionales, los UUID se pueden generar de forma independiente en distintos sistemas.
- Difíciles de adivinar: los UUID no son secuenciales, por lo que son menos predecibles.
- Únicos a nivel global: garantizan unicidad global y evitan colisiones de IDs al combinar conjuntos de datos.
Cómo generar UUID en PostgreSQL
PostgreSQL facilita la generación de UUID con su soporte integrado, aunque requiere habilitar extensiones adicionales.
Paso 1: habilita la extensión uuid-ossp
La extensión uuid-ossp ofrece funciones para generar UUID. Debes habilitarla en tu base de datos.
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Paso 2: usa uuid_generate_v4()
La función más usada para generar UUID aleatorios es uuid_generate_v4(). Así se usa:
SELECT uuid_generate_v4() as generated_uuid;
Resultado esperado:
generated_uuid
--------------------------------------
550e8400-e29b-41d4-a716-446655440000
Cada ejecución de la función devuelve un UUID nuevo y único.
Paso 3: usa UUID en tablas
Puedes usar UUID como claves primarias o identificadores únicos en tus tablas. Es buena práctica definir el tipo de columna como UUID y asignar un valor predeterminado con la función uuid_generate_v4().
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
username VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
Insertar datos:
Puedes dejar que PostgreSQL genere automáticamente los UUID al insertar nuevos registros.
INSERT INTO users (username, email) VALUES ('johndoe', 'john@example.com');
SELECT id, username, email FROM users;
Resultado esperado:
id | username | email
-----------------------------------+----------+-------------------
8df00d7f-6d5d-45e8-bd9c-8c5f29e6e0a7 | johndoe | john@example.com
Métodos alternativos para generar UUID
uuid_generate_v1()
Genera un UUID basado en la marca de tiempo actual y la dirección MAC. Es determinista y menos seguro, pero puede ser útil en algunos casos.
SELECT uuid_generate_v1() as generated_uuid;
Resultado esperado:
generated_uuid
--------------------------------------
6a7fede0-e1e3-11ed-b5ea-0242ac120002
uuid_generate_v1mc()
Similar a uuid_generate_v1(), pero permite especificar una dirección MAC.
uuid_generate_v3(namespace UUID, name TEXT)
Genera un UUID de versión 3 a partir de un espacio de nombres y un nombre, usando hash MD5.
uuid_generate_v5(namespace UUID, name TEXT)
Similar a uuid_generate_v3(), pero usa hash SHA-1 y crea un UUID de versión 5.
Conclusión
La funcionalidad de UUID de PostgreSQL ofrece una forma robusta y flexible de generar identificadores únicos para tus aplicaciones de bases de datos. Con los UUID, puedes asegurarte de que tus IDs sean únicos, impredecibles y consistentes entre distintos sistemas. Ya sea que estés creando una aplicación nueva o migrando una existente, los UUID ofrecen un enfoque moderno para generar IDs.
Con la extensión uuid-ossp y su variedad de funciones, PostgreSQL te facilita elegir el tipo de UUID que mejor se adapte a tus necesidades. Empieza a usar UUID en tu base de datos hoy y aprovecha su unicidad global.
Beekeeper Studio es un cliente de bases de datos gratuito y de código abierto
La mejor herramienta de consultas y edición de SQL que he usado. Tiene todo lo que necesito para administrar mi base de datos. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio es rápido, intuitivo y fácil de usar. Es compatible con muchísimas bases de datos y funciona de maravilla en Windows, Mac y Linux.
Lo que dicen los usuarios de Beekeeper Studio
"Beekeeper Studio reemplazó por completo mi antiguo flujo de trabajo con SQL. Es rápido, intuitivo y hace que trabajar con bases de datos vuelva a ser agradable."
"He probado muchas GUI de bases de datos, pero Beekeeper logra el equilibrio perfecto entre funciones y simplicidad. Simplemente funciona."