KSUID-generaattori ainutlaatuisten tunnisteiden luomiseen
Tuota K-lajiteltavia ainutlaatuisia tunnisteita (KSUID) käytettäväksi hajautetuissa järjestelmissä, tietokannoissa ja sovelluksissa, jotka vaativat ainutlaatuisia, aikajärjestyksessä lajitteltavia avaimia. KSUID-yhdistää aikaleiman satunnaisiin tietoihin luodakseen törmäyksiltä suojattuja, lajitteltavia tunnisteita.
KSUID-generaattori
Dokumentaatio
KSUID-generaattori
Johdanto
KSUID (K-Sortable Unique IDentifier) on ainutlaatuinen tunnistemuoto, joka tarjoaa useita etuja perinteisiin UUID (Universally Unique Identifier) ja muihin tunnistusjärjestelmiin verrattuna. Tämä työkalu mahdollistaa KSUIDien nopean ja helpon luomisen.
Mikä on KSUID?
KSUID on 20-tavun järjestettävä tunniste, joka koostuu:
- 32-bittisestä aikaleimasta (4 tavua)
- 16 tavusta satunnaisuutta
Kun se esitetään merkkijonona, KSUID on koodattu base62-muotoon ja se on 27 merkkiä pitkä.
KSUIDin rakenne
KSUIDin rakenne voidaan jakaa seuraaviin osiin:
-
Aikaleima (4 tavua): Tämä edustaa sekuntien määrää Unix-epookista (1. tammikuuta 1970 klo 00:00 UTC). Aikaleima mahdollistaa KSUIDien järjestämisen suurin piirtein luontiajan mukaan.
-
Satunnainen komponentti (16 tavua): Tämä on kryptografisesti turvallinen satunnainen luku, joka varmistaa ainutlaatuisuuden, vaikka useita KSUIDeja luotaisiin samassa sekunnissa.
-
Base62-koodaus: Yhdistetyt 20 tavua (aikaleima + satunnainen) koodataan sitten base62-muotoon (A-Z, a-z, 0-9) tuottaen lopullisen 27-merkkisen merkkijonon.
KSUID-kaava
KSUID voidaan esittää matemaattisesti seuraavasti:
Missä:
- on 32-bittinen aikaleima
- on 128-bittinen satunnainen komponentti
- tarkoittaa yhdistämistä
Aikaleima lasketaan seuraavasti:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Missä KSUID_epoch on 1400000000 (2014-05-13T16:53:20Z).
KSUIDin rakennekaavio
Käyttötapaukset KSUIDeille
KSUIDit ovat erityisen hyödyllisiä seuraavissa tilanteissa:
-
Hajautetut järjestelmät: Kun tarvitset ainutlaatuisia tunnisteita useilla palvelimilla tai palveluilla ilman koordinointia.
-
Aikajärjestettävä data: Kun haluat järjestää dataa luontiajan mukaan ilman erillisen aikaleiman tallentamista.
-
Tietokannan avaimet: Pääavaimina tietokannoissa, erityisesti hajautetuissa tietokannoissa, joissa automaattisesti kasvavat kokonaisluvut eivät ole sopivia.
-
URL-turvalliset tunnisteet: Lyhyiden, ainutlaatuisten, URL-turvallisten tunnisteiden luomiseen resursseille verkkosovelluksissa.
-
Lokien korrelaatio: Lokimerkintöjen korreloimiseen eri palveluissa mikropalveluarkkitehtuurissa.
KSUIDien edut
KSUIDit tarjoavat useita etuja muihin tunnistusjärjestelmiin verrattuna:
-
Järjestettävyys: Toisin kuin UUID:t, KSUIDit voidaan järjestää aikajärjestyksessä, mikä on hyödyllistä tietokannan indeksoinnissa ja lokianalyysissä.
-
Ei vaadi koordinointia: Toisin kuin automaattisesti kasvavat ID:t, KSUIDit voidaan luoda itsenäisesti eri palvelimilla ilman, että törmätään päällekkäisyyksiin.
-
Tiivis esitys: 27 merkillä KSUIDit ovat tiiviimpiä kuin UUID:t merkkijonoina.
-
Aikaleima upotettuna: Upotettu aikaleima mahdollistaa aikaperusteisen järjestämisen ja suodattamisen ilman erillistä aikaleimakenttää.
-
URL-turvallinen: Base62-koodaus tekee KSUIDeista turvallisia käytettäväksi URL-osoitteissa ilman lisäkoodausta.
-
Vähentynyt päällekkäisyyksien todennäköisyys: 16-tavun satunnainen komponentti tekee päällekkäisyyksistä äärimmäisen epätodennäköisiä, jopa korkeilla luontinopeuksilla.
Kuinka käyttää tätä generaattoria
- Syötä tarvittaessa lisäparametrit (esim. mukautettu aikaleima).
- Napsauta "Generoi KSUID" -painiketta luodaksesi uuden KSUIDin.
- Luotu KSUID näkyy tuloskentässä.
- Voit luoda useita KSUIDeja toistamalla vaiheet 1-3.
- Käytä "Kopioi" -painiketta kunkin KSUIDin vieressä kopioidaksesi sen leikepöydälle.
- Valinnaisesti käytä "Vie" -toimintoa ladataksesi luettelon luoduista KSUIDeista.
Muista, että jokainen KSUID on ainutlaatuinen ja sitä tulisi käyttää vain kerran. Luo uusi KSUID aina, kun tarvitset ainutlaatuista tunnistetta.
Koodiesimerkit
Tässä on esimerkkejä KSUIDien luomisesta eri ohjelmointikielillä:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Luotu KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Luotu 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("Luotu 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 << "Luotu KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Luotu 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 "Luotu 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("Luotu KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Luotu KSUID: \(newId)")
6
Viitteet
- Segmentin KSUID GitHub-repositorio: https://github.com/segmentio/ksuid
- "Hyvien ainutlaatuisten tunnisteiden luominen" Peter Bourgonilta: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID-eritelmä: https://github.com/segmentio/ksuid/blob/master/README.md
Palaute
Napsauta palautetoimintoa aloittaaksesi palautteen antamisen tästä työkalusta
Liittyvät työkalut
Löydä lisää työkaluja, jotka voivat olla hyödyllisiä työnkulussasi