uuid-ossp
Модуль uuid-ossp предоставляет функции для генерирования универсальных уникальных идентификаторов (UUID) по одному из нескольких стандартных алгоритмов. Также в нем есть функции, выдающие определенные специальные константы UUID. Этот модуль необходим только в случае специальных требований module за пределами функциональности, доступной в ядре QHB. Встроенные в ядро способы генерирования UUID см. в разделе Функции генерирования UUID.
Этот модуль считается «доверенным», то есть его могут устанавливать обычные пользователи с правом CREATE в текущей базе данных.
Функции uuid-ossp
В Таблице 33 показаны имеющиеся в модуле функции для генерирования UUID. В соответствующих стандартах ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122 указаны четыре алгоритма для генерирования UUID, обозначаемые номерами версий 1, 3, 4 и 5. (Алгоритма версии 2 не существует.) Каждый из этих алгоритмов предназначен для различных групп приложений.
Таблица 33. Функции для генерирования UUID
Функция |
||
---|---|---|
Описание |
||
uuid_generate_v1 () → uuid | ||
Генерирует UUID версии 1. Этот UUID включает в себя MAC-адрес компьютера и метку времени. Обратите внимание, что UUID такого типа раскрывают реквизиты компьютера, создавшего идентификатор, и время создания, что может быть неприемлемым для определенных приложений, где требуется повышенная безопасность данных. | ||
uuid_generate_v1mc () → uuid | ||
Генерирует UUID версии 1, но вместо реального MAC-адреса компьютера использует случайный групповой MAC-адрес. | ||
uuid_generate_v3 ( namespace uuid, name text ) → uuid | ||
Генерирует UUID версии 3 в заданном пространстве имен, используя указанное имя. Пространство имен должно задаваться одной из специальных констант, которые выдаются функциями uuid_ns_*(), перечисленными в Таблице 34. (Хотя теоретически это может быть любой UUID.) Имя задает идентификатор в выбранном пространстве имен. Например: SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');
Из параметра name будет получен хеш MD5, так что из сгенерированного UUID нельзя будет извлечь открытый текст. В генерировании UUID таким методом нет элемента случайности или зависимости от среды, поэтому его можно воспроизвести. |
||
uuid_generate_v4 () → uuid | ||
Генерирует UUID версии 4, который полностью выводится из случайных чисел. | ||
uuid_generate_v5 ( namespace uuid, name text ) → uuid | ||
Генерирует UUID версии 5, который похож на версию 3, но хеширование проводится по алгоритму SHA-1. Версия 5 предпочтительнее версии 3, так как SHA-1 считается более безопасным, чем MD5. |
Таблица 34. Функции, возвращающие константы UUID
Функция |
||
---|---|---|
Описание |
||
uuid_nil () → uuid | ||
Возвращает «нулевую» константу UUID, которая не считается настоящим UUID. | ||
uuid_ns_dns () → uuid | ||
Возвращает константу, обозначающую пространство имен DNS для UUID. | ||
uuid_ns_url () → uuid | ||
Возвращает константу, обозначающую пространство имен URL для UUID. | ||
uuid_ns_oid () → uuid | ||
Возвращает константу, обозначающую пространство имен идентификаторов объектов ISO (OID, object identifier) для UUID. (Здесь имеются в виду OID ASN.1, которые не имеют отношения к OID, используемым в QHB.) | ||
uuid_ns_x500 () → uuid | ||
Возвращает константу, обозначающую пространство имен с различаемыми именами (DN, distinguished name) X.500 для UUID. |
Сборка uuid-ossp
Исторически этот модуль зависел от библиотеки OSSP UUID, что отразилось в его имени. Хотя библиотеку OSSP UUID все еще можно найти по адресу http://www.ossp.org/pkg/lib/uuid/, она плохо поддерживается и ее становится все сложнее портировать на более новые платформы. Поэтому теперь на некоторых платформах модуль uuid-ossp можно собирать без библиотеки OSSP. Во FreeBSD, NetBSD и некоторых других платформах на базе BSD подходящие функции создания UUID включены в корневую библиотеку libc. В Linux, macOS и некоторых других платформах подходящие функции предоставляются библиотекой libuuid, которая изначально пришла из проекта e2fsprogs (хотя в современном Linux она считается частью util-linux-g). Вызывая configure, укажите ключ --with-uuid=bsd, чтобы использовать функции BSD, или --with-uuid=e2fs, чтобы использовать libuuid из e2fsprogs, или --with-uuid=ossp, чтобы использовать библиотеку OSSP UUID. На конкретной платформе может быть установлено сразу несколько библиотек, поэтому configure не выбирает библиотеку автоматически.
Автор
Питер Эйзентраут (Peter Eisentraut), peter_e@gmx.net