🔧Toolify

Генератор UUID (v4 случайный, v7 упорядоченный по времени)

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

Как это работает

Когда использовать v4, а когда v7

UUID v4 — полностью случайный: 122 случайных бита плюс биты версии/варианта, что даёт около 5,3 × 10³⁶ возможных значений. Коллизия двух UUID v4 практически невозможна. Используйте v4 везде, где не нужна сортировка: идентификаторы API-запросов, анонимные идентификаторы пользователей.

UUID v7 (RFC 9562, опубликован в 2024 году) начинается с 48-битной метки Unix-времени в миллисекундах, за которой следуют 74 случайных бита. Они лексикографически сортируются в порядке создания, что критически важно для производительности БД — первичные ключи, упорядоченные по времени, всегда вставляются в конец B-дерева без случайного разбиения страниц. Используйте v7 для первичных ключей в новых таблицах.

Как работает этот генератор

Оба варианта — v4 и v7 — используют crypto.getRandomValues, безопасный источник случайности браузера, тот же примитив, что используют HTTPS и менеджеры паролей. v4 заполняет 122 бита случайными значениями. v7 делит 48 бит метки времени + 74 случайных бита плюс маркеры версии/варианта согласно RFC.

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

Типичные проблемы с UUID

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

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

UUID состоят из 36 символов с дефисами (32 шестнадцатеричных + 4 дефиса). Занимают 16 байт в бинарном виде или 36 байт в текстовом. Для столбцов с высокой кардинальностью рассмотрите хранение в виде бинарного BLOB / нативного типа UUID вместо VARCHAR(36).

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

Криптографически ли надёжны эти UUID?

Да. Оба — v4 и v7 — используют crypto.getRandomValues, безопасный API случайных чисел. v4 имеет 122 бита энтропии, v7 — 74.

Почему v7 лучше для ключей базы данных?

Потому что UUID v7 сортируются по времени создания, поэтому вставки всегда попадают в конец индекса B-дерева, а не в случайные позиции. Это исключает разбиение страниц и значительно улучшает производительность записи.

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

Теоретически да. Для v4 потребовалось бы сгенерировать ~10¹⁸ UUID прежде, чем 50% вероятность коллизии. У v7 временной компонент снижает это до ~2⁷⁴ в пределах одной миллисекунды — всё равно практически невозможно.

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

Да. GUID — название Microsoft для UUID. Тот же формат, те же гарантии уникальности.

Какой формат у UUID?

8-4-4-4-12 шестнадцатеричных цифр с дефисами. Всего 32 hex-символа + 4 дефиса = 36 символов. Нижний регистр по соглашению RFC.

Стоит ли использовать v1 вместо v7?

v1 включает MAC-адрес устройства, что является утечкой приватности. v7 пришёл на смену v1 для упорядоченных по времени ID без раскрытия аппаратных идентификаторов.

Можно ли сгенерировать v4 в URL-safe Base64?

Не напрямую здесь. Закодируйте 16 байт UUID как URL-safe Base64 для получения 22-символьного идентификатора. Полезно для создания коротких URL.

Данные покидают браузер?

Нет. Генерация происходит полностью в вашем браузере.

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

Обновлено:

Попробуйте наши ИИ-промпты →