🛠️

Whiz Tools

Build • Create • Innovate

Генератор K-сортованих унікальних ідентифікаторів (KSUID)

Генеруйте K-сортовані унікальні ідентифікатори (KSUID) для використання в розподілених системах, базах даних та додатках, які потребують унікальних, час-сортованих ключів. KSUID поєднує часову мітку з випадковими даними, щоб створити стійкі до колізій, сортовані ідентифікатори.

Генератор KSUID

📚

Документація

Генератор KSUID

Вступ

KSUID (K-Sortable Unique IDentifier) - це формат унікального ідентифікатора, який пропонує кілька переваг у порівнянні з традиційними UUID (Універсальний унікальний ідентифікатор) та іншими системами ідентифікації. Цей інструмент дозволяє швидко та легко генерувати KSUID.

Що таке KSUID?

KSUID - це 20-байтовий сортувальний ідентифікатор, який складається з:

  1. 32-бітного таймстемпа (4 байти)
  2. 16 байтів випадковості

При представленні у вигляді рядка, KSUID кодується в base62 і має довжину 27 символів.

Структура KSUID

Структура KSUID може бути розбита на такі частини:

  1. Таймстемп (4 байти): Це представляє кількість секунд з моменту Unix-епохи (1 січня 1970 року, 00:00 UTC). Таймстемп дозволяє KSUID бути приблизно сортуємими за часом генерації.

  2. Випадковий компонент (16 байтів): Це криптографічно безпечне випадкове число, яке забезпечує унікальність, навіть коли кілька KSUID генеруються в одну секунду.

  3. Кодування Base62: Об'єднані 20 байтів (таймстемп + випадковість) потім кодуються за допомогою base62 (A-Z, a-z, 0-9), щоб отримати фінальний рядок з 27 символів.

Формула KSUID

KSUID можна представити математично як:

KSUID=Base62(TR)KSUID = Base62(T || R)

Де:

  • TT - це 32-бітний таймстемп
  • RR - це 128-бітний випадковий компонент
  • || позначає конкатенацію

Таймстемп TT обчислюється як:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

Де KSUID_epoch - це 1400000000 (2014-05-13T16:53:20Z).

Діаграма структури KSUID

Таймстемп (4 байти) Випадковий компонент (16 байтів)

Варіанти використання KSUID

KSUID особливо корисні в наступних сценаріях:

  1. Розподілені системи: Коли вам потрібні унікальні ідентифікатори на кількох серверах або службах без координації.

  2. Дані, що сортуються за часом: Коли ви хочете сортувати дані за часом створення без зберігання окремого таймстемпа.

  3. Ключі бази даних: Як первинні ключі в базах даних, особливо в розподілених базах даних, де автоінкрементні цілі числові значення не підходять.

  4. Безпечні URL-ідентифікатори: Для створення коротких, унікальних, безпечних для URL ідентифікаторів для ресурсів у веб-додатках.

  5. Кореляція журналів: Для кореляції записів журналів між різними службами в архітектурі мікросервісів.

Переваги KSUID

KSUID пропонують кілька переваг у порівнянні з іншими системами ідентифікації:

  1. Сортування: На відміну від UUID, KSUID можуть бути відсортовані хронологічно, що корисно для індексації бази даних та аналізу журналів.

  2. Не потрібна координація: На відміну від автоінкрементних ідентифікаторів, KSUID можуть бути згенеровані незалежно різними серверами без ризику зіткнень.

  3. Компактне представлення: У 27 символів KSUID є більш компактними, ніж UUID, коли представлені у вигляді рядків.

  4. Вбудований таймстемп: Вбудований таймстемп дозволяє виконувати сортування та фільтрацію на основі часу без необхідності зберігати окреме поле таймстемпа.

  5. Безпечні для URL: Кодування base62 робить KSUID безпечними для використання в URL без будь-якого додаткового кодування.

  6. Знижена ймовірність зіткнень: 16-байтовий випадковий компонент робить зіткнення надзвичайно малоймовірними, навіть при високих швидкостях генерації.

Як користуватися цим генератором

  1. Введіть будь-які додаткові параметри, якщо це необхідно (наприклад, користувацький таймстемп).
  2. Натисніть кнопку "Генерувати KSUID", щоб створити новий KSUID.
  3. Згенерований KSUID буде відображено у вихідному полі.
  4. Ви можете генерувати кілька KSUID, повторюючи кроки 1-3.
  5. Використовуйте кнопку "Копіювати" поруч з кожним KSUID, щоб скопіювати його у буфер обміну.
  6. За бажанням, використовуйте функцію "Експорт", щоб завантажити список згенерованих KSUID.

Пам'ятайте, що кожен KSUID є унікальним і повинен використовуватися лише один раз. Генеруйте новий KSUID щоразу, коли вам потрібен унікальний ідентифікатор.

Приклади коду

Ось приклади генерації KSUID в різних мовах програмування:

1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Згенерований KSUID: {new_id}")
6

Посилання

  1. Репозиторій KSUID на GitHub від Segment: https://github.com/segmentio/ksuid
  2. "Генерація хороших унікальних ідентифікаторів" Пітера Боргона: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Специфікація KSUID: https://github.com/segmentio/ksuid/blob/master/README.md
🔗

Супутні інструменти

Відкрийте для себе більше інструментів, які можуть бути корисними для вашого робочого процесу