Ustvarite K-sortne unikatne identifikatorje KSUID za sisteme
Ustvarite K-sortne unikatne identifikatorje (KSUID) za uporabo v distribuiranih sistemih, podatkovnih bazah in aplikacijah, ki zahtevajo unikatne, časovno sortne ključe. KSUID združujejo časovni žig z naključnimi podatki, da ustvarijo identifikatorje, odporne na kolizije in sortne.
Generator KSUID
Dokumentacija
KSUID Generator
Uvod
KSUID (K-sortabilni unikatni identifikator) je format unikatnega identifikatorja, ki ponuja več prednosti v primerjavi s tradicionalnim UUID (univerzalni unikatni identifikator) in drugimi sistemi identifikatorjev. Ta orodja omogočajo hitro in enostavno generiranje KSUID-ov.
Kaj je KSUID?
KSUID je 20-bajtni sortabilni identifikator, ki se sestoji iz:
- 32-bitnega časovnega žiga (4 bajti)
- 16 bajtov naključnosti
Ko je predstavljen kot niz, je KSUID kodiran v base62 in je dolg 27 znakov.
Struktura KSUID-a
Struktura KSUID-a je razdeljena na naslednje dele:
-
Časovni žig (4 bajti): To predstavlja število sekund od Unixove dobe (1. januar 1970, ob 00:00 UTC). Časovni žig omogoča, da so KSUID-i približno sortabilni po času generiranja.
-
Naključna komponenta (16 bajtov): To je kriptografsko varen naključni števil, ki zagotavlja unikatnost, tudi ko je več KSUID-ov generiranih v istem trenutku.
-
Base62 kodiranje: Kombiniranih 20 bajtov (časovni žig + naključni) je nato kodiranih z uporabo base62 (A-Z, a-z, 0-9), da se ustvari končni 27-znakovni niz.
Formula KSUID
KSUID lahko matematično predstavimo kot:
Kjer:
- je 32-bitni časovni žig
- je 128-bitna naključna komponenta
- označuje konkatenacijo
Časovni žig se izračuna kot:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Kjer je KSUID_epoch 1400000000 (2014-05-13T16:53:20Z).
Diagram strukture KSUID-a
Uporabniški primeri za KSUID-e
KSUID-i so še posebej uporabni v naslednjih scenarijih:
-
Porazdeljeni sistemi: Ko potrebujete unikatne identifikatorje preko več strežnikov ali storitev brez usklajevanja.
-
Časovno sortabilni podatki: Ko želite sortirati podatke po času ustvarjanja, ne da bi shranjevali ločen časovni žig.
-
Ključi v podatkovnih bazah: Kot primarni ključi v podatkovnih bazah, zlasti v porazdeljenih podatkovnih bazah, kjer avto-increment številke niso primerne.
-
URL-varni identifikatorji: Za ustvarjanje kratkih, unikatnih, URL-varnih identifikatorjev za vire v spletnih aplikacijah.
-
Korelacija dnevnikov: Za korelacijo vnosov dnevnikov preko različnih storitev v arhitekturi mikroservisov.
Prednosti KSUID-ov
KSUID-i ponujajo več prednosti v primerjavi z drugimi sistemi identifikatorjev:
-
Sortabilnost: Za razliko od UUID-ov, KSUID-i lahko kronološko sortira, kar je koristno za indeksiranje podatkov in analizo dnevnikov.
-
Ni potrebno usklajevanje: Za razliko od avto-increment ID-jev, KSUID-e lahko generirajo neodvisno različni strežniki brez tveganja za kolizije.
-
Kompaktna predstavitev: Pri 27 znakih so KSUID-i bolj kompaktni od UUID-ov, ko so predstavljeni kot nizi.
-
Vgrajen časovni žig: Vgrajeni časovni žig omogoča časovno osnovano sortiranje in filtriranje brez potrebe po ločenem polju časovnega žiga.
-
URL-varno: Base62 kodiranje naredi KSUID-e varne za uporabo v URL-jih brez dodatnega kodiranja.
-
Zmanjšana verjetnost kolizij: 16-bajtna naključna komponenta naredi kolizije izjemno malo verjetne, tudi pri visokih stopnjah generiranja.
Kako uporabljati to orodje za generiranje
- Vnesite morebitne dodatne parametre, če je potrebno (npr. po meri časovni žig).
- Kliknite gumb "Generiraj KSUID", da ustvarite nov KSUID.
- Generirani KSUID bo prikazan v izhodnem polju.
- Več KSUID-ov lahko generirate tako, da ponovite korake 1-3.
- Uporabite gumb "Kopiraj" poleg vsakega KSUID-a, da ga kopirate v odložišče.
- Po želji uporabite funkcijo "Izvozi", da prenesete seznam generiranih KSUID-ov.
Ne pozabite, da je vsak KSUID edinstven in ga je treba uporabiti le enkrat. Generirajte nov KSUID vsakič, ko potrebujete unikatni identifikator.
Kode Primeri
Tukaj so primeri generiranja KSUID-ov v različnih programskih jezikih:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Generirani KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Generirani 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("Generirani 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 << "Generirani KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Generirani 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 "Generirani 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("Generirani KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Generirani KSUID: \(newId)")
6
Reference
- Segmentov KSUID GitHub repozitorij: https://github.com/segmentio/ksuid
- "Generiranje dobrih unikatnih identifikatorjev" avtorja Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID specifikacija: https://github.com/segmentio/ksuid/blob/master/README.md
Povratne informacije
Kliknite na toast za povratne informacije, da začnete dajati povratne informacije o tem orodju
Sorodne orodja
Odkrijte več orodij, ki bi lahko bila koristna za vaš delovni proces