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:
- En 32-bitars tidsstämpel (4 byte)
- 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:
-
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.
-
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.
-
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:
Där:
- är den 32-bitars tidsstämpeln
- är den 128-bitars slumpkomponenten
- betecknar sammanslagning
Tidsstämpeln 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
Användningsområden för KSUID:er
KSUID:er är särskilt användbara i följande scenarier:
-
Distribuerade system: När du behöver unika identifierare över flera servrar eller tjänster utan samordning.
-
Tids-sorterbar data: När du vill sortera data efter skapelsedatum utan att lagra en separat tidsstämpel.
-
Databasnycklar: Som primära nycklar i databaser, särskilt i distribuerade databaser där auto-inkrementerande heltal inte är lämpliga.
-
URL-säkra identifierare: För att skapa korta, unika, URL-säkra identifierare för resurser i webbapplikationer.
-
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:
-
Sorterbarhet: Till skillnad från UUID:er kan KSUID:er sorteras kronologiskt, vilket är användbart för databasindexering och logganalys.
-
Ingen samordning krävs: Till skillnad från auto-inkrementerande ID:n kan KSUID:er genereras oberoende av olika servrar utan att riskera kollisioner.
-
Kompakt representation: Med 27 tecken är KSUID:er mer kompakta än UUID:er när de representeras som strängar.
-
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.
-
URL-säker: Base62-kodningen gör KSUID:er säkra att använda i URL:er utan ytterligare kodning.
-
Minskat kollisionstryck: Den 16-byte slumpkomponenten gör kollisioner extremt osannolika, även vid höga generationshastigheter.
Hur man använder denna generator
- Ange eventuella ytterligare parametrar om det behövs (t.ex. anpassad tidsstämpel).
- Klicka på knappen "Generera KSUID" för att skapa en ny KSUID.
- Den genererade KSUID:en visas i utdatafältet.
- Du kan generera flera KSUID:er genom att upprepa steg 1-3.
- Använd knappen "Kopiera" bredvid varje KSUID för att kopiera den till urklippet.
- 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
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Genererad KSUID: ${newId}`)
6
1// Java
2import com.github.ksuid.KsuidGenerator;
3
4public class KsuidExample {
5 public static void main(String[] args) {
6 String newId = KsuidGenerator.generate();
7 System.out.println("Genererad KSUID: " + newId);
8 }
9}
10
1// C++
2#include <iostream>
3#include <ksuid/ksuid.hpp>
4
5int main() {
6 ksuid::Ksuid newId = ksuid::Ksuid::generate();
7 std::cout << "Genererad KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Genererad KSUID: #{new_id}"
6
1// PHP
2<?php
3require_once 'vendor/autoload.php';
4
5use Tuupola\KsuidFactory;
6
7$factory = new KsuidFactory();
8$newId = $factory->create();
9echo "Genererad KSUID: " . $newId . "\n";
10?>
11
1// Go
2package main
3
4import (
5 "fmt"
6 "github.com/segmentio/ksuid"
7)
8
9func main() {
10 newId := ksuid.New()
11 fmt.Printf("Genererad KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Genererad KSUID: \(newId)")
6
Referenser
- Segments KSUID GitHub-repo: https://github.com/segmentio/ksuid
- "Generera bra unika identifierare" av Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID-specifikation: https://github.com/segmentio/ksuid/blob/master/README.md
Återkoppling
Klicka på återkopplingsmeddelandet för att börja ge återkoppling om detta verktyg
Relaterade verktyg
Upptäck fler verktyg som kan vara användbara för ditt arbetsflöde