Генератор ULID

Генерация ULID (универсальных уникальных лексикографически сортируемых идентификаторов). 26 символов, безопасные для URL, сортируемые по времени, совместимы с UUID.

Сгенерировать ULID

Создание сортируемых уникальных идентификаторов

Сгенерированные ULID

Нажмите «Сгенерировать ULID» для создания уникальных идентификаторов

Часто задаваемые вопросы

Что такое ULID?

26-символьный идентификатор, который включает 48-битную временную метку в миллисекундах и 80 бит случайности, поэтому идентификаторы сортируются по времени создания.

Почему следует выбирать ULID вместо UUID?

ULID сортируются лексикографически по времени короче и используют безопасный для URL-адресов Crockford base32 без дефисов.

Могу ли я доверять упорядочению?

Да, в разных миллисекундах. Порядок между двумя ULID в течение одной и той же миллисекунды не гарантируется.

Работают ли ULID там, где используются UUID?

Они попадают в большинство строковых столбцов и API, а преобразование между ULID и UUID является простым, если оба формата должны сосуществовать.

Какова длина ULID и какие символы он использует?

Каждый ULID состоит ровно из 26 символов и использует кодировку Crockford Base32, которая включает цифры 0-9 и буквы A-Z, кроме I, L, O и U. Такая фиксированная длина делает размер столбцов базы данных предсказуемым и исключает неоднозначные символы при чтении идентификаторов вслух или ручном вводе.

Безопасно ли использовать ULID в URL-адресах и именах файлов?

Да. ULID содержат только заглавные буквы и цифры, без дефисов, косых черт и других символов, поэтому они передаются в URL-адресах, сегментах путей и именах файлов без процентного кодирования. Длина в 26 символов также удобно помещается в шаблоны маршрутов и строки логов.

Сколько ULID можно сгенерировать за одну и ту же миллисекунду?

80-битная случайная часть предоставляет примерно 2^80 значений на миллисекунду, что делает коллизии практически невозможными. Если ваше приложение создаёт несколько идентификаторов в пределах одной миллисекунды, используйте монотонный режим, в котором случайная часть увеличивается на единицу, чтобы сохранить порядок сортировки.

Как прочитать метку времени из ULID?

Первые 10 символов кодируют метку времени Unix в миллисекундах, а оставшиеся 16 символов случайны. Декодируйте эти 10 символов из Crockford Base32 в число, затем преобразуйте его с помощью любого инструмента для меток времени Unix, чтобы узнать точное время создания.

Структура ULID

Каждый ULID состоит из двух частей: метки времени и случайности

МЕТКА ВРЕМЕНИ (10 символов) СЛУЧАЙНОСТЬ (16 символов)

01ARZ3NDEKTSV4RRFFQ69G5FAV

Пример: этот ULID был сгенерирован в определённую миллисекунду и содержит 80 бит случайности

Метка времени (48 бит)

Миллисекунды с начала эпохи Unix (1970-01-01). Обеспечивает сортировку по времени и действует до 10889 года.

Случайность (80 бит)

Криптографически защищённое случайное значение. Обеспечивает 1,21 квинтиллиона уникальных идентификаторов в миллисекунду.

Технические характеристики

ULID разработан для сортировки, безопасности в URL и совместимости с UUID

Возможности

  • Криптографически защищённая случайность
  • Генерация только на стороне клиента
  • Лексикографически сортируемые
  • Без специальных символов (безопасны для URL)

Характеристики

  • 26 символов (128 бит)
  • Кодировка Crockford Base32
  • 48-битная метка времени + 80-битная случайность
  • 1,21 млн идентификаторов в миллисекунду

Источники и ресурсы

  • ULID Specification - GitHub

    Спецификация ULID — сортируемых уникальных идентификаторов с префиксом-меткой времени.

  • Universally Unique Identifier - Wikipedia

    Общий справочник по универсальным уникальным идентификаторам и их вариантам.