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