F.69. uuid-ossp — генератор UUID#

F.69. uuid-ossp — генератор UUID

F.69. uuid-ossp — генератор UUID #

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

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

F.69.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-1C).

uuid_ns_x500 () → uuid

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


F.69.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.69.3. Автор #

Peter Eisentraut