Блог ClockTools

Инструменты разработчика

GUID против UUID: в чем разница?

GUID и UUID обычно называют один и тот же 128-битный идентификатор, но версия, формат, порядок и системные контракты по-прежнему имеют значение.

Автор , разработчик и издатель | | Рассмотрено под ClockTools редакционная политика

Сравнительное изображение GUID и UUID для ClockTools
Оглавление

GUID и UUID обычно описывают один и тот же тип идентификатора: 128-битное значение, предназначенное для уникальности без запроса следующего числа у центрального счетчика. Эти слова происходят из разных традиций именования. UUID — это стандартный термин, а GUID особенно распространен в программном обеспечении Microsoft и инструментах разработки.

Этот краткий ответ полезен, но он не решает всех практических вопросов. Два идентификатора могут иметь одно и то же знакомое 8-4-4-4-12 текстовую форму и по-прежнему использовать разные версии UUID, правила генерации, поведение упорядочивания или соглашения о двоичной сериализации. Когда в столбце базы данных, API или приложении указано GUID, самый безопасный подход — подтвердить принятый формат и версию, а не полагаться только на метку.

Используйте ClockTools GUID Генератор когда вам нужны значения UUID v4 или UUID v7, сгенерированные браузером, массовый вывод, проверка или форматирование, готовое к экспорту. Этапы генерации и проверки выполняются локально в браузере.

GUID и UUID: они одинаковые?

В большинстве повседневных разработок GUID и UUID — взаимозаменяемые имена для 128-битного идентификатора.. Текущий стандарт IETF, RFC 9562, явно отмечает, что UUID также известны как глобальные уникальные идентификаторы. Такое значение, как 550e8400-e29b-41d4-a716-446655440000 поэтому его можно назвать либо UUID, либо GUID без изменения его символов.

Важное различие заключается между имя и схема генерации. Вызов значения GUID не сообщает вам, является ли оно версией 4, версией 7, более старой версией, основанной на времени, или конструкцией, зависящей от платформы. Вызов его UUID не гарантирует, что приложение принимает все стандартизированные версии. Метка идентифицирует широкий тип данных; версия и окружающий контракт определяют, как ведет себя значение.

ВопросGUIDUUID
Типичный контекстAPI-интерфейсы Microsoft, .NET, Windows, SQL ServerИнтернет-стандарты, базы данных, распределенные системы, API
Обычный размер128 бит128 бит
Знакомая текстовая форма8-4-4-4-12 шестнадцатеричные группы8-4-4-4-12 шестнадцатеричные группы
Имя указывает версию?НетНет
Могут ли термины относиться к одному и тому же значению?ДаДа

Вот почему при сравнении GUID и UUID следует уделять меньше внимания тому, какое слово является «правильным», а больше — системным требованиям, стоящим за этим словом.

Почему два имени?

UUID означает универсальный уникальный идентификатор. Это терминология, используемая стандартами IETF, которые определяют макет, варианты, версии, текстовое представление и аспекты генерации. GUID означает глобальный уникальный идентификатор и прочно обосновался на платформах Microsoft. Тип .NET `System.Guid` это знакомый пример.

Оба названия сохранились, потому что экосистемы программного обеспечения сохраняют свой словарь для совместимости. Microsoft API может предоставлять Руководствосхема PostgreSQL может использовать uuid столбец, а API JSON может вызвать поле идентификатор. Все три могут иметь одно и то же каноническое текстовое значение.

Нет необходимости переименовывать каждое поле GUID в UUID просто ради терминологии. Необходимо документировать принятую версию, имеет ли значение регистр, принимаются ли фигурные скобки и как значение сериализуется, когда оно пересекает границы системы.

Как выглядит UUID?

Общая удобочитаемая форма содержит 32 шестнадцатеричных цифр, разделенных на пять групп:

```текст

ххххххх-хххх-Mxxx-Nxxx-xxxxxxxxxxxx

```

Длины групп: 8, 4, 4, 4 и 12. Каноническая строка, включающая четыре дефиса, имеет длину 36 символов. М указывает полубайт версии в макетах, предусмотренных стандартом, а биты, представленные Н определить вариант. Например, 4 в 550e8400-e29b-41d4-a716-446655440000 идентифицирует UUID версию 4.

Диаграмма ClockTools, показывающая 128-битный текстовый макет UUID, поле версии и поле варианта.
Диаграмма ClockTools, показывающая 128-битный текстовый макет UUID, поле версии и поле варианта.

