Генератор UUID: как создать UUID v4 и v7 и чем они отличаются

Нужен уникальный идентификатор для записи в базе, файла, сессии или запроса. Можно использовать автоинкремент, но он не всегда подходит: выдаёт последовательность, зависит от базы и плохо работает при слиянии данных. Генератор UUID создаёт уникальные идентификаторы UUID (GUID): случайные версии 4 или упорядоченные по времени версии 7. До 100 штук за раз, в нижнем или верхнем регистре, с дефисами или без.

В этой статье разберём, что такое UUID, чем v4 отличается от v7, почему v7 удобнее для баз данных и почему UUID — не секрет.

Интерфейс онлайн-инструмента Генератор UUID
Интерфейс онлайн-инструмента Генератор UUID

Что умеет генератор

Генератор UUID создаёт идентификаторы по заданным параметрам.

Параметр Что делает
Версия UUID v4 — случайный, v7 — упорядоченный по времени
Количество До 100 штук за раз
Верхний регистр Выводит в верхнем регистре
Без дефисов Убирает дефисы из записи

Результат показывается списком: каждый UUID можно скопировать отдельной кнопкой.

Всё выполняется в браузере: введённые данные никуда не отправляются.

Что такое UUID

UUID (Universally Unique Identifier) — универсальный уникальный идентификатор. Это строка из 32 шестнадцатеричных символов, разбитая на группы дефисами: 9f7499da-4f55-4368-a1af-0004bae526e0

Стандартная запись — 8-4-4-4-12 символов. Всего 128 бит, из которых часть отведена под версию и вариант.

UUID используется везде, где нужен идентификатор, который не требует централизованной выдачи:

Где используется Зачем
Базы данных Первичные ключи, особенно в распределённых системах
API Идентификаторы ресурсов и запросов
Файлы и объекты Уникальные имена в хранилищах
Сессии и токены Идентификаторы сессий, ключи идемпотентности
Логи и трассировка Идентификатор запроса для сквозной трассировки

UUID v4: полностью случайный

UUID v4 — 122 случайных бита и 6 бит служебных (версия и вариант). Генерируется из криптографического источника случайности.

Свойства:

  • Не зависит от времени и места. Два UUID v4, созданные в разных системах, не пересекутся.
  • Не даёт информации. По нему нельзя узнать, когда и где он создан.
  • Хорошо подходит для публичных идентификаторов. Не раскрывает порядок создания и количество записей.

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

UUID v7: упорядоченный по времени

UUID v7 — новый формат, в котором старшие биты содержат метку времени, а остальное — случайные данные.

Свойства:

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

Именно поэтому v7 рекомендуют для первичных ключей в базах данных: он даёт уникальность v4 и порядок, близкий к автоинкременту, но без привязки к конкретной базе.

Сравнение v4 и v7

Свойство UUID v4 UUID v7
Основа Случайность Время + случайность
Упорядоченность Нет Да, по времени
Информация о времени Нет Есть
Фрагментация индекса Высокая Низкая
Подходит для первичного ключа Да, но с оговорками Да, предпочтительно
Подходит для публичных ID Да Да, но раскрывает время

Практическое правило: для базы данных — v7, для публичных идентификаторов, где нежелательно раскрывать время, — v4.

Формат: регистр и дефисы

UUID можно записывать по-разному.

Формат Пример Где используется
Нижний регистр с дефисами 9f7499da-4f55-4368-a1af-0004bae526e0 Стандартная запись, большинство систем
Верхний регистр с дефисами 9F7499DA-4F55-4368-A1AF-0004BAE526E0 Некоторые системы и базы
Без дефисов 9f7499da4f554368a1af0004bae526e0 Компактная запись, URL, имена файлов

Стандарт рекомендует нижний регистр с дефисами, но многие системы принимают любой формат. Если идентификатор идёт в URL или имя файла, иногда удобнее без дефисов — короче и не требует экранирования.

UUID — это не секрет

Важное предупреждение: UUID не является секретом. Он уникален, но не защищён. Если UUID используется как идентификатор сессии или токен доступа, его нужно защищать так же, как пароль, — а лучше использовать для этого криптографически стойкие токены, а не UUID.

UUID v4 содержит 122 случайных бита, и угадать его практически невозможно. Но это свойство уникальности, а не защиты: если UUID попал в лог, URL или переписку, он раскрыт. Для секретов используйте специализированные генераторы токенов.

Зачем генерировать UUID

Первичные ключи в базе. Особенно в распределённых системах, где автоинкремент неудобен.

Идентификаторы в API. Ресурсы, запросы, ключи идемпотентности.

Имена файлов и объектов. Уникальные имена в хранилищах без риска совпадения.

Сессии и трассировка. Идентификатор запроса для сквозной диагностики.

Тестирование. Сгенерировать набор уникальных значений для тестов.

Ограничения инструмента

  • До 100 штук за раз. Для большего количества запускайте несколько раз.
  • Только v4 и v7. Другие версии UUID не поддерживаются.
  • Не криптографический секрет. UUID подходит для идентификации, но не для защиты.

Как пользоваться: пошагово

  1. Выберите версию: v4 — полностью случайный, v7 — начинается с времени создания.
  2. Укажите количество и формат.
  3. Нажмите «Создать UUID» и скопируйте нужные.

Типичные ошибки

Использовать UUID как секрет. UUID уникален, но не защищён. Для токенов и сессий нужны криптографически стойкие значения.

Брать v4 для первичного ключа в большой базе. Случайные вставки фрагментируют индекс. Для баз данных лучше v7.

Считать, что UUID не пересекутся никогда. Вероятность ничтожна, но не нулевая. Для критичных систем стоит учитывать.

Путать UUID и GUID. Это одно и то же: GUID — название UUID в экосистеме Microsoft.

Игнорировать формат. Некоторые системы требуют конкретный регистр или наличие дефисов. Проверяйте требования.

Ожидать, что v7 скрывает время. Наоборот: v7 содержит метку времени. Если время создания нужно скрыть, используйте v4.

Вопросы и ответы

Чем v7 лучше v4? UUID v7 растут со временем, поэтому их удобно использовать как первичные ключи в базах данных: индекс не фрагментируется.

Могут ли UUID совпасть? Вероятность совпадения двух UUID v4 ничтожно мала: в них 122 случайных бита.

UUID — это секрет? Нет. UUID уникален, но не защищён. Для токенов и сессий используйте криптографически стойкие значения.

Чем UUID отличается от GUID? Ничем по сути: GUID — это название UUID в терминологии Microsoft.

Можно ли создать больше 100 UUID за раз? Инструмент создаёт до 100 штук за запуск. Для большего количества запустите его несколько раз.

Почему v7 содержит время? В v7 старшие биты отведены под метку времени, чтобы идентификаторы были упорядочены. Это удобно для баз данных, но раскрывает время создания.

Итог

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

Предыдущая запись

Base64: как закодировать текст и раскодировать строку обратно

Онлайн-кодирование текста в Base64 и декодирование обратно. Поддерживаются кириллица, эмодзи и вариант Base64URL для адресов и токенов. Всё выполняется в браузере, данные никуда не отправляются.
Далее