DevToolPal
RU

Генератор ULID

Генерация ULID — 26-символьных уникальных ID, сортируемых по времени, с безопасной случайностью, до 1000 за раз.

Работает локально, без загрузки на сервер

Параметры

ULID

Символов: 0 · 0 B

Что делает инструмент

Этот инструмент генерирует ULID прямо в браузере. ULID — это 128-битный идентификатор, как и UUID, но он записывается 26 символами и сортируется по времени создания. Поэтому ULID хорошо подходят для первичных ключей в базах данных, идентификаторов событий и логов, имён файлов и всего остального, что нужно выводить в порядке создания без отдельного столбца с меткой времени.

ULID состоит из двух частей:

  • Метка времени (первые 10 символов): миллисекунды с начала эпохи Unix, 48 бит. Её хватит до 10889 года.
  • Случайная часть (последние 16 символов): 80 бит из криптографического генератора случайных чисел браузера.

ULID используют алфавит Crockford Base32 0123456789ABCDEFGHJKMNPQRSTVWXYZ. В нём нет букв I, L, O и U, поэтому ID легко читать вслух и трудно набрать с ошибкой, и в нём нет символов, которые нужно экранировать в URL.

Как пользоваться

  1. Выберите, сколько ID нужно: от 1 до 1000.
  2. Включите Монотонные, если ID должны сохранять порядок, даже когда несколько из них созданы в одну миллисекунду. Тогда случайная часть увеличивается на единицу для каждого нового ID.
  3. Включите Строчные буквы, если ваша система хранит ID в нижнем регистре. ULID не зависят от регистра, а каноническая форма — в верхнем регистре.
  4. Скопируйте список или скачайте его как текстовый файл. Сгенерируйте ещё раз, чтобы получить новую партию.

Пример

01ARZ3NDEKTSV4RRFFQ69G5FAV

Здесь 01ARZ3NDEK — метка времени 1469922850259 (2016-07-30 23:54:10.259 UTC), а TSV4RRFFQ69G5FAV — случайная часть. У двух ULID, созданных с разницей в секунду, совпадают первые несколько символов, поэтому обычная сортировка строк расставляет их в порядке времени.

Сравнение ULID и UUID

Случайный UUID v4 разбрасывает новые строки по всему B-tree-индексу, что замедляет вставку в больших таблицах. ULID в основном возрастают, поэтому новые строки попадают в конец индекса, как и с автоинкрементным целым числом, и при этом остаются уникальными на разных машинах без какой-либо координации. Цена — ULID примерно раскрывает время своего создания. Если это важно, используйте UUID v4.

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

› Что такое ULID?

ULID (Universally Unique Lexicographically Sortable Identifier) — это 128-битный идентификатор, записанный 26 символами Crockford Base32. Первые 10 символов кодируют метку времени в миллисекундах, а последние 16 — случайные.

› ULID или UUID: что выбрать?

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

› Что делает монотонный режим?

ID, созданные в одну и ту же миллисекунду, обычно получают независимые случайные части, поэтому их порядок внутри этой миллисекунды случаен. В монотонном режиме случайная часть вместо этого увеличивается на единицу, так что каждый ID в партии при сортировке идёт строго после предыдущего.

› Безопасно ли генерируются ID?

Да. Случайная часть берётся из криптографического генератора случайных чисел браузера, и ничего не отправляется на сервер.