F.70. uuid-ossp
Модуль uuid-ossp
предоставляет функции для генерирования универсальных уникальных идентификаторов (UUID) по одному из нескольких стандартных алгоритмов. В нём также есть функции, выдающие специальные UUID-константы. Этот модуль необходим только в случае особых требований, которым не удовлетворяет функциональность в ядре PostgreSQL. Встроенные в ядро способы генерирования UUID описаны в Разделе 9.14.
Данный модуль считается «доверенным», то есть его могут устанавливать обычные пользователи, имеющие право CREATE
в текущей базе данных.
F.70.1. Функции uuid-ossp
В Таблице F.121 показаны функции, предназначенные для генерации UUID. Четыре алгоритма для генерации UUID, обозначаемые номерами версий 1, 3, 4 и 5, описаны в стандартах ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122. (Алгоритма версии 2 нет.) Каждый из этих алгоритмов предназначен для различных сфер применения.
Таблица F.121. Функции для генерирования UUID
Функция Описание |
---|
Генерирует UUID версии 1. Такой UUID включает в себя MAC-адрес компьютера и текущее время. Заметьте, что UUID такого типа раскрывают «личность» компьютера, создавшего идентификатор, и время этой операции, что может быть неприемлемым для определённых приложений, где важна конфиденциальность. |
Генерирует UUID версии 1, но вместо реального MAC-адреса компьютера используется случайный групповой MAC-адрес. |
Генерирует UUID версии 3 для заданного пространства имён UUID и указанного имени. Пространство имён должно задаваться одной из специальных констант, которые выдаются функциями Например: SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org'); Из параметра name будет получен MD5-хеш, так что из сгенерированного UUID нельзя будет восстановить имя. В генерируемых таким алгоритмом UUID нет элемента случайности или зависимости от окружения, так что они могут быть воспроизведены. |
Генерирует UUID версии 4, который полностью определяется случайными числами. |
Генерирует UUID версии 5, который похож на версию 3, но хеш рассчитывается по алгоритму SHA-1. Версия 5 предпочтительнее версии 3, так как SHA-1 считается более безопасным, чем MD5. |
Таблица F.122. Функции, возвращающие UUID-константы
Функция Описание |
---|
Выдаёт «нулевой» UUID, который не считается действительным UUID. |
Выдаёт константу, обозначающую пространство имён DNS для UUID. |
Выдаёт константу, обозначающую пространство имён URL для UUID. |
Выдаёт константу, обозначающую пространство имён идентификаторов объектов ISO (OID, ISO Object Identifier) для UUID. (Здесь имеются в виду идентификаторы объектов ASN.1, которые никак не связаны с OID, применяемыми в Postgres Pro.) |
Выдаёт константу, обозначающую пространство имён с уникальными именами X.500 для UUID. |
F.70.2. Сборка 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.70.3. Автор
Питер Эйзентраут <peter_e@gmx.net>