F.63. uuid-ossp
Модуль uuid-ossp
предоставляет функции для генерирования универсальных уникальных идентификаторов (UUID) по одному из нескольких стандартных алгоритмов. В нём также есть функции, выдающие специальные UUID-константы.
F.63.1. Функции uuid-ossp
В Таблице F.120 показаны функции, предназначенные для генерации UUID. Четыре алгоритма для генерации UUID, обозначаемые номерами версий 1, 3, 4 и 5, описаны в стандартах ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122. (Алгоритма версии 2 нет.) Каждый из этих алгоритмов предназначен для различных сфер применения.
Таблица F.120. Функции для генерирования UUID
Функция | Описание |
---|---|
uuid_generate_v1() | Эта функция генерирует UUID версии 1. Такой UUID включает в себя MAC-адрес компьютера и текущее время. Заметьте, что UUID такого типа раскрывают «личность» компьютера, создавшего идентификатор, и время этой операции, что может быть неприемлемым для определённых приложений, где важна конфиденциальность. |
uuid_generate_v1mc() | Эта функция генерирует UUID версии 1, но вместо реального MAC-адреса компьютера используется случайный групповой MAC-адрес. |
uuid_generate_v3(namespace uuid, name text) | Эта функция генерирует UUID версии 3 для заданного пространства имён UUID и указанного имени. Пространство имён должно задаваться одной из специальных констант, которые выдаются функциями Например: SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org'); Из параметра name будет получен MD5-хеш, так что из сгенерированного UUID нельзя будет восстановить имя. В генерируемых таким алгоритмом UUID нет элемента случайности или зависимости от окружения, так что они могут быть воспроизведены. |
uuid_generate_v4() | Эта функция генерирует UUID версии 4, который всецело определяется случайными числами. |
uuid_generate_v5(namespace uuid, name text) | Эта функция генерирует UUID версии 5, который похож на версию 3, но хеш рассчитывается по алгоритму SHA-1. Версия 5 предпочтительнее версии 3, так как SHA-1 считается более безопасным, чем MD5. |
Таблица F.121. Функции, возвращающие UUID-константы
uuid_nil() | «Нулевой» UUID, который не считается действительным UUID. |
uuid_ns_dns() | Константа, обозначающая пространство имён DNS для UUID. |
uuid_ns_url() | Константа, обозначающая пространство имён URL для UUID. |
uuid_ns_oid() | Константа, обозначающая пространство имён идентификаторов объектов ISO (OID, ISO Object Identifier) для UUID. (Здесь имеются в виду идентификаторы объектов ASN.1, которые никак не связаны с OID, применяемыми в Postgres Pro.) |
uuid_ns_x500() | Константа, обозначающая пространство имён с уникальными именами X.500 для UUID. |
F.63.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
не выбирает библиотеку автоматически.
Примечание
Если вам нужны только случайные UUID (версии 4), в качестве альтернативы вы можете использовать функцию gen_random_uuid()
из модуля pgcrypto.
F.63.3. Автор
Питер Эйзентраут <peter_e@gmx.net>