Перейти к основному содержимому
Tooletto

Генератор UUID

Генерируйте случайные UUID — версии 4 для общего использования или версии 7 для упорядоченных по времени идентификаторов, которые эффективно индексируются в базе данных. Создавайте от одного до тысячи за раз, полностью локально.

  • Файлы никогда не покидают ваше устройство
  • Бесплатно, без регистрации
  • Без водяных знаков
  • Работает офлайн после загрузки
Loading tool…

Как пользоваться: генератор uuid

  1. 1

    Выберите версию

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

  2. 2

    Задайте количество

    Генерируйте от одного до тысячи UUID за раз.

  3. 3

    Скопируйте или скачайте

    Скопируйте список в буфер обмена или скачайте как текстовый файл.

Какую задачу на самом деле решает UUID

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

Почему v4 и v7 оба «случайны», но решают разные задачи

UUID версии 4 заполняет практически все 128 бит криптографически случайными данными, из-за чего каждое сгенерированное значение оказывается полностью непредсказуемым и никак не выдаёт, когда оно было создано и в каком порядке относительно любого другого UUID v4, — именно это свойство нужно, например, для токена безопасности, где предсказуемость сама по себе была бы уязвимостью. UUID версии 7, стандартизированный гораздо позже, в RFC 9562 (2024 год), намеренно жертвует частью этой непрозрачности: он размещает временную метку с точностью до миллисекунды в первых битах, поэтому UUID v7, созданный позже, при сортировке всегда оказывается после созданного раньше, а оставшиеся биты остаются случайными и столь же непредсказуемыми, как и в v4. Это не конкурирующие подходы, где один просто «лучше» другого, — они меняют одну и ту же базовую случайность на разные свойства в зависимости от того, что реально важно для конкретной задачи: упорядоченность или равномерная непредсказуемость.

Почему база данных со случайными первичными ключами замедляется по мере роста

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

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

В чём разница между UUID v4 и v7?

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

Какую версию использовать для первичного ключа базы данных?

v7. Случайные ключи v4 разбрасывают вставки по всему B-дереву индекса, что фрагментирует его и сильно замедляет запись при больших объёмах данных. Ключи v7 добавляются по порядку, поэтому вставки остаются последовательными — именно поэтому v7 стандартизировали в 2024 году.

Могут ли два UUID совпасть?

Математически возможно, практически — нет. У UUID v4 122 случайных бита; чтобы совпадение стало вероятным, нужно сгенерировать около 2.7 × 10^18 идентификаторов. Для сравнения: это больше, чем песчинок на Земле.

Насколько безопасно они генерируются?

Да, безопасно. Используется `crypto.getRandomValues` — криптографический источник случайности вашей операционной системы, а не `Math.random`. Это важно, если UUID когда-либо используется как токен доступа — ссылка для общего доступа, URL отписки, ключ для сброса пароля.

UUID и GUID — это одно и то же?

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

Частые задачи: генератор uuid