Шестнадцатеричный регистр не меняет числовое значение. A716 и а716 представляют одни и те же биты. Дефисы, фигурные скобки, а урна:uuid: префикс или компактная форма могут изменить строку, принятую анализатором, но они не обязательно изменяют базовый идентификатор. Это одна из причин, по которой ClockTools отделяет генерацию от форматирования.

Чем отличаются UUID v4 и UUID v7?

UUID v4 — широко используемая случайная версия. Большинство доступных битов заполняются из случайного или псевдослучайного источника, при этом необходимые биты устанавливаются для версии и варианта. Это хорошо работает, когда идентификаторы не должны раскрывать порядок создания и когда генерация происходит независимо для многих клиентов или служб.

UUID v7 заказан по времени. Его первые биты 48 содержат временную метку эпохи Unix в миллисекундах, за которой следуют версия, вариант и случайные данные. Значения, сгенерированные позже, обычно сортируются по значениям, сгенерированным ранее. Это может быть более удобно для упорядоченных индексов и журналов, поскольку новые записи с меньшей вероятностью попадут в несвязанные позиции в ключевом пространстве.

Упорядоченное время не означает совершенно последовательное. Множественным значениям UUID v7, созданным в течение одной и той же миллисекунды, по-прежнему требуются дополнительные данные, чтобы оставаться разными, и поведение часов имеет значение. Это также не означает секретности: значение v7 изначально раскрывает приблизительное время создания. RFC 9562 содержит нормативные макеты и рекомендации по созданию для обеих версий.

Какую версию выбрать?

Выберите версию, соответствующую принимающей системе и нужному вам поведению.

ТребованиеОбычно предпочитаютПочему
Широкая совместимость с существующими системами, поддерживающими UUID.UUID версия 4Это зрело, знакомо и общепринято.
В идентификаторе нет информации о времени создания.UUID версия 4Значение является случайным, а не упорядоченным по времени.
Ключи, которые примерно соответствуют времени созданияUUID v7Префикс временной метки поддерживает хронологическую сортировку.
Для существующего API явно требуется одна версия.Требуемая версияСовместимость превосходит предпочтения
Видимый человеку короткий кодНи то, ни другое по умолчаниюUUID — это идентификаторы, а не понятные коды подтверждения.
Токен аутентификации или секрет сброса пароляСпециальный дизайн безопасного токенаУникальность и секретность - разные свойства

Не меняйте версии только потому, что одна звучит новее. Сначала проверьте драйвер базы данных, библиотеку проверки, схему API и последующих потребителей. Валидатор, написанный много лет назад, может отклонить действительное значение v7, поскольку он распознает только более старые версии.

Может ли один и тот же UUID выглядеть по-другому?

Да. Одни и те же базовые биты 128 могут быть представлены в стандартном нижнем регистре, верхнем регистре, фигурных скобках, тексте в кавычках, компактном шестнадцатеричном формате или форме URN. ClockTools также может упаковывать сгенерированные значения в виде строк, CSV, JSON или выходных данных, удобных для SQL. Это выбор представления, а не новые идентификаторы.

Бинарный обмен заслуживает большего внимания. API некоторых платформ исторически предоставляют поля GUID или массивы байтов в порядке, который отличается от сетевого порядка байтов, описанного современными спецификациями UUID. Обращение строки туда и обратно может выглядеть корректным, тогда как необработанный обход 16 байта — нет. Когда системы обмениваются двоичными UUID, документируйте порядок байтов и проверяйте его по известному значению вместо того, чтобы предполагать, что каждая библиотека сериализуется одинаково.

Для строк запроса URL-адреса или сегментов пути по возможности используйте каноническую форму. Если окружающее значение необходимо экранировать, ClockTools URL-кодировщик может закодировать полный параметр без изменения самого идентификатора.

Как следует хранить GUID и UUID?

Предпочитайте собственный тип базы данных UUID или уникальный идентификатор, если он доступен и поддерживается вашими инструментами. Собственный тип проверяет форму и обычно хранит битовое значение 128 более компактно, чем текстовый столбец с символами 36. Это также может сделать намерения более понятными для читателей схемы.

Хранение текста остается разумным, когда в системе отсутствует собственный тип или когда для совместимости требуется строка. В этом случае нормализуйте одно представление, определите допустимую длину и избегайте смешивания фигурных скобок, URN, заглавных букв и компактных значений в одном столбце. Согласованное форматирование упрощает проверки на равенство, экспорт и поддержку.

Поведение индекса зависит от базы данных, рабочей нагрузки, шаблона вставки и конструкции индекса. UUID v7 может улучшить локальность для некоторых рабочих нагрузок с первичным ключом, требующих большого количества операций добавления, но это не универсальная гарантия производительности. Измеряйте результаты с помощью собственной базы данных и реалистичных данных. Деловой смысл оставляйте в отдельных столбцах; идентификатор не должен заменять метку времени создания, номер клиента или правило контроля доступа.

