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 версии 1. Для этого используется MAC-адрес компьютера и временная метка. Обратите внимание, что UUID такого типа раскрывает идентификатор компьютера, создавшего идентификатор, и время, когда это произошло, что может сделать его непригодным для некоторых приложений, требующих повышенной безопасности. |
Генерирует UUID версии 1, но использует случайный мультикаст MAC-адрес вместо реального MAC-адреса компьютера. |
Генерирует UUID версии 3 в заданном пространстве имен с использованием указанного входного имени. Пространство имен должно быть одной из специальных констант, созданных функциями Например: SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org'); Параметр name будет хешироваться с использованием алгоритма MD5, поэтому исходный текст нельзя получить из сгенерированного UUID. Генерация UUID с использованием этого метода не имеет случайного или зависящего от окружения элемента и, следовательно, является воспроизводимой. |
Генерирует версию 4 UUID, которая полностью производится из случайных чисел. |
Генерирует UUID версии 5, который работает аналогично UUID версии 3, за исключением использования хеш-функции SHA-1. Версия 5 предпочтительнее версии 3, поскольку считается, что SHA-1 более безопасен, чем MD5. |
Таблица F.36. Функции, возвращающие константы UUID
Функция Описание |
---|
Возвращает константу UUID “nil”, которая не является реальным UUID. |
Возвращает константу, обозначающую пространство имен DNS для UUID. |
Возвращает константу, обозначающую пространство имен URL для UUID. |
Возвращает константу, обозначающую пространство имен объектных идентификаторов (OID) ISO для UUID. (Это относится к ASN.1 OID, которые не связаны с OID, используемыми в Tantor SE-1C). |
Возвращает константу, обозначающую пространство имен 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 <peter_e@gmx.net>