🛠️

Whiz Tools

Build • Create • Innovate

Generer KSUID'er til distribuerede systemer og databaser

Generer K-sorterbare unikke identifikatorer (KSUID'er) til brug i distribuerede systemer, databaser og applikationer, der kræver unikke, tids-sorterbare nøgler. KSUID'er kombinerer et tidsstempel med tilfældige data for at skabe kollisionsresistente, sorterbare identifikatorer.

KSUID-generator

📚

Dokumentation

KSUID Generator

Introduktion

KSUID (K-Sortable Unique IDentifier) er et unikt identifikationsformat, der tilbyder flere fordele i forhold til traditionelle UUID (Universally Unique Identifier) og andre identifikationssystemer. Dette værktøj giver dig mulighed for hurtigt og nemt at generere KSUID'er.

Hvad er en KSUID?

En KSUID er en 20-byte sortérbar identifikator, der består af:

  1. En 32-bit tidsstempel (4 bytes)
  2. 16 bytes tilfældighed

Når den repræsenteres som en streng, er en KSUID kodet i base62 og er 27 tegn lang.

Struktur af en KSUID

Strukturen af en KSUID kan opdeles som følger:

  1. Tidsstempel (4 bytes): Dette repræsenterer antallet af sekunder siden Unix-epoken (1. januar 1970 kl. 00:00 UTC). Tidsstemplet gør det muligt for KSUID'er at være nogenlunde sortérbare efter genereringstid.

  2. Tilfældig komponent (16 bytes): Dette er et kryptografisk sikkert tilfældigt tal, der sikrer unikhed, selv når flere KSUID'er genereres i samme sekund.

  3. Base62-kodning: De kombinerede 20 bytes (tidsstempel + tilfældig) kodes derefter ved hjælp af base62 (A-Z, a-z, 0-9) for at producere den endelige 27-tegns streng.

KSUID Formel

En KSUID kan repræsenteres matematisk som:

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

Hvor:

  • TT er tidsstemplet på 32 bit
  • RR er den 128-bit tilfældige komponent
  • || betegner sammenkædning

Tidsstemplet TT beregnes som:

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

Hvor KSUID_epoch er 1400000000 (2014-05-13T16:53:20Z).

KSUID Struktur Diagram

Tidsstempel (4 bytes) Tilfældig komponent (16 bytes)

Anvendelsesområder for KSUID'er

KSUID'er er særligt nyttige i følgende scenarier:

  1. Distribuerede systemer: Når du har brug for unikke identifikatorer på tværs af flere servere eller tjenester uden koordinering.

  2. Tids-sorterbare data: Når du vil sortere data efter oprettelsestid uden at gemme et separat tidsstempel.

  3. Database nøgler: Som primære nøgler i databaser, især i distribuerede databaser, hvor auto-inkrementerende heltal ikke er egnede.

  4. URL-sikre identifikatorer: Til at skabe korte, unikke, URL-sikre identifikatorer for ressourcer i webapplikationer.

  5. Log korrelation: For at korrelere logposter på tværs af forskellige tjenester i en mikroservices-arkitektur.

Fordele ved KSUID'er

KSUID'er tilbyder flere fordele i forhold til andre identifikationssystemer:

  1. Sorterbarhed: I modsætning til UUID'er kan KSUID'er sorteres kronologisk, hvilket er nyttigt til databaseindeksering og loganalyse.

  2. Ingen koordinering krævet: I modsætning til auto-inkrementerende ID'er kan KSUID'er genereres uafhængigt af forskellige servere uden risiko for kollisioner.

  3. Kompakt repræsentation: Med 27 tegn er KSUID'er mere kompakte end UUID'er, når de repræsenteres som strenge.

  4. Tidsstempel indlejret: Det indlejrede tidsstempel muliggør tidsbaseret sortering og filtrering uden behov for et separat tidsstempelfelt.

  5. URL-sikker: Base62-kodningen gør KSUID'er sikre til brug i URL'er uden yderligere kodning.

  6. Reduceret kollision sandsynlighed: Den 16-byte tilfældige komponent gør kollisioner ekstremt usandsynlige, selv ved høje genereringshastigheder.

Sådan bruger du denne generator

  1. Indtast eventuelle yderligere parametre, hvis nødvendigt (f.eks. brugerdefineret tidsstempel).
  2. Klik på knappen "Generer KSUID" for at oprette en ny KSUID.
  3. Den genererede KSUID vises i outputfeltet.
  4. Du kan generere flere KSUID'er ved at gentage trin 1-3.
  5. Brug knappen "Kopier" ved siden af hver KSUID for at kopiere den til din udklipsholder.
  6. Valgfrit kan du bruge funktionen "Eksporter" til at downloade en liste over genererede KSUID'er.

Husk, at hver KSUID er unik og kun bør bruges én gang. Generer en ny KSUID hver gang, du har brug for en unik identifikator.

Kodeeksempler

Her er eksempler på generering af KSUID'er i forskellige programmeringssprog:

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

Referencer

  1. Segments KSUID GitHub Repository: https://github.com/segmentio/ksuid
  2. "Generering af gode unikke identifikatorer" af Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. KSUID-specifikation: https://github.com/segmentio/ksuid/blob/master/README.md