F.67. uuid-ossp#

F.67. uuid-ossp

F.67. uuid-ossp

Модуль uuid-ossp предоставляет функции для генерации уникальных идентификаторов (UUID) с использованием одного из нескольких стандартных алгоритмов. Также имеются функции для создания определенных специальных констант UUID. Этот модуль необходим только для особых требований, выходящих за рамки возможностей основного продукта Tantor SE. См. Раздел 9.14 для встроенных способов генерации UUID.

Этот модуль считается "доверенным", то есть его можно установить недоступным пользователям, у которых есть привилегия CREATE в текущей базе данных.

F.67.1. uuid-ossp Функции

Таблица F.35 показывает доступные функции для генерации UUID. Соответствующие стандарты ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122 определяют четыре алгоритма для генерации UUID, идентифицируемых номерами версий 1, 3, 4 и 5. (Алгоритма версии 2 не существует). Каждый из этих алгоритмов может быть подходящим для различного набора приложений.

Таблица F.35. Функции для генерации UUID

Функция

Описание

uuid_generate_v1 () → uuid

Генерирует UUID версии 1. Для этого используется MAC-адрес компьютера и временная метка. Обратите внимание, что UUID такого типа раскрывает идентификатор компьютера, создавшего идентификатор, и время, когда это произошло, что может сделать его непригодным для некоторых приложений, требующих повышенной безопасности.

uuid_generate_v1mc () → uuid

Генерирует UUID версии 1, но использует случайный мультикаст MAC-адрес вместо реального MAC-адреса компьютера.

uuid_generate_v3 ( namespace uuid, name text ) → uuid

Генерирует UUID версии 3 в заданном пространстве имен с использованием указанного входного имени. Пространство имен должно быть одной из специальных констант, созданных функциями uuid_ns_*(), показанными в Таблица F.36. (В теории это может быть любой UUID). Имя является идентификатором в выбранном пространстве имен.

Например:

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

Параметр name будет хешироваться с использованием алгоритма MD5, поэтому исходный текст нельзя получить из сгенерированного UUID. Генерация UUID с использованием этого метода не имеет случайного или зависящего от окружения элемента и, следовательно, является воспроизводимой.

uuid_generate_v4 () → uuid

Генерирует версию 4 UUID, которая полностью производится из случайных чисел.

uuid_generate_v5 ( namespace uuid, name text ) → uuid

Генерирует UUID версии 5, который работает аналогично UUID версии 3, за исключением использования хеш-функции SHA-1. Версия 5 предпочтительнее версии 3, поскольку считается, что SHA-1 более безопасен, чем MD5.


Таблица F.36. Функции, возвращающие константы UUID

Функция

Описание

uuid_nil () → uuid

Возвращает константу UUID nil, которая не является реальным UUID.

uuid_ns_dns () → uuid

Возвращает константу, обозначающую пространство имен DNS для UUID.

uuid_ns_url () → uuid

Возвращает константу, обозначающую пространство имен URL для UUID.

uuid_ns_oid () → uuid

Возвращает константу, обозначающую пространство имен объектных идентификаторов (OID) ISO для UUID. (Это относится к ASN.1 OID, которые не связаны с OID, используемыми в Tantor SE).

uuid_ns_x500 () → uuid

Возвращает константу, обозначающую пространство имен X.500 для уникальных идентификаторов (UUID).


F.67.2. Building uuid-ossp

Исторически этот модуль зависел от библиотеки OSSP UUID, что объясняет его название. В то время как библиотеку OSSP UUID все еще можно найти по адресу http://www.ossp.org/pkg/lib/uuid/, она не поддерживается должным образом и становится все сложнее переносить на новые платформы. uuid-ossp теперь может быть построен без библиотеки OSSP на некоторых платформах. В FreeBSD и некоторых других производных от BSD платформах подходящие функции создания UUID включены в основную библиотеку libc. В Linux, macOS и некоторых других платформах подходящие функции предоставляются в библиотеке libuuid, которая изначально поставлялась с проектом e2fsprogs (хотя на современных версиях Linux она считается частью util-linux-ng). При вызове configure укажите --with-uuid=bsd, чтобы использовать функции BSD, или --with-uuid=e2fs, чтобы использовать libuuid из e2fsprogs, или --with-uuid=ossp, чтобы использовать библиотеку OSSP UUID. На конкретной машине может быть доступно более одной из этих библиотек, поэтому configure не выбирает автоматически одну из них.

F.67.3. Автор

Peter Eisentraut