KSUID Generator for Unique Time-Sortable Identifiers
Generirajte K-sortabilne jedinstvene identifikatore (KSUID) za korištenje u distribuiranim sustavima, bazama podataka i aplikacijama koje zahtijevaju jedinstvene, vremenski sortabilne ključeve. KSUID kombinira vremensku oznaku s nasumičnim podacima kako bi stvorio identifikatore otporne na sudare i sortabilne.
Generator KSUID-a
Dokumentacija
KSUID Generator
Uvod
KSUID (K-Sortable Unique IDentifier) je format jedinstvenog identifikatora koji nudi nekoliko prednosti u odnosu na tradicionalni UUID (Universally Unique Identifier) i druge sustave identifikacije. Ovaj alat vam omogućuje brzo i jednostavno generiranje KSUID-ova.
Što je KSUID?
KSUID je jedinstveni identifikator od 20 bajtova koji se sastoji od:
- 32-bitnog vremenskog oznaka (4 bajta)
- 16 bajtova nasumičnosti
Kada se prikazuje kao niz, KSUID se kodira u base62 i dug je 27 znakova.
Struktura KSUID-a
Struktura KSUID-a može se razložiti na sljedeći način:
-
Vremenska oznaka (4 bajta): Ovo predstavlja broj sekundi od Unix epohe (1. siječnja 1970. u 00:00 UTC). Vremenska oznaka omogućuje da se KSUID-ovi otprilike sortiraju prema vremenu generiranja.
-
Nasumična komponenta (16 bajtova): Ovo je kriptografski siguran nasumični broj koji osigurava jedinstvenost čak i kada se više KSUID-ova generira u istoj sekundi.
-
Base62 kodiranje: Kombiniranih 20 bajtova (vremenska oznaka + nasumično) se zatim kodira koristeći base62 (A-Z, a-z, 0-9) kako bi se dobio konačni niz od 27 znakova.
KSUID Formula
KSUID se može matematički predstaviti kao:
Gdje:
- je 32-bitna vremenska oznaka
- je 128-bitna nasumična komponenta
- označava spajanje
Vremenska oznaka se izračunava kao:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Gdje je KSUID_epoch 1400000000 (2014-05-13T16:53:20Z).
Dijagram strukture KSUID-a
Upotreba KSUID-ova
KSUID-ovi su posebno korisni u sljedećim scenarijima:
-
Distribuirani sustavi: Kada su vam potrebni jedinstveni identifikatori na više poslužitelja ili usluga bez koordinacije.
-
Sortabilni podaci po vremenu: Kada želite sortirati podatke prema vremenu stvaranja bez pohranjivanja zasebne vremenske oznake.
-
Ključevi baze podataka: Kao primarni ključevi u bazama podataka, posebno u distribuiranim bazama podataka gdje auto-incrementing cijeli brojevi nisu prikladni.
-
URL-sigurni identifikatori: Za stvaranje kratkih, jedinstvenih, URL-sigurnih identifikatora za resurse u web aplikacijama.
-
Korelacija logova: Za korelaciju unosa logova među različitim uslugama u mikroservisnoj arhitekturi.
Prednosti KSUID-ova
KSUID-ovi nude nekoliko prednosti u odnosu na druge sustave identifikacije:
-
Sortabilnost: Za razliku od UUID-ova, KSUID-ovi se mogu sortirati kronološki, što je korisno za indeksiranje baza podataka i analizu logova.
-
Nema potrebne koordinacije: Za razliku od auto-incrementing ID-ova, KSUID-ovi se mogu generirati neovisno od različitih poslužitelja bez rizika od sudara.
-
Kompaktna reprezentacija: Sa 27 znakova, KSUID-ovi su kompaktniji od UUID-ova kada se prikazuju kao nizovi.
-
Ugrađena vremenska oznaka: Ugrađena vremenska oznaka omogućuje vremenski temeljeno sortiranje i filtriranje bez potrebe za zasebnim poljem vremenske oznake.
-
URL-sigurno: Base62 kodiranje čini KSUID-ove sigurnima za upotrebu u URL-ovima bez dodatnog kodiranja.
-
Smanjena vjerojatnost sudara: 16-bajtna nasumična komponenta čini sudare izuzetno malo vjerojatnima, čak i pri visokim stopama generiranja.
Kako koristiti ovaj generator
- Unesite sve dodatne parametre ako je potrebno (npr. prilagođena vremenska oznaka).
- Kliknite gumb "Generiraj KSUID" za stvaranje novog KSUID-a.
- Generirani KSUID će se prikazati u izlaznom polju.
- Možete generirati više KSUID-ova ponavljanjem koraka 1-3.
- Koristite gumb "Kopiraj" pored svakog KSUID-a za kopiranje u međuspremnik.
- Opcionalno, koristite značajku "Izvezi" za preuzimanje popisa generiranih KSUID-ova.
Zapamtite da je svaki KSUID jedinstven i treba se koristiti samo jednom. Generirajte novi KSUID svaki put kada vam je potreban jedinstveni identifikator.
Primjeri koda
Evo primjera generiranja KSUID-ova na raznim programskim jezicima:
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
- Segmentova KSUID GitHub repozitorij: https://github.com/segmentio/ksuid
- "Generiranje dobrih jedinstvenih identifikatora" autora Petera Bourgona: 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 obavijest o povratnim informacijama da biste započeli davati povratne informacije o ovom alatu
Povezani alati
Otkrijte više alata koji bi mogli biti korisni za vaš radni proces