🛠️

Whiz Tools

Build • Create • Innovate

KSUID Generator for Unique Time-Sortable Identifiers

Generer K-sorterbare unike identifikatorer (KSUID-er) for bruk i distribuerte systemer, databaser og applikasjoner som krever unike, tid-sorterbare nøkler. KSUID-er kombinerer et tidsstempel med tilfeldig data for å lage kollisjonsresistente, sorterbare identifikatorer.

KSUID-generator

📚

Dokumentasjon

KSUID Generator

Introduksjon

KSUID (K-Sortable Unique IDentifier) er et unikt identifikatorformat som tilbyr flere fordeler sammenlignet med tradisjonelle UUID (Universally Unique Identifier) og andre identifikatorsystemer. Dette verktøyet lar deg generere KSUID-er raskt og enkelt.

Hva er en KSUID?

En KSUID er en 20-byte sortert identifikator som består av:

  1. En 32-bit tidsstempel (4 byte)
  2. 16 byte tilfeldighet

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

Struktur av en KSUID

Strukturen av en KSUID kan deles opp som følger:

  1. Tidsstempel (4 byte): Dette representerer antall sekunder siden Unix-epoken (1. januar 1970, kl. 00:00 UTC). Tidsstempelet gjør at KSUID-er kan sorteres omtrent etter generasjonstid.

  2. Tilfeldig komponent (16 byte): Dette er et kryptografisk sikkert tilfeldig tall som sikrer unikhet selv når flere KSUID-er genereres i samme sekund.

  3. Base62-koding: De kombinerte 20 byte (tidsstempel + tilfeldig) blir deretter kodet ved hjelp av base62 (A-Z, a-z, 0-9) for å produsere den endelige 27-tegns strengen.

KSUID-formel

En KSUID kan representeres matematisk som:

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

Hvor:

  • TT er 32-bit tidsstempelet
  • RR er den 128-bit tilfeldige komponenten
  • || betegner sammenkobling

Tidsstempelet TT beregnes som:

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

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

KSUID-strukturdiagram

Tidsstempel (4 byte) Tilfeldig komponent (16 byte)

Bruksområder for KSUID-er

KSUID-er er spesielt nyttige i følgende scenarier:

  1. Distribuerte systemer: Når du trenger unike identifikatorer på tvers av flere servere eller tjenester uten koordinering.

  2. Tids-sorterbare data: Når du vil sortere data etter opprettelsestid uten å lagre et eget tidsstempel.

  3. Databasenøkler: Som primærnøkler i databaser, spesielt i distribuerte databaser hvor auto-inkrementerende heltall ikke er egnet.

  4. URL-sikre identifikatorer: For å lage korte, unike, URL-sikre identifikatorer for ressurser i webapplikasjoner.

  5. Loggkorrelasjon: For å korrelere loggoppføringer på tvers av forskjellige tjenester i en mikroservice-arkitektur.

Fordeler med KSUID-er

KSUID-er tilbyr flere fordeler sammenlignet med andre identifikatorsystemer:

  1. Sorterbarhet: I motsetning til UUID-er kan KSUID-er sorteres kronologisk, noe som er nyttig for databaseindeksering og logganalyse.

  2. Ingen koordinering nødvendig: I motsetning til auto-inkrementerende ID-er kan KSUID-er genereres uavhengig av forskjellige servere uten å risikere kollisjoner.

  3. Kompakt representasjon: Med 27 tegn er KSUID-er mer kompakte enn UUID-er når de representeres som strenger.

  4. Tidsstempel innebygd: Det innebygde tidsstempelet gjør det mulig med tidsbasert sortering og filtrering uten å måtte ha et eget tidsstempelfelt.

  5. URL-sikker: Base62-kodingen gjør KSUID-er trygge for bruk i URL-er uten ytterligere koding.

  6. Redusert kollisjonsrisiko: Den 16-byte tilfeldige komponenten gjør kollisjoner ekstremt usannsynlige, selv ved høye generasjonsrater.

Hvordan bruke denne generatoren

  1. Skriv inn eventuelle ekstra parametere hvis nødvendig (f.eks. egendefinert tidsstempel).
  2. Klikk på "Generer KSUID"-knappen for å lage en ny KSUID.
  3. Den genererte KSUID-en vil bli vist i utdatafeltet.
  4. Du kan generere flere KSUID-er ved å gjenta trinn 1-3.
  5. Bruk "Kopier"-knappen ved siden av hver KSUID for å kopiere den til utklippstavlen.
  6. Valgfritt, bruk "Eksporter"-funksjonen for å laste ned en liste over genererte KSUID-er.

Husk at hver KSUID er unik og bør brukes kun én gang. Generer en ny KSUID hver gang du trenger en unik identifikator.

Kodeeksempler

Her er eksempler på generering av KSUID-er i forskjellige programmeringsspråk:

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

Referanser

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