Генераторы UUID и ID
Выбор формата ID для новой таблицы базы данных, попытка понять, какое время скрыто внутри чужого идентификатора, или просто случайная строка для тестовой фикстуры — генерация ID кажется простой задачей, пока не понадобятся конкретные свойства вроде сортируемости или встроенной метки времени. Здесь рядом собраны генерация и декодирование UUID, ULID, Snowflake ID, MongoDB ObjectId и несколько более новых форматов.
Генератор UUID покрывает версии от v1 до v7, включая детерминированные варианты v3 и v5, которые каждый раз выдают один и тот же ID для одного и того же имени. Генератор ULID создаёт идентификаторы, которые по умолчанию сортируются хронологически, — обычные UUID так не умеют. Если ID уже есть и нужно его разобрать, Декодер UUID, Декодер Snowflake ID и Генератор ObjectId извлекают встроенную метку времени и другие поля, так что видно, когда запись была реально создана.
8 инструментов
ULID, Snowflake, ObjectId и другие
-
Генератор ULID
Создавайте ULID или разбирайте время из существующих идентификаторов
-
Декодер Snowflake ID
Декодируйте Snowflake ID, выбрав эпоху системы-источника
-
Генератор ObjectId
Создавайте ObjectId для MongoDB тестов или разбирайте готовые
-
Современные идентификаторы
Собрать пакет Nano ID с нужным алфавитом или разобрать поля CUID2 и KSUID
Вопросы об инструментах категории «UUID / ID Generators»
UUID v4 полностью случаен и остаётся самым частым выбором по умолчанию. UUID v7 включает метку времени, поэтому ID примерно сортируются по времени создания, что помогает производительности индекса базы данных по сравнению со случайным порядком v4 — Генератор UUID поддерживает обе версии, а также v1, v3, v5 и v6 для других случаев.
Оба формата встраивают метку времени в свою структуру: Snowflake ID упаковывает её в старшие биты рядом с ID узла, а ObjectId начинается с 4-байтового Unix-времени. Декодер Snowflake ID и Генератор ObjectId извлекают эту метку напрямую, так что не нужно вручную сдвигать биты.
UUID имеет фиксированную длину и в распространённой версии v4 полностью случаен, без встроенного порядка. ULID кодирует метку времени в первых символах, поэтому более поздние ULID всегда сортируются после более ранних даже как обычные строки — Генератор ULID поддерживает и монотонный вариант для ID, созданных в одну и ту же миллисекунду.