Как ClockTools может их генерировать и проверять?

Этот онлайн-генератор GUID и UUID предлагает целенаправленный рабочий процесс:

1. Выберите UUID v4 для случайных идентификаторов или UUID v7 для идентификаторов, упорядоченных по времени.

2. Выберите количество от 1 до 1,000.

3. Выберите стандартное форматирование, форматирование в верхнем регистре, фигурные скобки, кавычки, компактное форматирование или форматирование URN.

4. Выберите обычную кодировку, Base64, Base64URL или URL-адрес, если этого требует пункт назначения.

5. Экспортируйте в виде строк, CSV, JSON или SQL или копируйте результаты напрямую.

6. Вставьте существующее значение в валидатор, чтобы проверить его нормализованную форму, версию, вариант и распознанные специальные значения.

Генерация использует криптографический случайный источник браузера. UUID v4 устанавливает необходимые биты версии и варианта. UUID v7 объединяет текущее значение миллисекунды эпохи Unix со случайными данными и необходимыми битами макета. На странице не требуется загружать сгенерированные идентификаторы для этих операций.

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

Каких ошибок следует избегать?

Первая ошибка — трактовать «уникальный» как «невозможность столкновения». Проекты UUID делают случайное столкновение чрезвычайно маловероятным при правильном создании, но программное обеспечение все равно должно использовать ограничение уникальности, когда дубликаты могут быть вредными. Неисправный случайный источник, скопированный прибор, ошибка импорта или ошибка приложения могут создать дубликат, даже если математические расчеты верны.

Вторая ошибка — использование UUID в качестве доказательства авторизации. Трудно угадываемый идентификатор может снизить вероятность случайного обнаружения, но сам по себе он не дает безопасного разрешения. Проверяйте доступ аутентифицированного пользователя по каждому защищенному запросу.

Третья ошибка — молчаливое изменение представления. Удаление дефисов, декодирование Base64 или преобразование в байты должны быть обратимыми и протестированными. Сохраняйте одно каноническое значение в журналах, чтобы операторы могли отслеживать его между службами. Если анализатор отклоняет идентификатор, проверьте версию и формат перед созданием замены; замена идентификатора может привести к поломке ссылок, которые уже указывают на него.

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

Являются ли GUID и UUID одним и тем же?

Обычно да. Оба термина обычно относятся к 128-битному идентификатору одной и той же стандартной текстовой формы. UUID — это термин стандартов IETF, а GUID особенно распространен в экосистемах Microsoft.

Всегда ли GUID является версией UUID 4?

Нет. Слово GUID не идентифицирует ни одну версию UUID. Значение в форме GUID может использовать версию 4, версию 7, другую стандартизированную версию или метод генерации, зависящий от платформы.

Должен ли я использовать UUID v4 или UUID v7?

Используйте версию 4, если вам нужен широко совместимый случайный идентификатор без встроенного времени создания. Рассмотрите версию 7, когда хронологическая сортировка и местоположение индекса имеют значение, при условии, что каждая принимающая система поддерживает ее.

Сколько символов содержится в стандартном GUID или UUID?

Каноническая текстовая форма содержит 32 шестнадцатеричных цифр и четыре дефиса, всего 36 символов. Фигурные скобки, префиксы URN, компактное форматирование или кавычки могут изменить отображаемую длину.

Могу ли я использовать UUID в качестве секретного токена?

Не думайте, что уникальность обеспечивает секретность. Токены аутентификации и сброса должны быть разработаны специально для обеспечения безопасности и непредсказуемости учетных данных, а также проверки срока действия и авторизации.

Загружает ли ClockTools сгенерированные UUID?

Генератор GUID выполняет генерацию, форматирование и проверку локально в браузере. Он использует криптографический случайный источник браузера для случайных частей поддерживаемых UUID.

Об авторе

Винешваран Виджаякумар

Основатель, разработчик и издатель ClockTools | Менеджер по цифровому маркетингу | Индия

Винешваран — инженер с многолетним техническим опытом, в том числе профессиональной работой менеджером по цифровому маркетингу в Дубае. Его работа объединяет анализ данных, поисковую оптимизацию, оптимизацию коэффициента конверсии, контент-системы, визуальное производство, а также прикладной искусственный интеллект и машинное обучение. В ClockTools он превращает этот междисциплинарный опыт в специализированные утилиты для браузера и практические руководства с учетом исходных кодов.

Профиль в LinkedIn