Генератор ULID – Сортувальні ULID онлайн

Генеруйте лексикографічно сортувальні ідентифікатори з часовими мітками та випадковістю

Спробуйте ці приклади:

Що таке ULID?

ULID (Універсальний Унікальний Лексикографічно Сортований Ідентифікатор) — це 128-бітний формат ідентифікатора, розроблений для подолання обмежень UUID. Він складається з:

  • Часова мітка: 48 бітів часу Unix з мілісекундною точністю
  • Випадковість: 80 бітів криптографічно безпечних випадкових даних
  • Кодування: представлення в Base32 (26 символів)

Приклад формату: 01ARZ3NDEKTSV4RRFFQ69G5FAV

Як працює ULID

  1. Генерує 48 бітів для часової мітки (Unix-час у мілісекундах)
  2. Генерує 80 бітів криптографічно безпечних випадкових даних
  3. Комбінує часову мітку (найбільш значущу) з випадковістю (найменш значущою)
  4. Кодує все 128-бітне значення за допомогою алфавіту Крокфорда Base32
  5. Результатом є 26-символьний рядок (перші 10 символів — часова мітка, останні 16 — випадковість)

Переваги та міркування

ПеревагиМіркування
  • Лексикографічне сортування
  • Набір символів, безпечний для URL
  • Не потрібне спеціальне кодування
  • Нечутливість до регістру
  • Відсутність проблем з приватністю
  • Новіший, менш широко використовуваний
  • Обмежена підтримка бібліотек
  • Несумісність з UUID
  • Неможливість вийти за межі 1970 року

Структура ULID

КомпонентБітиСимволиОпис
Часова мітка48 бітів10 символівUnix-часова мітка (мс), закодована в Base32
Випадковість80 бітів16 символівВипадкові байти, закодовані в Base32

Порівняння ULID та UUID

ФункціяULIDUUID v1UUID v4UUID v7
Розмір128 бітів128 бітів128 бітів128 бітів
Довжина рядка26 символів36 символів36 символів36 символів
На основі часу
Природне сортування
Безпека URL
Розкриття MAC-адреси
Випадковий компонент
Канонічний стандарт⚠️ Чернетка

Поширені випадки використання

  • Первинні ключі бази даних: Оптимізовані за продуктивністю індекси
  • Розподілені системи: Генерація без координації
  • API: Чисті, безпечні для URL ідентифікатори
  • Дані часових рядів: Нативне хронологічне впорядкування
  • Системи журналювання: Ідентифікатори подій, що сортуються
  • Сучасні застосунки: Де обмеження UUID є проблематичними

Чому варто обрати ULID?

  • Сортованість: Лексикографічно сортується за часом створення
  • Безпека URL: Не потрібне URL-кодування (на відміну від UUID з дефісами)
  • Компактність: 26 символів проти 36 для UUID
  • Нечутливість до регістру: Зменшує помилки введення користувачем
  • Монотонність: Опціональне монотонне сортування в межах тієї ж мілісекунди
  • Відсутність спеціальних символів: Простий, лише буквено-цифровий формат

Часті запитання

Як ULID порівнюється з UUID v7?

Обидва використовують Unix-часові мітки для сортованості та мають випадкові компоненти. Ключові відмінності полягають у кодуванні (Base32 проти шістнадцяткового), форматі (26 символів проти 36) та стандартизації (UUID v7 знаходиться в стадії чернетки специфікації RFC).

Чи можу я витягти час створення з ULID?

Так. Перші 10 символів представляють Unix-часову мітку з мілісекундною точністю, яку можна декодувати та перетворити на стандартний формат дати/часу.

Чи сумісні ULID з полями UUID в базах даних?

Ні. ULID використовують інший формат і повинні зберігатися як рядки або бінарні дані, а не в нативних типах UUID баз даних.

Що таке монотонність у ULID?

Деякі реалізації ULID пропонують монотонну опцію, яка забезпечує послідовний порядок сортування навіть у межах однієї мілісекунди, збільшуючи випадковий компонент для ULID, створених в одній часовій мітці.

Який набір символів використовує ULID?

ULID використовує кодування Base32 за Крокфордом (0-9, A-Z за винятком I, L, O, U), яке розроблено для мінімізації плутанини та помилок транскрипції при ручному читанні або введенні ідентифікаторів.

Ресурси

Алфавіт Base32 за Крокфордом

Значення кодуванняСимволПримітки
0-90-9Десяткові цифри
10-31A-ZЗа винятком I, L, O, U для кращої читабельності

Символи: 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Це кодування нечутливе до регістру для декодування (але ULID зазвичай генеруються у верхньому регістрі).