Генератор UUID
Создаёт идентификаторы двух версий. Четвёртая — привычная случайная, 122 бита случайности; такой идентификатор ни на что не намекает и ни с чем не связан. Седьмая устроена иначе: первые 48 битов — это отметка времени в миллисекундах, поэтому идентификаторы сортируются по порядку создания. Для первичного ключа в базе это принципиально: случайные v4 ложатся в индекс вразнобой и заставляют его постоянно перестраиваться, а упорядоченные v7 дописываются в конец. Случайность берётся у криптографического модуля браузера, тем же способом, что и для ключей шифрования. Вторая вкладка разбирает готовый идентификатор: показывает версию, вариант и, если это v7, восстанавливает дату создания.
Как пользоваться
- Четвёртая для общего случая, седьмая для ключей в базе.
- От одного до тысячи за раз.
- С дефисами, без них, в верхнем регистре, в скобках или как URN.
- Вторая вкладка показывает версию и дату создания для v7.
Частые вопросы
Идут ли идентификаторы v7 строго по возрастанию
В этом инструменте да. Одной отметки времени для этого мало: пачка из полусотни создаётся внутри одной миллисекунды, метка у всех совпадает, а остальные биты случайны — и порядок внутри миллисекунды получается произвольным. Стандарт RFC 9562 разрешает занять под счётчик двенадцать битов сразу за меткой времени, что здесь и сделано. Поэтому пачка любого размера идёт строго по возрастанию, и в индексе базы она ляжет подряд.
Чем UUID версии 7 лучше версии 4 для базы данных
Порядком. В v7 первые 48 битов — это время создания в миллисекундах, поэтому новые идентификаторы всегда больше старых. Когда такой ключ становится первичным, записи ложатся в конец индекса подряд. У случайного v4 каждая новая запись попадает в произвольное место дерева, страницы индекса дробятся, кэш перестаёт работать, и на больших таблицах вставка заметно замедляется. При этом v7 остаётся полноценным UUID и годится везде, где принимается обычный.
Раскрывает ли UUID v7 что-нибудь лишнее
Да, время создания: из идентификатора восстанавливается момент с точностью до миллисекунды. Если по идентификатору в адресе строки не должно быть понятно, когда объект создан, берите v4. Порядковость v7 работает в обе стороны: она полезна базе и она же выдаёт хронологию наружу.
Какова вероятность совпадения двух UUID
Пренебрежимо мала. В v4 случайных битов 122, то есть возможных значений порядка пяти на десять в тридцать шестой степени. Чтобы вероятность хотя бы одного совпадения дошла до одного процента, нужно сгенерировать около трёх на десять в семнадцатой степени идентификаторов. На практике совпадения случаются по другой причине — из-за плохого источника случайности, поэтому здесь используется криптографический модуль браузера.
Что означают версия и вариант
Версия — способ построения: 1 по времени и MAC-адресу, 4 случайный, 5 по хешу имени, 7 по времени и случайности. Она записана в первом знаке третьей группы. Вариант отвечает за раскладку битов и почти всегда равен единице по RFC 4122; он записан в первом знаке четвёртой группы, и у корректных идентификаторов там стоит 8, 9, a или b. Инструмент показывает оба поля при разборе.
Чем отличаются форматы записи
Только оформлением, значение одно и то же. Канонический вид — 36 знаков с дефисами. Без дефисов получается 32 знака, так UUID хранят в полях фиксированной длины. Фигурные скобки достались от систем Microsoft. Запись с приставкой urn:uuid: используется там, где нужен полноценный идентификатор ресурса. Регистр значения не имеет, но RFC 4122 предписывает выводить в нижнем.
Можно ли использовать UUID в адресе страницы
Можно, и это обычная практика для внутренних разделов: идентификатор не выдаёт ни порядковый номер записи, ни их общее количество, в отличие от числового id. Для публичных страниц, которые должны индексироваться, лучше человекочитаемый адрес: UUID в ссылке никому ни о чём не говорит и не помогает ни человеку, ни поиску.
Насколько это случайно
Случайность даёт crypto.getRandomValues — тот же источник, что применяется для криптографических ключей. Если его в браузере нет, генерация останавливается с сообщением: подставлять вместо него Math.random было бы опасно, потому что его последовательность предсказуема.
Данные куда-то отправляются
Нет, всё создаётся в браузере.
Похожие инструменты
Число или список до тысячи значений в диапазоне: режим без повторов, сортировка. Отдельно вытягивает жребий из списка имён.
ОткрытьПроверка надёжности пароляСтойкость в битах, время перебора и разбор слабых мест: словарные слова под заменой символов, клавиатурные ряды, годы и повторы.
ОткрытьГенератор паролейПароль длиной до 64 символов с выбором наборов и отсевом похожих знаков. Показывает стойкость в битах и время перебора, делает до 50 паролей пачкой.
ОткрытьКолесо фортуныСлучайный выбор из своего списка: вес секторов пометкой «×3», режим на выбывание и ссылка, по которой открывается то же колесо.
ОткрытьГенератор тестовых данныхПачка вымышленных записей для тестов: ФИО, телефон, ИНН, СНИЛС, ОГРН, счёт и карта — с настоящими контрольными разрядами. Выгрузка в CSV, JSON и SQL.
ОткрытьГенератор CSS-градиентовЛинейный, радиальный и конический градиент с живым предпросмотром. Любое число цветовых точек, угол и позиции, разбор чужого кода обратно в точки.
ОткрытьЕщё инструменты для SEO и маркетинга
Кластеризатор запросов, генераторы sitemap и robots.txt, минус-слова, разметка Schema.org и калькуляторы — в разделе инструментов.