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.
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 |
|---|
|
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. |
|
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. |
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 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. |
Genera un UUID de versión 4, que se deriva completamente de números aleatorios. |
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 |
|---|
Devuelve una constante UUID “nil” (nula), que no ocurre como un UUID real. |
Devuelve una constante que designa el espacio de nombres DNS para UUIDs. |
Devuelve una constante que designa el espacio de nombres URL para UUIDs. |
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). |
Devuelve una constante que designa el espacio de nombres del nombre distinguido (DN) X.500 para UUIDs. |
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.
Peter Eisentraut <[email protected]>