PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 17 RC1 » Annexes » Modules et extensions supplémentaires fournis » uuid-ossp -- un générateur d'UUID

F.47. uuid-ossp -- un générateur d'UUID #

Le module uuid-ossp fournit des fonctions pour créer des identifiants uniques universels (UUID) à l'aide d'algorithmes standard. Il fournit aussi des fonctions pour produire certaines constantes UUID spéciales. Ce module est uniquement nécessaire pour des fonctionnalités supplémentaires qui vont au-delà de ce que fournit le moteur de PostgreSQL. Voir Section 9.14 pour les méthodes internes de génération d'UUID.

Ce module est considéré comme « trusted », ce qui signifie qu'il peut être installé par de simples utilisateurs (sans attribut SUPERUSER) possédant l'attribut CREATE sur la base de données courante.

F.47.1. Fonctions de uuid-ossp #

Tableau F.33 montre les fonctions disponibles pour générer des UUIDs. Les standards en question, ITU-T Rec. X.667, ISO/IEC 9834-8:2005, et RFC 4122, spécifient quatre algorithmes pour produire des UUID, identifiés par les numéros de version 1, 3, 4 et 5. (Il n'existe pas d'algorithme version 2.) Chacun de ces algorithmes peut convenir pour un ensemble différent d'applications.

Tableau F.33. Fonctions pour la génération d'UUID

Fonction

Description

uuid_generate_v1 () → uuid

Crée un UUID version 1. La fonction utilise l'adresse MAC de l'ordinateur et un horodatage. Les UUID de ce type révèlent l'identité de l'ordinateur qui les a générés et l'heure de création, ce qui peut être bloquant pour certaines applications sensibles à la sécurité.

uuid_generate_v1mc () → uuid

Génère un UUID version 1, mais depuis une adresse MAC multicast aléatoire à la place de la vraie adresse MAC de l'ordinateur.

uuid_generate_v3 ( namespace uuid, name text ) → uuid

Génère un UUID version 3 dans l'espace de nom indiqué en utilisant le nom spécifié en entrée. L'espace de nom doit être une des constantes spéciales produites par les fonctions uuid_ns_*() indiquées dans Tableau F.34. (En théorie, cela peut être tout UUID.) Le nom est un identifiant dans l'espace de nom sélectionné.

Par exemple :

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

Le paramètre name sera haché avec MD5, donc la version claire ne peut pas être récupérée à partir de l'UUID généré. La génération des UUID par cette méthode ne comprend aucun élément dépendant du hasard ou de l'environnement, et est donc reproductible.

uuid_generate_v4 () → uuid

Génère un UUID version 4, entièrement dérivé de nombres aléatoires.

uuid_generate_v5 ( namespace uuid, name text ) → uuid

Génère un UUID version 5, qui fonctionne comme un UUID version 3 sauf que SHA-1 est utilisé comme méthode de hachage. La version 5 devrait être préférée à la version 3, car SHA-1 est considéré plus sécurisé que MD5.


Tableau F.34. Fonctions renvoyant des constantes UUID

Fonction

Description

uuid_nil () → uuid

Renvoie une constante UUID « nil », qui ne correspond pas à un UUID réel.

uuid_ns_dns () → uuid

Renvoie une constante désignant l'espace de nom DNS pour les UUID.

uuid_ns_url () → uuid

Renvoie une constante désignant l'espace de nom URL pour les UUID.

uuid_ns_oid () → uuid

Renvoie une constante désignant l'espace de nom des identifiants d'objets ISO pour les UUID. (Ceci concerne les OID ASN.1, qui n'ont pas de relation avec les OID de PostgreSQL.)

uuid_ns_x500 () → uuid

Renvoie une constante désignant l'espace de nom du DN (distinguished name) X.500 pour les UUID.


F.47.2. Construire uuid-ossp #

Historiquement, ce module dépendant de la bibliothèque OSSP UUID, d'où provient le nom de ce module. Bien que la bibliothèque OSSP UUID soit toujours disponible sur http://www.ossp.org/pkg/lib/uuid/, elle n'est pas correctement maintenue, et devient de plus en plus difficile à porter vers de nouvelles plateformes. uuid-ossp peut maintenant être construit sans la bibliothèque OSSP sur certaines plateformes. Sur FreeBSD et certains dérivés BSD, les fonctions de création UUID sont incluses dans la bibliothèque libc. Sur Linux, macOS et quelques autres plateformes, des fonctions adéquates sont fournies par la bibliothèque libuuid, qui, à l'origine, provient du projet e2fsprogs (bien que, sur les Linux modernes, il soit considéré comme faisant partie de util-linux-ng). Lors de l'appel à configure, spécifiez --with-uuid=bsd pour utiliser les fonctions BSD ou --with-uuid=e2fs pour utiliser la libuuid de e2fsprogs ou encore --with-uuid=ossp pour utiliser la bibliothèque OSSP UUID. Il se peut que plusieurs versions de cette bibliothèque soient disponibles sur une même machine ; de ce fait, configure n'en choisit pas une de façon automatique.

F.47.3. Auteur #

Peter Eisentraut