🛠️

Whiz Tools

Build • Create • Innovate

Generator K-Sortowalnych Unikalnych Identyfikatorów KSUID

Generuj K-Sortowalne Unikalne Identyfikatory (KSUID) do użycia w systemach rozproszonych, bazach danych i aplikacjach wymagających unikalnych, sortowalnych czasowo kluczy. KSUID łączy znacznik czasu z danymi losowymi, aby stworzyć identyfikatory odporne na kolizje i sortowalne.

Generator KSUID

📚

Dokumentacja

Generator KSUID

Wprowadzenie

KSUID (K-Sortable Unique IDentifier) to format unikalnego identyfikatora, który oferuje kilka zalet w porównaniu do tradycyjnego UUID (Uniwersalny Unikalny Identyfikator) i innych systemów identyfikacji. To narzędzie pozwala na szybkie i łatwe generowanie KSUID.

Czym jest KSUID?

KSUID to 20-bajtowy sortowalny identyfikator, który składa się z:

  1. 32-bitowego znacznika czasu (4 bajty)
  2. 16 bajtów losowości

Gdy jest reprezentowany jako ciąg, KSUID jest kodowany w base62 i ma długość 27 znaków.

Struktura KSUID

Strukturę KSUID można podzielić na następujące elementy:

  1. Znacznik czasu (4 bajty): Reprezentuje liczbę sekund od epoki Unix (1 stycznia 1970 roku, godzina 00:00 UTC). Znacznik czasu pozwala na w miarę sortowanie KSUID według czasu generacji.

  2. Składnik losowy (16 bajtów): To kryptograficznie bezpieczna liczba losowa, która zapewnia unikalność, nawet gdy wiele KSUID jest generowanych w tej samej sekundzie.

  3. Kodowanie Base62: Połączone 20 bajtów (znacznik czasu + losowy) są następnie kodowane za pomocą base62 (A-Z, a-z, 0-9), aby uzyskać ostateczny 27-znakowy ciąg.

Wzór KSUID

KSUID można matematycznie przedstawić jako:

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

Gdzie:

  • TT to 32-bitowy znacznik czasu
  • RR to 128-bitowy składnik losowy
  • || oznacza konkatenację

Znacznik czasu TT jest obliczany jako:

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

Gdzie KSUID_epoch to 1400000000 (2014-05-13T16:53:20Z).

Diagram struktury KSUID

Znacznik czasu (4 bajty) Składnik losowy (16 bajtów)

Przypadki użycia KSUID

KSUID są szczególnie przydatne w następujących scenariuszach:

  1. Systemy rozproszone: Gdy potrzebujesz unikalnych identyfikatorów w wielu serwerach lub usługach bez koordynacji.

  2. Dane sortowalne według czasu: Gdy chcesz sortować dane według czasu utworzenia bez przechowywania osobnego znacznika czasu.

  3. Klucze bazy danych: Jako klucze główne w bazach danych, szczególnie w rozproszonych bazach danych, gdzie autoinkrementujące się liczby całkowite nie są odpowiednie.

  4. Bezpieczne identyfikatory URL: Do tworzenia krótkich, unikalnych, bezpiecznych identyfikatorów URL dla zasobów w aplikacjach internetowych.

  5. Korelacja logów: Aby skorelować wpisy logów w różnych usługach w architekturze mikroserwisów.

Zalety KSUID

KSUID oferują kilka zalet w porównaniu do innych systemów identyfikacji:

  1. Sortowalność: W przeciwieństwie do UUID, KSUID mogą być sortowane chronologicznie, co jest przydatne do indeksowania bazy danych i analizy logów.

  2. Brak konieczności koordynacji: W przeciwieństwie do identyfikatorów autoinkrementujących, KSUID mogą być generowane niezależnie przez różne serwery bez ryzyka kolizji.

  3. Kompaktowa reprezentacja: Przy długości 27 znaków, KSUID są bardziej kompaktowe niż UUID, gdy są reprezentowane jako ciągi.

  4. Wbudowany znacznik czasu: Wbudowany znacznik czasu pozwala na sortowanie i filtrowanie oparte na czasie bez potrzeby przechowywania osobnego pola znaczników czasu.

  5. Bezpieczne dla URL: Kodowanie base62 sprawia, że KSUID są bezpieczne do użycia w URL bez dodatkowego kodowania.

  6. Zmniejszone prawdopodobieństwo kolizji: 16-bajtowy składnik losowy sprawia, że kolizje są niezwykle mało prawdopodobne, nawet przy wysokich wskaźnikach generacji.

Jak korzystać z tego generatora

  1. Wprowadź dodatkowe parametry, jeśli to konieczne (np. niestandardowy znacznik czasu).
  2. Kliknij przycisk "Generuj KSUID", aby utworzyć nowy KSUID.
  3. Wygenerowany KSUID zostanie wyświetlony w polu wyjściowym.
  4. Możesz wygenerować wiele KSUID, powtarzając kroki 1-3.
  5. Użyj przycisku "Kopiuj" obok każdego KSUID, aby skopiować go do schowka.
  6. Opcjonalnie, użyj funkcji "Eksportuj", aby pobrać listę wygenerowanych KSUID.

Pamiętaj, że każdy KSUID jest unikalny i powinien być używany tylko raz. Generuj nowy KSUID za każdym razem, gdy potrzebujesz unikalnego identyfikatora.

Przykłady kodu

Oto przykłady generowania KSUID w różnych językach programowania:

1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Wygenerowany KSUID: {new_id}")
6

Referencje

  1. Repozytorium KSUID na GitHubie Segment: https://github.com/segmentio/ksuid
  2. "Generowanie dobrych unikalnych identyfikatorów" autorstwa Petera Bourgona: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Specyfikacja KSUID: https://github.com/segmentio/ksuid/blob/master/README.md