Генератор 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 состоит из двух частей: метки времени и случайности
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
Общий справочник по универсальным уникальным идентификаторам и их вариантам.