🛠️

Whiz Tools

Build • Create • Innovate

KSUID Generator for Unique, Time-Sortable Identifiers

Generera K-sorterbara unika identifierare (KSUID) för användning i distribuerade system, databaser och applikationer som kräver unika, tids-sorterbara nycklar. KSUID kombinerar en tidsstämpel med slumpmässiga data för att skapa kollision-resistenta, sorterbara identifierare.

KSUID-generator

📚

Dokumentation

KSUID Generator

Introduktion

KSUID (K-Sortable Unique IDentifier) är ett unikt identifieringsformat som erbjuder flera fördelar jämfört med traditionella UUID (Universally Unique Identifier) och andra identifieringssystem. Det här verktyget låter dig generera KSUID:er snabbt och enkelt.

Vad är en KSUID?

En KSUID är en 20-byte sorteringsbar identifierare som består av:

  1. En 32-bitars tidsstämpel (4 byte)
  2. 16 byte av slumpmässighet

När den representeras som en sträng kodas en KSUID i base62 och är 27 tecken lång.

Struktur av en KSUID

Strukturen av en KSUID kan delas upp som följer:

  1. Tidsstämpel (4 byte): Detta representerar antalet sekunder sedan Unix-epoken (1 januari 1970 kl. 00:00 UTC). Tidsstämpeln gör att KSUID:er kan sorteras grovt efter generationstid.

  2. Slumptal (16 byte): Detta är ett kryptografiskt säkert slumpnummer som säkerställer unikhet även när flera KSUID:er genereras under samma sekund.

  3. Base62-kodning: De sammanlagda 20 byte (tidsstämpel + slump) kodas sedan med base62 (A-Z, a-z, 0-9) för att producera den slutliga 27-teckens strängen.

KSUID Formel

En KSUID kan representeras matematiskt som:

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

Där:

  • TT är den 32-bitars tidsstämpeln
  • RR är den 128-bitars slumpkomponenten
  • || betecknar sammanslagning

Tidsstämpeln TT beräknas som:

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

Där KSUID_epoch är 1400000000 (2014-05-13T16:53:20Z).

KSUID Strukturdiagram

Tidsstämpel (4 byte) Slumptal (16 byte)

Användningsområden för KSUID:er

KSUID:er är särskilt användbara i följande scenarier:

  1. Distribuerade system: När du behöver unika identifierare över flera servrar eller tjänster utan samordning.

  2. Tids-sorterbar data: När du vill sortera data efter skapelsedatum utan att lagra en separat tidsstämpel.

  3. Databasnycklar: Som primära nycklar i databaser, särskilt i distribuerade databaser där auto-inkrementerande heltal inte är lämpliga.

  4. URL-säkra identifierare: För att skapa korta, unika, URL-säkra identifierare för resurser i webbapplikationer.

  5. Loggkorrelation: För att korrelera loggposter över olika tjänster i en mikrotjänstarkitektur.

Fördelar med KSUID:er

KSUID:er erbjuder flera fördelar jämfört med andra identifieringssystem:

  1. Sorterbarhet: Till skillnad från UUID:er kan KSUID:er sorteras kronologiskt, vilket är användbart för databasindexering och logganalys.

  2. Ingen samordning krävs: Till skillnad från auto-inkrementerande ID:n kan KSUID:er genereras oberoende av olika servrar utan att riskera kollisioner.

  3. Kompakt representation: Med 27 tecken är KSUID:er mer kompakta än UUID:er när de representeras som strängar.

  4. Tidsstämpel inbäddad: Den inbäddade tidsstämpeln möjliggör tidsbaserad sortering och filtrering utan att behöva ett separat tidsstämpelfält.

  5. URL-säker: Base62-kodningen gör KSUID:er säkra att använda i URL:er utan ytterligare kodning.

  6. Minskat kollisionstryck: Den 16-byte slumpkomponenten gör kollisioner extremt osannolika, även vid höga generationshastigheter.

Hur man använder denna generator

  1. Ange eventuella ytterligare parametrar om det behövs (t.ex. anpassad tidsstämpel).
  2. Klicka på knappen "Generera KSUID" för att skapa en ny KSUID.
  3. Den genererade KSUID:en visas i utdatafältet.
  4. Du kan generera flera KSUID:er genom att upprepa steg 1-3.
  5. Använd knappen "Kopiera" bredvid varje KSUID för att kopiera den till urklippet.
  6. Valfritt, använd "Exportera"-funktionen för att ladda ner en lista med genererade KSUID:er.

Kom ihåg att varje KSUID är unik och endast bör användas en gång. Generera en ny KSUID varje gång du behöver en unik identifierare.

Kodexempel

Här är exempel på hur man genererar KSUID:er i olika programmeringsspråk:

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

Referenser

  1. Segments KSUID GitHub-repo: https://github.com/segmentio/ksuid
  2. "Generera bra unika identifierare" av 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