KSUID Generátor: K-sortálható egyedi azonosítók létrehozása
Generáljon K-sortálható egyedi azonosítókat (KSUID) elosztott rendszerekhez, adatbázisokhoz és olyan alkalmazásokhoz, amelyek egyedi, időben rendezhető kulcsokat igényelnek. A KSUID-ok egy időbélyeget és véletlenszerű adatokat kombinálnak, hogy ütközés-ellenálló, rendezhető azonosítókat hozzanak létre.
KSUID Generátor
Dokumentáció
KSUID Generátor
Bevezetés
A KSUID (K-Sortable Unique IDentifier) egy olyan egyedi azonosító formátum, amely számos előnyt kínál a hagyományos UUID (Universally Unique Identifier) és más azonosítórendszerekhez képest. Ez az eszköz lehetővé teszi, hogy gyorsan és egyszerűen generáljunk KSUID-okat.
Mi az a KSUID?
A KSUID egy 20 bájtos rendezhető azonosító, amely a következőkből áll:
- Egy 32 bites időbélyeg (4 bájt)
- 16 bájt véletlenszerűség
Karakterláncként ábrázolva a KSUID base62 kódolású, és 27 karakter hosszú.
A KSUID szerkezete
A KSUID szerkezete a következőképpen bontható le:
-
Időbélyeg (4 bájt): Ez az Unix epoch óta eltelt másodpercek számát jelenti (1970. január 1., 00:00 UTC). Az időbélyeg lehetővé teszi, hogy a KSUID-ok nagyjából rendezhetők legyenek a létrehozás ideje szerint.
-
Véletlenszerű komponens (16 bájt): Ez egy kriptográfiailag biztonságos véletlenszám, amely biztosítja az egyediséget, még akkor is, ha több KSUID-ot generálnak ugyanabban a másodpercben.
-
Base62 Kódolás: A kombinált 20 bájt (időbélyeg + véletlenszerű) ezután base62 (A-Z, a-z, 0-9) kódolással kerül ábrázolásra, hogy létrejöjjön a végső 27 karakteres karakterlánc.
KSUID Formula
A KSUID matematikailag a következőképpen ábrázolható:
Ahol:
- a 32 bites időbélyeg
- a 128 bites véletlenszerű komponens
- a konkatenációt jelöli
Az időbélyeg kiszámítása:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Ahol a KSUID_epoch 1400000000 (2014-05-13T16:53:20Z).
KSUID Szerkezet Diagram
Használati esetek KSUID-okhoz
A KSUID-ok különösen hasznosak a következő forgatókönyvekben:
-
Elosztott rendszerek: Amikor egyedi azonosítókra van szükség több szerver vagy szolgáltatás között koordináció nélkül.
-
Időben rendezhető adatok: Amikor szeretnéd az adatokat a létrehozás ideje szerint rendezni anélkül, hogy külön időbélyeg mezőt tárolnál.
-
Adatbázis kulcsok: Mint elsődleges kulcsok az adatbázisokban, különösen elosztott adatbázisokban, ahol az automatikusan növekvő egész számok nem megfelelőek.
-
URL-biztonságos azonosítók: Rövid, egyedi, URL-biztonságos azonosítók létrehozásához webalkalmazásokban.
-
Napló összekapcsolás: A naplóbejegyzések összekapcsolásához különböző szolgáltatások között mikroszolgáltatás-architektúrában.
A KSUID-ok előnyei
A KSUID-ok számos előnyt kínálnak más azonosítórendszerekkel szemben:
-
Rendezhetőség: A UUID-okkal ellentétben a KSUID-ok időrendben rendezhetők, ami hasznos az adatbázis indexeléshez és a naplóelemzéshez.
-
Nincs szükség koordinációra: Az automatikusan növekvő azonosítókhoz képest a KSUID-ok függetlenül generálhatók különböző szerverek által, anélkül, hogy ütközések kockázata lenne.
-
Kompakt ábrázolás: 27 karakterrel a KSUID-ok kompaktabbak, mint a UUID-ok, amikor karakterláncként ábrázolják őket.
-
Beágyazott időbélyeg: A beágyazott időbélyeg lehetővé teszi az időalapú rendezést és szűrést anélkül, hogy külön időbélyeg mezőt kellene tárolni.
-
URL-biztonságos: A base62 kódolás lehetővé teszi, hogy a KSUID-ok biztonságosan használhatók legyenek URL-ekben további kódolás nélkül.
-
Csökkentett ütközési valószínűség: A 16 bájt véletlenszerű komponens rendkívül valószínűtlenné teszi az ütközéseket, még magas generálási sebesség esetén is.
Hogyan használd ezt a generátort
- Írd be az esetlegesen szükséges további paramétereket (pl. testreszabott időbélyeg).
- Kattints a "Generálj KSUID-ot" gombra egy új KSUID létrehozásához.
- A generált KSUID megjelenik a kimeneti mezőben.
- Több KSUID-ot is generálhatsz az 1-3 lépések megismétlésével.
- Használhatod a "Másolás" gombot minden KSUID mellett, hogy a vágólapra másold.
- Opcionálisan használd az "Exportálás" funkciót, hogy letölts egy listát a generált KSUID-okról.
Ne feledd, hogy minden KSUID egyedi, és egyszer használatos. Minden alkalommal generálj új KSUID-ot, amikor egyedi azonosítóra van szükséged.
Kód Példák
Íme példák KSUID-ok generálására különböző programozási nyelveken:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Generált KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Generált 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("Generált 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 << "Generált KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Generált 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 "Generált 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("Generált KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Generált KSUID: \(newId)")
6
Hivatkozások
- Segment KSUID GitHub Repository: https://github.com/segmentio/ksuid
- "Jó egyedi azonosítók generálása" Peter Bourgon által: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID Specifikáció: https://github.com/segmentio/ksuid/blob/master/README.md
Visszajelzés
Kattints a visszajelzés értesítésre, hogy elkezdhesd a visszajelzést erről az eszközről
Kapcsolódó Eszközök
Fedezd fel a további eszközöket, amelyek hasznosak lehetnek a munkafolyamatodhoz