qatoolqa.ru

Генератор UUID и ULID онлайн

UUID версий 1, 4 и 7, а также ULID — по одному или списком нужной длины. Для каждой версии написано, где она уместна: v4 для случайных ключей, v7 когда идентификатор ляжет в индекс базы и важен порядок, ULID когда нужен короткий вид для ссылок.

Что генерируем

Разбор

Чем они отличаются

v4 — просто 122 случайных бита. Берите его, если нет причин брать другое: ничего о себе не рассказывает и ни с чем не связан.

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

v1 — тоже со временем, но отсчёт с 1582 года и в конце «узел». По стандарту там MAC-адрес, из-за чего v1 когда-то и ругали за утечку железа. Браузер MAC не отдаёт, поэтому здесь, как разрешает RFC 9562 (он заменил RFC 4122 в 2024 году), вместо него случайные байты с поднятым групповым битом — разбор ниже это показывает.

ULID — 26 символов вместо 36, тоже со временем впереди. Алфавит без I, L, O и U: чтобы не путать с единицей и нулём, когда идентификатор диктуют голосом или переписывают руками.

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

Какую версию брать?

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

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

Идея та же — время плюс случайность, но ULID записывается в Base32 из 26 символов: короче и без дефисов, удобнее вставлять в ссылки.

Идентификаторы точно уникальны?

v4 и v7 берут случайность из crypto.getRandomValues. Вероятность совпадения в пределах теста практически нулевая.