F.49. uuid-ossp — un generador de UUID #

F.49.1. Funciones de uuid-ossp
F.49.2. Compilación de uuid-ossp
F.49.3. Autor

El módulo uuid-ossp proporciona funciones para generar identificadores universales únicos (UUIDs) utilizando uno de varios algoritmos estándar. También hay funciones para producir ciertas constantes UUID especiales. Este módulo solo es necesario para requisitos especiales más allá de lo que está disponible en el núcleo de PostgreSQL. Consulta la Section 9.14 para conocer las formas integradas de generar UUIDs.

Este módulo se considera trusted (de confianza), es decir, puede ser instalado por no superusuarios que tengan el privilegio CREATE en la base de datos actual.

F.49.1. Funciones de uuid-ossp #

La Table F.35 muestra las funciones disponibles para generar UUIDs. Los estándares relevantes ITU-T Rec. X.667, ISO/IEC 9834-8:2005 y RFC 4122 especifican cuatro algoritmos para generar UUIDs, identificados por los números de versión 1, 3, 4 y 5. (No existe un algoritmo de versión 2). Cada uno de estos algoritmos podría ser adecuado para un conjunto diferente de aplicaciones.

Table F.35. Funciones para la generación de UUID

Función

Descripción

uuid_generate_v1 () → uuid

Genera un UUID de versión 1. Esto implica la dirección MAC de la computadora y una marca de tiempo. Ten en cuenta que los UUIDs de este tipo revelan la identidad de la computadora que creó el identificador y el momento en que lo hizo, lo que podría hacerlo inadecuado para ciertas aplicaciones sensibles a la seguridad.

uuid_generate_v1mc () → uuid

Genera un UUID de versión 1, pero utiliza una dirección MAC multicast aleatoria en lugar de la dirección MAC real de la computadora.

uuid_generate_v3 ( namespace uuid, name text ) → uuid

Genera un UUID de versión 3 en el espacio de nombres (namespace) dado utilizando el nombre de entrada especificado. El espacio de nombres debe ser una de las constantes especiales producidas por las funciones uuid_ns_*() que se muestran en la Table F.36. (En teoría, podría ser cualquier UUID). El nombre es un identificador en el espacio de nombres seleccionado.

Por ejemplo:

SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');

El parámetro de nombre se procesará con un hash MD5, por lo que el texto en claro no se puede derivar del UUID generado. La generación de UUIDs por este método no tiene elementos aleatorios o dependientes del entorno y, por lo tanto, es reproducible.

uuid_generate_v4 () → uuid

Genera un UUID de versión 4, que se deriva completamente de números aleatorios.

uuid_generate_v5 ( namespace uuid, name text ) → uuid

Genera un UUID de versión 5, que funciona como un UUID de versión 3 excepto que se utiliza SHA-1 como método de hash. Se debe preferir la versión 5 sobre la versión 3 porque se considera que SHA-1 es más seguro que MD5.


Table F.36. Funciones que devuelven constantes UUID

Función

Descripción

uuid_nil () → uuid

Devuelve una constante UUID nil (nula), que no ocurre como un UUID real.

uuid_ns_dns () → uuid

Devuelve una constante que designa el espacio de nombres DNS para UUIDs.

uuid_ns_url () → uuid

Devuelve una constante que designa el espacio de nombres URL para UUIDs.

uuid_ns_oid () → uuid

Devuelve una constante que designa el espacio de nombres del identificador de objeto (OID) de la ISO para UUIDs. (Esto pertenece a los OIDs de ASN.1, que no tienen relación con los OIDs utilizados en PostgreSQL).

uuid_ns_x500 () → uuid

Devuelve una constante que designa el espacio de nombres del nombre distinguido (DN) X.500 para UUIDs.


F.49.2. Compilación de uuid-ossp #

Históricamente, este módulo dependía de la biblioteca OSSP UUID, lo que explica el nombre del módulo. Aunque la biblioteca OSSP UUID todavía se puede encontrar en http://www.ossp.org/pkg/lib/uuid/, no recibe un buen mantenimiento y cada vez es más difícil de portar a plataformas más nuevas. Ahora uuid-ossp se puede compilar sin la biblioteca OSSP en algunas plataformas. En FreeBSD y algunas otras plataformas derivadas de BSD, se incluyen funciones adecuadas de creación de UUID en la biblioteca principal libc. En Linux, macOS y algunas otras plataformas, se proporcionan funciones adecuadas en la biblioteca libuuid, que originalmente provenía del proyecto e2fsprogs (aunque en el Linux moderno se considera parte de util-linux-ng). Al invocar configure, especifica --with-uuid=bsd para usar las funciones de BSD, o --with-uuid=e2fs para usar la libuuid de e2fsprogs, o --with-uuid=ossp para usar la biblioteca OSSP UUID. Es posible que haya más de una de estas bibliotecas disponibles en una máquina en particular, por lo que configure no elige una automáticamente.

F.49.3. Autor #

Peter Eisentraut