Skip to main content
CheckTown
Генераторы

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

Опубликовано 5 мин чтения
В этой статье

Что такое UUID?

UUID (Universally Unique Identifier) — это 128-битный идентификатор, уникальность которого гарантируется в любом месте и в любое время без необходимости централизованного контроля. UUID записывается как 32 шестнадцатеричных символа в 5 группах, разделённых дефисами: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Существует несколько версий UUID, каждая из которых генерируется по-своему. Версия 4 (случайная) используется наиболее широко: она генерирует 122 случайных бита, делая коллизии практически невозможными — чтобы получить 50% шанс столкновения, пришлось бы создавать миллиард UUID в секунду на протяжении 85 лет.

Как работает генерация UUID

UUID v4 использует криптографически стойкую случайную генерацию.

  • Случайные биты — 122 случайных бита генерируются с помощью CSPRNG
  • Маркировка версии — биты 12–15 третьей группы устанавливаются в 0100 для обозначения версии 4
  • Маркировка варианта — биты 6–7 четвёртой группы устанавливаются в 10 для обозначения варианта RFC 4122

Попробуйте бесплатно — без регистрации

Сгенерировать UUID →

Когда использовать UUID

UUID — предпочтительный тип идентификатора для распределённых систем и баз данных.

  • Первичные ключи баз данных — используйте UUID-ключи в распределённых системах, чтобы избежать конфликтов ID при слиянии данных
  • Токены сессий — генерируйте UUID для идентификаторов сессий и временных токенов
  • Именование файлов — используйте UUID для создания уникальных имён файлов при загрузке пользователями или генерации ресурсов

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

В чём разница между UUID v1, v3, v4 и v5?

v1 основан на времени и включает MAC address, что делает его отслеживаемым. v3 и v5 детерминированы — они хешируют пространство имён и имя, каждый раз давая один и тот же UUID (v3 использует MD5, v5 — SHA-1). v4 случаен и применяется чаще всего для универсальных уникальных ID. v7 (новый стандарт) сочетает метку времени и случайность для сортируемых UUID.

Что лучше для первичных ключей: UUID или автоинкрементные целые числа?

Автоинкрементные числа проще и экономичнее по хранению. UUID предпочтительнее в распределённых системах, при слиянии данных из нескольких источников, при отображении ID в URL без раскрытия последовательности, а также при генерации ID на стороне клиента до вставки в базу данных. Для одиночных серверов автоинкремент зачастую достаточен.

Насколько UUID действительно уникальны?

UUID v4 имеет 2^122 возможных значений — около 5,3 × 10^36. Вероятность генерации двух одинаковых UUID настолько мала, что для любого практического применения её можно считать нулевой. Парадокс дней рождения означает, что для 50% шанса коллизии потребуется примерно 2,71 квинтиллиона UUID.

Похожие инструменты