Генерация UUID v1, v3, v4, v5, v7 и ULID пачкой, ключи идемпотентности, разбор версии и времени создания.
Данные обрабатываются в браузере и никуда не отправляются
Здесь появится результат
Введите данные слева - результат появится сразу
Выберите тип идентификатора - один или несколько создаются сразу, а кнопка «Сгенерировать ещё» делает новую партию. UUID v4 - случайный, самый распространённый; UUID v7 содержит время создания и сортируется, поэтому хорош для ключей в базе данных; v5 и v3 всегда дают одинаковый результат для одного имени в одном пространстве имён; ULID - компактная сортируемая запись из 26 символов. Запись можно выбрать: строчные или заглавные буквы, без дефисов, в фигурных скобках или как urn:uuid:.
В режиме «Разбор» вставьте идентификаторы по одному в строке - инструмент покажет версию, вариант, время создания (для v1, v7 и ULID), число и сокращённую запись в Base64URL. Такой UUID удобен и как ключ идемпотентности: передайте его в заголовке Idempotency-Key, если API поддерживает дедупликацию по этому ключу; сам заголовок не предотвращает дубли.
Вот что чаще всего путают при работе с идентификаторами:
UUID v4 в первичном ключе базы данных
Случайные значения вставляются в индекс в произвольные места, из-за чего растёт его фрагментация и падает скорость вставки при больших таблицах. Для первичных ключей лучше UUID v7 или ULID, сортируемые по времени.
UUID не является секретом
Случайный v4 трудно угадать, но UUID нельзя считать токеном авторизации: для секретов нужны специально предназначенные для этого токены нужной длины. А v1 и v7 вообще содержат время создания.
v3 и v5 - не случайные
Эти версии - хеш от пространства имён и имени: одинаковые входные данные дают один и тот же UUID. Это удобно для идентификаторов, которые должны воспроизводиться, и неверно, если нужна уникальность.
Разные записи одного UUID
Один и тот же UUID записывают с дефисами и без, в верхнем и нижнем регистре, в фигурных скобках (GUID в Windows). Для сравнения приводите значения к одной записи.
GUID и UUID - одно и то же
GUID - название UUID в Microsoft. Отличие лишь в привычной записи (заглавные буквы и фигурные скобки) и порядке байт в бинарном представлении .NET.
Идемпотентность требует хранения ключа
Idempotency-Key работает, только если сервер запоминает ключ и результат первого запроса на какое-то время. Один UUID на одну операцию: на повтор той же операции отправляйте тот же ключ, на новую - новый.
Нет - 100%. Сайт целиком статический, у него нет серверной части. Идентификаторы создаются в вашем браузере генератором случайных чисел вашей системы и никуда не передаются.
v4 состоит из случайных битов, v7 - из времени создания в миллисекундах и случайных битов. v7 сортируется по времени, поэтому лучше подходит для ключей в базе данных и логов; v4 проще и не раскрывает время создания.
ULID - это 128 бит (48 бит времени и 80 случайных), записанные 26 символами Crockford Base32. Он сортируется как строка и короче записи UUID. Преобразуется в UUID без потерь: оба хранят 16 байт.
Теоретически да, практически - нет: из 122 случайных бит вероятность повтора при миллиарде идентификаторов в секунду в течение столетий ничтожна. Следите лишь за тем, чтобы генератор был криптографическим, как в браузере.
Сгенерируйте UUID на стороне клиента перед первой попыткой и передавайте его в заголовке Idempotency-Key. При повторе после таймаута отправьте тот же ключ - сервер вернёт результат первой попытки, а не создаст дубль.
Версия (4, 7, 5...) - способ создания, она записана в первой цифре третьей группы. Вариант определяет раскладку остальных битов: у современных UUID это RFC 4122 / RFC 9562 (вторая цифра четвёртой группы 8, 9, a или b).
Для версий 1 и 7 и для ULID - да: время хранится в самом идентификаторе, инструмент покажет его в режиме «Разбор». У v4, v3 и v5 времени нет.
Nil - все нули, Max - все единицы. Это служебные значения (например, «идентификатор не задан»), в реальных данных их обычно не используют.
REST, gRPC, SOAP, GraphQL и JSON-RPC, архитектурные подходы, SQL и NoSQL, брокеры сообщений и работа с ИИ. Программа курса помогает систематизировать знания об API и интеграциях; содержание и условия обучения смотрите на Stepik.