KSUID Generator for Unique, Time-Sortable Identifiers
Generaator K-sortitavaid unikaalseid identifikaatoreid (KSUID) jaotatud süsteemide, andmebaaside ja rakenduste jaoks, mis vajavad unikaalseid, ajaliselt sorteeritavaid võtmeid. KSUID-d ühendavad ajatempli juhuslike andmetega, et luua kokkupõrkeid vältivaid, sorteeritavaid identifikaatoreid.
KSUID generaator
Dokumentatsioon
KSUID Generaator
Sissejuhatus
KSUID (K-sortitav unikaalne identifikaator) on unikaalne identifikaatori formaat, mis pakub mitmeid eeliseid traditsiooniliste UUID (universaalse unikaalse identifikaatori) ja teiste identifikaatorite süsteemide üle. See tööriist võimaldab teil kiiresti ja lihtsalt genereerida KSUID-e.
Mis on KSUID?
KSUID on 20-baitine sorteeritav identifikaator, mis koosneb:
- 32-bitine ajatemperatuur (4 baiti)
- 16 baiti juhuslikkust
Kuna KSUID esindatakse stringina, kodeeritakse see base62-s ja on 27 tähemärki pikk.
KSUID Struktuur
KSUID struktuuri saab jagada järgmistesse osadesse:
-
Ajatempel (4 baiti): See esindab sekundite arvu alates Unix'i ajast (1. jaanuar 1970, 00:00 UTC). Ajatempel võimaldab KSUID-del olla ligikaudu sorteeritavad genereerimise aja järgi.
-
Juhuslik komponent (16 baiti): See on krüptograafiliselt turvaline juhuslik number, mis tagab unikaalsuse isegi siis, kui mitu KSUID-d genereeritakse samas sekundis.
-
Base62 kodeerimine: Ühendatud 20 baiti (ajatempel + juhuslik) kodeeritakse seejärel kasutades base62 (A-Z, a-z, 0-9), et toota lõplik 27-tähemärgiline string.
KSUID Valem
KSUID-d saab matemaatiliselt esitada järgmiselt:
Kus:
- on 32-bitine ajatemperatuur
- on 128-bitine juhuslik komponent
- tähistab ühendamist
Ajatempel arvutatakse järgmiselt:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Kus KSUID_epoch on 1400000000 (2014-05-13T16:53:20Z).
KSUID Struktuuri Diagramm
KSUID-de Kasutamise Juhud
KSUID-d on eriti kasulikud järgmistes stsenaariumides:
-
Jaotatud süsteemid: Kui vajate unikaalseid identifikaatoreid mitme serveri või teenuse vahel ilma koordineerimiseta.
-
Aja järgi sorteeritav andmed: Kui soovite sorteerida andmeid loomise aja järgi ilma eraldi ajatempli salvestamiseta.
-
Andmebaasi võtmed: Peamisteks võtmeteks andmebaasides, eriti jaotatud andmebaasides, kus automaatselt suurenevad täisarvud ei sobi.
-
URL-turvalised identifikaatorid: Lühikeste, unikaalsete, URL-turvaliste identifikaatorite loomiseks veebirakendustes.
-
Logide korrelatsioon: Logi sissekannete korrelatsioon erinevates teenustes mikroteenuste arhitektuuris.
KSUID-de Eelised
KSUID-d pakuvad mitmeid eeliseid teiste identifikaatorite süsteemide üle:
-
Sorteeritavus: Erinevalt UUID-dest saab KSUID-e sorteerida kronoloogiliselt, mis on kasulik andmebaasi indekseerimise ja logianalüüsi jaoks.
-
Koordineerimist ei nõuta: Erinevalt automaatselt suurenevatest ID-dest saab KSUID-e genereerida iseseisvalt erinevate serverite poolt ilma kokkupõrgete riskita.
-
Kompaktne esitus: 27 tähemärgi pikkune KSUID on stringina kompaktsem kui UUID-d.
-
Ajatempel on sisse ehitatud: Sisse ehitatud ajatemperatuur võimaldab ajapõhist sortimist ja filtreerimist ilma eraldi ajatempli välja salvestamata.
-
URL-turvaline: Base62 kodeerimine muudab KSUID-d URL-ides kasutamiseks ohutuks ilma täiendava kodeerimiseta.
-
Vähenenud kokkupõrke tõenäosus: 16-baitine juhuslik komponent muudab kokkupõrkeid äärmiselt ebatõenäoliseks, isegi kõrgete genereerimiskiiruste korral.
Kuidas Seda Generaatorit Kasutada
- Sisestage vajadusel kõik täiendavad parameetrid (nt kohandatud ajatemperatuur).
- Klõpsake nuppu "Genereeri KSUID", et luua uus KSUID.
- Genereeritud KSUID kuvatakse väljundväljas.
- Saate genereerida mitu KSUID-d, kordades samme 1-3.
- Kasutage nuppu "Kopeeri" iga KSUID kõrval, et kopeerida see oma lõikepuhvrisse.
- Valikuliselt kasutage funktsiooni "Eksport", et alla laadida genereeritud KSUID-de loend.
Pidage meeles, et iga KSUID on ainulaadne ja seda tuleks kasutada ainult üks kord. Genereerige iga kord, kui vajate unikaalset identifikaatorit.
Koodinäited
Siin on näited KSUID-de genereerimisest erinevates programmeerimiskeeltes:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Genereeritud KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Genereeritud 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("Genereeritud 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 << "Genereeritud KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Genereeritud 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 "Genereeritud 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("Genereeritud KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Genereeritud KSUID: \(newId)")
6
Viidatud
- Segmenti KSUID GitHubi hoidla: https://github.com/segmentio/ksuid
- "Heade unikaalsete identifikaatorite genereerimine" Peter Bourgonilt: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID Spetsifikatsioon: https://github.com/segmentio/ksuid/blob/master/README.md
Tagasiside
Kliki tagasiside teavitusele, et alustada tagasiside andmist selle tööriista kohta
Seotud tööriistad
Avasta rohkem tööriistu, mis võivad olla kasulikud sinu töövoo jaoks