Гуид как уникальный идентификатор¶
Гуид (от англ. GUID — Globally Unique Identifier, «глобально уникальный идентификатор») — это программный идентификатор, представляющий собой 128-битное (16-байтовое) значение, которое с практической вероятностью не повторяется ни в одной другой точке мира и времени. Гуид относится к классу уникальных идентификаторов и применяется в информатике для однозначного обозначения объектов: записей в базах данных, компонентов программного обеспечения, сетевых устройств, пользовательских сессий, файлов и транзакций. Формат гуида стандартизирован и обычно записывается как последовательность из 32 шестнадцатеричных цифр, разделённых дефисами на пять групп, например: 123e4567-e89b-12d3-a456-426614174000.
¶Происхождение и стандартизация
Концепция глобально уникального идентификатора сформировалась в конце 1980-х — начале 1990-х годов в связи с развитием распределённых вычислительных систем. В централизованных системах уникальность номера записи обеспечивал единый сервер, однако при объединении независимых систем возникал риск совпадения локальных номеров. Решением стало генерирование идентификаторов по алгоритму, при котором вероятность коллизии пренебрежимо мала без обращения к общему координатору.
Основой послужил стандарт UUID (Universally Unique Identifier), описанный в спецификации ISO/IEC 9834-8 и в документе RFC 4122 (позднее заменён RFC 9562). Термин GUID закрепился главным образом в экосистеме Microsoft: в технологиях COM, .NET и Windows он обозначает то же самое, что UUID в открытых стандартах. Таким образом, гуид и UUID — по сути синонимы, различающиеся преимущественно традицией употребления.
¶Структура и версии
Классический гуид состоит из 128 бит, разбитых на поля. Часть битов кодирует версию алгоритма генерации и вариант записи, остальные несут полезную нагрузку — метку времени, случайные числа или данные узла сети. Каноническая текстовая форма включает 36 символов: 32 шестнадцатеричные цифры и 4 дефиса.
Стандарт определяет несколько версий генерации:
- Версия 1 — на основе текущего времени и MAC-адреса сетевой карты компьютера. Обеспечивает высокую уникальность, но раскрывает сведения об устройстве и моменте создания.
- Версия 2 — вариант версии 1 с учётом идентификатора пользователя или домена; применяется редко.
- Версия 3 — детерминированное значение, получаемое хешированием имени (пространства имён) алгоритмом MD5.
- Версия 4 — полностью случайный идентификатор; наиболее распространён в прикладных программах.
- Версия 5 — аналог версии 3, но с использованием алгоритма SHA-1.
- Версии 6, 7 и 8 — добавлены в обновлённом стандарте RFC 9562; версия 7 сочетает временную метку с случайными битами, что удобно для сортировки записей по времени создания.
¶Принцип уникальности
Уникальность гуида не является абсолютной в математическом смысле: теоретически два независимо сгенерированных значения могут совпасть. Однако количество возможных комбинаций составляет 2¹²⁸, что превышает 3,4 × 10³⁸. Вероятность коллизии при генерации миллиардов идентификаторов остаётся исчезающе малой. Именно поэтому на практике гуиды рассматриваются как уникальные без внешней проверки — это ключевое свойство, отличающее их от порядковых номеров, требующих централизованного учёта.
¶Применение
Гуиды широко используются в следующих областях:
- Базы данных. Служат первичными ключами таблиц, позволяя объединять данные из разных источников и генерировать ключ на стороне клиента до записи в хранилище.
- Программные интерфейсы и компонентные модели. В COM и .NET гуиды обозначают классы, интерфейсы и библиотеки типов, обеспечивая их однозначную идентификацию независимыми разработчиками.
- Операционные системы. Windows применяет гуиды для идентификации реестровых разделов, устройств, профилей и объектов системы.
- Сетевые технологии и распределённые системы. Идентификаторы сессий, сообщений и узлов в кластерах, микросервисной архитектуре и системах обмена данными.
- Файловые системы и документы. Уникальные метки томов, встроенные идентификаторы документов, ключи синхронизации.
- Веб-технологии. Идентификаторы транзакций, корзин заказов, токенов и сессий пользователей.
¶Преимущества и недостатки
К достоинствам гуидов относятся глобальная уникальность без координации, возможность генерации на любом узле, устойчивость к слиянию баз данных и удобство распределённой работы. Основные недостатки — большой размер (16 байт против 4–8 у целочисленных ключей), что увеличивает объём индексов и снижает скорость выборки, а также плохая читаемость для человека. Случайные версии (например, версия 4) неупорядочены, из-за чего вставка записей в индексируемые таблицы может быть менее эффективной, чем при использовании последовательных номеров. Версии 1 и 7 частично решают проблему сортировки, поскольку включают метку времени.
¶Гуиды в России
В российской практике термин «гуид» употребляется преимущественно в среде разработчиков программного обеспечения, системных администраторов и специалистов по базам данных. Он встречается в технической документации, руководствах по настройке Windows, при работе с системами управления базами данных и в проектах интеграции информационных систем. В государственных информационных системах и реестрах для уникальной идентификации объектов чаще применяются собственные схемы нумерации, однако при обмене данными между разнородными платформами нередко используются идентификаторы формата UUID/GUID. В образовательных программах технических вузов тема уникальных идентификаторов рассматривается в курсах по базам данных, операционным системам и распределённым вычислениям.
¶Связанные понятия
С гуидами тесно связаны понятия UUID, глобально уникального имени, хеш-функций, первичного ключа и распределённых систем. В некоторых контекстах гуид путают с хешем: оба представляют собой строку из шестнадцатеричных символов, однако хеш детерминированно вычисляется из данных и служит для проверки целостности, тогда как гуид предназначен для идентификации и часто генерируется случайно.
Источники: RFC 4122, RFC 9562, ISO/IEC 9834-8, документация Microsoft по COM и .NET, техническая документация по системам управления базами данных.