Тип UUID

Тип данных uuid сохраняет универсальные уникальные идентификаторы (Universally Unique Identifiers, UUID) в соответствии с определением в RFC 4122, ISO/IEC 9834-8: 2005 и связанных стандартах. (В некоторых системах этот тип данных называется глобально уникальным идентификатором, или GUID.) Этот идентификатор является 128-битной величиной, генерируемой специально выбранным алгоритмом, практически гарантирующим, что этот же идентификатор не будет сгенерирован кем-либо еще в известной вселенной с использованием того же алгоритма. Поэтому для распределенных систем эти идентификаторы обеспечивают лучшую гарантию уникальности, чем генераторы последовательностей, которые уникальны только в пределах одной базы данных.

UUID записывается в виде последовательности шестнадцатеричных цифр в нижнем регистре, разделенных дефисами на несколько групп, в следующем порядке: группа из 8 цифр, затем три группы из 4 цифр, а следом группа из 12 цифр — всего 32 цифры, представляющие 128 битов. Пример UUID в этой стандартной форме:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

QHB также принимает следующие альтернативные формы для ввода: использование цифр в верхнем регистре, стандартный формат, заключенный в фигурные скобки, пропуск некоторых или всех дефисов, добавление дефиса после любой группы из четырех цифр. Примеры:

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}

Выводятся значения типа uuid всегда в стандартной форме.

QHB предоставляет для UUID функции хранения и сравнения, но основная база данных не содержит функции для генерации UUID, поскольку не существует такого алгоритма, который подходил бы для всех приложений. Несколько стандартных алгоритмов можно реализовать при помощи функций, предоставляемых модулем uuid-ossp. Также функцию генерации случайных UUID предоставляет модуль pgcrypto. Как вариант, UUID могут генерировать клиентские приложения или другими библиотеки, вызываемые через функцию на стороне сервера.