Что такое GUID?

GUID (Globally Unique Identifier) — это глобальный уникальный идентификатор, представляющий собой 128-битное (16-байтное) число. Его главная задача — обеспечить абсолютную уникальность объекта (файла, записи в базе данных, компонента программного обеспечения, сетевого интерфейса и т.д.) в распределённых системах без необходимости централизованного контроля за генерацией. Простыми словами, это «отпечаток пальца» для цифровых объектов, вероятность совпадения которого практически равна нулю.

Термин GUID часто используется как синоним UUID (Universally Unique Identifier), который является стандартизированным форматом, описанным в документах RFC 4122 и стандарте ISO/IEC 9834-8:2005. Хотя между ними есть тонкие исторические различия (GUID — это реализация Microsoft стандарта UUID), сегодня эти понятия взаимозаменяемы.

Как устроен и как выглядит GUID?

Стандартный GUID/UUID представляет собой последовательность из 32 шестнадцатеричных цифр, разделённую дефисами на пять групп. Формат выглядит так: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Например: 550e8400-e29b-41d4-a716-446655440000.

Структура не случайна и содержит в себе информацию:

  • Временная метка: часть битов отводится под значение времени генерации.
  • Версия: 4 бита указывают на алгоритм, использованный для создания UUID (версии 1, 3, 4, 5).
  • Вариант: 1-3 бита определяют макетирование UUID, что важно для совместимости.
  • Уникальное значение: оставшиеся биты обеспечивают уникальность (например, MAC-адрес сетевой карты в версии 1 или случайные числа в версии 4).

Виды и классификация GUID/UUID

Стандарт RFC 4122 определяет несколько версий UUID, которые различаются способом генерации:

UUID version 1 (на основе времени и MAC-адреса)

Генерируется на основе текущего времени (счётчика 100-наносекундных интервалов с 15 октября 1582 года) и MAC-адреса сетевого интерфейса компьютера. Обеспечивает временную упорядоченность и уникальность в пространстве.

UUID version 2 (DCE Security)

Расширение версии 1, используемое в распределённой вычислительной среде (DCE) для идентификации субъектов безопасности. Содержит идентификатор локального домена (например, идентификатор пользователя или группы).

UUID version 3 и 5 (на основе хеша от namespace и имени)

Генерируются путём хеширования пространства имён (самого по себе UUID) и строки имени. Версия 3 использует алгоритм MD5, версия 5 — SHA-1. Эти UUID детерминированы: одни и те же namespace и имя всегда дают одинаковый UUID.

UUID version 4 (случайный)

Самый распространённый тип. Все 128 битов, кроме битов версии и варианта, заполняются случайными или псевдослучайными числами. Именно такой GUID чаще всего имеют в виду, говоря «сгенерировать GUID».

Где и зачем применяется GUID?

Области применения глобальных уникальных идентификаторов огромны, особенно в IT и программировании:

  • Базы данных: В качестве первичных ключей таблиц, особенно в реплицируемых или распределённых базах данных, где централизованная генерация последовательных ID невозможна или неэффективна.
  • Операционные системы: В Windows GUID используется повсеместно: для идентификации классов COM/ActiveX, разделов реестра, интерфейсов, драйверов (Class GUID).
  • Файловые системы: Идентификаторы разделов диска (GUID Partition Table — GPT), используемые вместо устаревшей MBR.
  • Сетевые технологии: Уникальные идентификаторы для сетевых интерфейсов, транзакций, сообщений.
  • Веб-разработка и API: Для идентификации сессий пользователей, заказов, документов, когда требуется гарантированная уникальность на стороне клиента или в микросервисной архитектуре.
  • Игровая индустрия: Присвоение уникальных ID игровым объектам, аккаунтам, предметам.

Ключевое преимущество GUID — возможность независимой генерации уникальных идентификаторов в разных, никак не связанных между собой системах, без риска конфликтов (коллизий). Вероятность совпадения двух случайных UUIDv4 настолько мала (1 из 2^122), что ею можно пренебречь в практических приложениях.

Итог

GUID (или UUID) — это фундаментальная технология, лежащая в основе современной распределённой цифровой инфраструктуры. Это не просто случайный набор символов, а стандартизированный и структурированный идентификатор, который позволяет миллионам систем по всему миру создавать уникальные метки для своих объектов, не спрашивая разрешения у какого-либо центрального органа. Понимание принципов его работы необходимо для разработки масштабируемых, надёжных и независимых IT-решений.

Частые вопросы по теме

  1. В чём разница между GUID и UUID? GUID — это торговая марка Microsoft для реализации стандарта UUID. В современном контексте термины считаются синонимами, хотя технически GUID часто относится к реализации Microsoft, которая может иметь некоторые особенности хранения (порядок байтов).
  2. Могут ли два GUID совпасть? Теоретически — да, практически — вероятность этого исчезающе мала, особенно для UUID версии 4 (случайных). Для большинства приложений она считается нулевой.
  3. Какой тип GUID самый популярный и почему? Самый популярный — UUID версии 4 (случайный). Он прост в генерации, не требует доступа к уникальным характеристикам системы (вроде MAC-адреса) и обеспечивает достаточную уникальность для подавляющего большинства задач.
  4. Где в Windows можно увидеть GUID? В реестре Windows (например, Class GUID для устройств в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class), в идентификаторах COM-объектов, в свойствах файлов и программ.
  5. Есть ли недостатки у GUID? Да. Основные: большой размер (16 байт против 4-8 байт у обычного целочисленного ID), нечитаемость для человека, отсутствие естественной сортировки (кроме UUIDv1), потенциально более низкая производительность индексирования в очень больших базах данных.

Источники