Ссылка и UUID — это разные вещи. Но при этом существует однозначное преобразование UUID в ссылку и наоборот. Ссылка представляет собой массив из 16 байт. Если рассматривать UUID как последовательность байт, то получается что в ссылке те же самые байты переставлены в другом порядке. Определение структуры GUID можно найти в файле Guiddef.h Windows SDK. Выглядит она следующим образом:
typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
В ссылке данные переставлены следующим образом:
— Data4 — 8 байт
— 1-й байт Data3
— 0-й байт Data3
— 1-й байт Data2
— 0-й байт Data2
— 3-й байт Data3
— 2-й байт Data3
— 1-й байт Data3
— 0-й байт Data3
При автоматической генерации ссылок, UUID’ы, используемые для получения ссылок, генерируются в Windows с помощью функции Win32 API UuidCreateSequential().
Такой алгоритм генерации ссылок дает очень компактные индексы по ссылкам в файловой базе данных, так как в терминальных страницах индекса (листьях дерева) для упаковки ключей используется общий префикс. Другими словами, на терминальной странице индекса целиком обязательно записывается только первый ключ. Если последующий ключ имеет общий префикс с предыдущим, то для последующего ключа записываются только отличающиеся хвостовые байты.