devopscodepro
Язык
Работает полностью в браузере — данные не покидают страницу.

UUID / ULID генератор

Случайные UUID v4, монотонные UUID v7 и ULID — генерация пачками с опциями форматирования.

 
RFC 9562 UUID v4 · crypto.getRandomValues

Как выбрать между v4, v7 и ULID

Все три — 128-битные идентификаторы, которые можно генерировать ни с чем не согласовываясь. Разница в упорядоченности: v4 полностью случаен, а v7 и ULID помещают миллисекундную метку времени в старшие биты, поэтому созданные идентификаторы сортируются по времени создания.

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

Что брать для первичного ключа в базе?

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

Чем UUID v7 отличается от ULID?

Это одна идея в двух кодировках. ULID — 26 символов Crockford base32: короче, регистронезависим, приятен в URL. v7 — стандартный UUID, поэтому его уже принимают все типы баз и библиотеки. Берите ULID ради читаемости, v7 ради совместимости.

Не утекает ли информация через v7?

Он раскрывает время создания записи с точностью до миллисекунды. Обычно безвредно, иногда нет: для публичного угадываемого идентификатора, где время создания чувствительно, v4 раскрывает меньше.

Могут ли два таких идентификатора совпасть?

На практике нет. В v4 122 случайных бита, в ULID 80 на миллисекунду; вероятность настолько мала, что отказ оборудования — более реалистичная проблема.

Смежные инструменты: Timestamp, Генератор паролей и Base64.