KSUID Generator for Unique and Sortable Identifiers

Generišite K-sortabilne jedinstvene identifikatore (KSUID) za upotrebu u distribuiranim sistemima, bazama podataka i aplikacijama koje zahtevaju jedinstvene, vremenski sortabilne ključeve. KSUID kombinuje vremensku oznaku sa slučajnim podacima kako bi stvorio identifikatore otporne na kolizije i sortabilne.

KSUID Generator

📚

Dokumentacija

KSUID Generator

Увод

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. Нема потребе за координацијом: За разлику од аутоматски инкременталних ID-ова, 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. Segment-ова KSUID GitHub репозиторија: 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