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

Генератор UUID v7

Готовый вариант «Генератор UUID»

Генерируйте упорядоченные по времени идентификаторы UUID v7 — версию, стандартизированную в RFC 9562 для использования в качестве первичных ключей базы данных. Поскольку временная метка идёт в начале значения, последовательные вставки остаются последовательными, и индекс не фрагментируется так, как это происходит со случайными ключами v4.

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

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

  1. 1

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

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

  2. 2

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

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

  3. 3

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

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

Почему v7 стандартизировали только в 2024 году

Годами инженерные команды, которым была нужна и устойчивость UUID к коллизиям, и удобная для индексов упорядоченность последовательного целого числа, были вынуждены создавать собственные нестандартные гибриды — обычно добавляя к случайному UUID вручную сгенерированную временную метку в качестве префикса. В той или иной форме этот подход использовали несколько известных компаний, работающих с распределёнными системами, ещё до появления официального стандарта. RFC 9562 закрепил этот шаблон в виде официальной версии UUID именно для того, чтобы реализации на разных языках и в разных базах данных могли создавать и распознавать одну и ту же упорядоченную по времени структуру, без того чтобы каждая команда независимо изобретала свой немного другой, несовместимый вариант одной и той же идеи.

Где именно в значении находится временная метка

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

Что «удобство для индекса» значит для реального приложения

Помимо чистой скорости вставки, у упорядоченного по времени первичного ключа есть и второе практическое преимущество, важное в повседневной работе: строки естественным образом возвращаются в порядке создания при простом запросе `ORDER BY id`, без необходимости заводить отдельную колонку `created_at` и дополнительный индекс на ней только ради хронологической сортировки записей. Для таблицы, которую часто запрашивают «сначала самое свежее» — журнал активности, очередь, журнал аудита, — первичный ключ v7 даёт такую упорядоченность бесплатно, как побочный эффект самого идентификатора, а не как отдельную задачу, которую нужно поддерживать.

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

В чём разница между 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 часто заключают их в фигурные скобки и используют верхний регистр, и этот инструмент умеет генерировать оба варианта.