Генератор на K-Подредими Уникални Идентификатори (KSUID)

Генерирайте K-Подредими Уникални Идентификатори (KSUID) за употреба в разпределени системи, бази данни и приложения, изискващи уникални, подредими по време ключове. KSUID комбинират времеви печат с произволни данни, за да създадат устойчиви на сблъсък, подредими идентификатори.

Генератор на KSUID

📚

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

Генератор на KSUID

Въведение

KSUID (K-Sortable Unique IDentifier) е формат на уникален идентификатор, който предлага няколко предимства пред традиционния UUID (Universally Unique Identifier) и други системи за идентификатори. Този инструмент ви позволява бързо и лесно да генерирате 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. GitHub репозиторий на KSUID на 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
🔗

Свързани инструменти

Открийте още инструменти, които може да бъдат полезни за вашия работен процес