KSUID ģeneratori unikālo identifikatoru izveidei
Ģenerējiet K-sortējamus unikālos identifikatorus (KSUID) lietošanai izplatītajās sistēmās, datu bāzēs un lietojumprogrammās, kas prasa unikālus, laika sortējamus atslēgas. KSUID apvieno laika zīmogu ar nejaušiem datiem, lai izveidotu sadursmēm izturīgus, sortējamus identifikatorus.
KSUID ģenerators
Dokumentācija
KSUID ģenerators
Ievads
KSUID (K-sortējams unikālais identifikators) ir unikāla identifikatora formāts, kas piedāvā vairākas priekšrocības salīdzinājumā ar tradicionālajiem UUID (Vispārējais unikālais identifikators) un citiem identifikatoru sistēmām. Šis rīks ļauj ātri un viegli ģenerēt KSUID.
Kas ir KSUID?
KSUID ir 20 baitus garš sortējams identifikators, kas sastāv no:
- 32 bitu laika zīmoga (4 baitus)
- 16 baitiem nejaušības
Kad tas tiek attēlots kā virkne, KSUID tiek kodēts base62 un ir 27 rakstzīmes garš.
KSUID struktūra
KSUID struktūru var sadalīt šādi:
-
Laika zīmogs (4 baitus): Tas attēlo sekunžu skaitu kopš Unix epohas (1970. gada 1. janvāra plkst. 00:00 UTC). Laika zīmogs ļauj KSUID būt aptuveni sortējamiem pēc ģenerēšanas laika.
-
Nejaušā sastāvdaļa (16 baitus): Tas ir kriptogrāfiski drošs nejaušs skaitlis, kas nodrošina unikālumu pat tad, ja vairāki KSUID tiek ģenerēti vienā sekundē.
-
Base62 kodēšana: Apvienotie 20 baitus (laika zīmogs + nejaušība) tiek kodēti, izmantojot base62 (A-Z, a-z, 0-9), lai iegūtu galīgo 27 rakstzīmju virkni.
KSUID formula
KSUID var matemātiski attēlot kā:
Kur:
- ir 32 bitu laika zīmogs
- ir 128 bitu nejaušā sastāvdaļa
- apzīmē savienošanu
Laika zīmogs tiek aprēķināts kā:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Kur KSUID_epoch ir 1400000000 (2014-05-13T16:53:20Z).
KSUID struktūras diagramma
KSUID lietošanas gadījumi
KSUID ir īpaši noderīgi šādās situācijās:
-
Izplatītās sistēmas: Kad jums nepieciešami unikāli identifikatori vairākos serveros vai pakalpojumos bez koordinācijas.
-
Laika sortējami dati: Kad vēlaties sortēt datus pēc izveides laika, neglabājot atsevišķu laika zīmogu.
-
Datu bāzes atslēgas: Kā primārās atslēgas datu bāzēs, īpaši izplatītajās datu bāzēs, kur automātiski pieaugoši veseli skaitļi nav piemēroti.
-
URL droši identifikatori: Lai izveidotu īsus, unikālus, URL drošus identifikatorus resursiem tīmekļa lietojumprogrammās.
-
Žurnālu korelācija: Lai korelētu žurnālu ierakstus dažādos pakalpojumos mikroservisu arhitektūrā.
KSUID priekšrocības
KSUID piedāvā vairākas priekšrocības salīdzinājumā ar citām identifikatoru sistēmām:
-
Sortējamība: Atšķirībā no UUID, KSUID var sortēt hronoloģiski, kas ir noderīgi datu bāzes indeksēšanai un žurnālu analīzei.
-
Koordinācija nav nepieciešama: Atšķirībā no automātiski pieaugošiem ID, KSUID var ģenerēt neatkarīgi dažādi serveri, neriskējot ar sadursmēm.
-
Kompakta reprezentācija: 27 rakstzīmes garumā KSUID ir kompakti salīdzinājumā ar UUID, kad tie tiek attēloti kā virknes.
-
Laika zīmogs iekļauts: Iekļautais laika zīmogs ļauj veikt laika balstītu sortēšanu un filtrēšanu bez atsevišķa laika zīmoga lauka.
-
URL drošs: Base62 kodēšana padara KSUID drošus lietošanai URL bez papildu kodēšanas.
-
Samazināta sadursmju iespējamība: 16 baitu nejaušā sastāvdaļa padara sadursmes ārkārtīgi maz ticamas, pat pie augstiem ģenerēšanas ātrumiem.
Kā izmantot šo ģeneratoru
- Ievadiet jebkurus papildu parametrus, ja nepieciešams (piemēram, pielāgots laika zīmogs).
- Noklikšķiniet uz pogas "Ģenerēt KSUID", lai izveidotu jaunu KSUID.
- Ģenerētais KSUID tiks attēlots izvades laukā.
- Jūs varat ģenerēt vairākus KSUID, atkārtojot 1.-3. darbību.
- Izmantojiet "Kopēt" pogu blakus katram KSUID, lai to kopētu uz starpliktuvi.
- Pēc izvēles izmantojiet "Eksportēt" funkciju, lai lejupielādētu ģenerēto KSUID sarakstu.
Atcerieties, ka katrs KSUID ir unikāls un to vajadzētu izmantot tikai vienu reizi. Ģenerējiet jaunu KSUID katru reizi, kad jums nepieciešams unikāls identifikators.
Koda piemēri
Šeit ir piemēri KSUID ģenerēšanai dažādās programmēšanas valodās:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Ģenerētais KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Ģenerētais 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("Ģenerētais 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 << "Ģenerētais KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Ģenerētais 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 "Ģenerētais 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("Ģenerētais KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Ģenerētais KSUID: \(newId)")
6
Atsauces
- Segmenta KSUID GitHub repozitorijs: https://github.com/segmentio/ksuid
- "Labas unikālo identifikatoru ģenerēšana" autors Pīters Bourgons: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID specifikācija: https://github.com/segmentio/ksuid/blob/master/README.md
Atsauksmes
Noklikšķiniet uz atsauksmju paziņojuma, lai sāktu sniegt atsauksmes par šo rīku
Saistītie rīki
Atklājiet vairāk rīku, kas varētu būt noderīgi jūsu darba plūsmā