Generatore di Identificatori Unici Ordinabili KSUID
Genera Identificatori Unici Ordinabili K (KSUID) per l'uso in sistemi distribuiti, database e applicazioni che richiedono chiavi uniche e ordinabili nel tempo. I KSUID combinano un timestamp con dati casuali per creare identificatori resistenti alle collisioni e ordinabili.
Generatore KSUID
Documentazione
Generatore KSUID
Introduzione
KSUID (K-Sortable Unique IDentifier) è un formato di identificatore unico che offre diversi vantaggi rispetto ai tradizionali UUID (Universally Unique Identifier) e ad altri sistemi di identificazione. Questo strumento consente di generare KSUID in modo rapido e semplice.
Che cos'è un KSUID?
Un KSUID è un identificatore ordinabile di 20 byte che consiste in:
- Un timestamp a 32 bit (4 byte)
- 16 byte di casualità
Quando rappresentato come stringa, un KSUID è codificato in base62 ed è lungo 27 caratteri.
Struttura di un KSUID
La struttura di un KSUID può essere suddivisa come segue:
-
Timestamp (4 byte): Questo rappresenta il numero di secondi dall'epoca Unix (1 gennaio 1970, alle 00:00 UTC). Il timestamp consente ai KSUID di essere ordinabili in base al tempo di generazione.
-
Componente Casuale (16 byte): Questo è un numero casuale crittograficamente sicuro che garantisce l'unicità anche quando più KSUID vengono generati nella stessa seconda.
-
Codifica Base62: I 20 byte combinati (timestamp + casualità) vengono quindi codificati utilizzando base62 (A-Z, a-z, 0-9) per produrre la stringa finale di 27 caratteri.
Formula KSUID
Un KSUID può essere rappresentato matematicamente come:
Dove:
- è il timestamp a 32 bit
- è il componente casuale a 128 bit
- denota concatenazione
Il timestamp è calcolato come:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Dove KSUID_epoch è 1400000000 (2014-05-13T16:53:20Z).
Diagramma della Struttura KSUID
Casi d'uso per i KSUID
I KSUID sono particolarmente utili nei seguenti scenari:
-
Sistemi Distribuiti: Quando è necessario identificatori unici su più server o servizi senza coordinazione.
-
Dati Ordinabili per Tempo: Quando si desidera ordinare i dati in base al tempo di creazione senza memorizzare un timestamp separato.
-
Chiavi di Database: Come chiavi primarie nei database, specialmente nei database distribuiti dove gli interi auto-incrementanti non sono adatti.
-
Identificatori Sicuri per URL: Per creare identificatori brevi, unici e sicuri per URL per risorse nelle applicazioni web.
-
Correlazione dei Log: Per correlare le voci di log tra diversi servizi in un'architettura a microservizi.
Vantaggi dei KSUID
I KSUID offrono diversi vantaggi rispetto ad altri sistemi di identificazione:
-
Ordinabilità: A differenza degli UUID, i KSUID possono essere ordinati cronologicamente, il che è utile per l'indicizzazione dei database e l'analisi dei log.
-
Nessuna Coordinazione Necessaria: A differenza degli ID auto-incrementanti, i KSUID possono essere generati indipendentemente da diversi server senza rischiare collisioni.
-
Rappresentazione Compatta: Con 27 caratteri, i KSUID sono più compatti degli UUID quando rappresentati come stringhe.
-
Timestamp Incorporato: Il timestamp incorporato consente un ordinamento e un filtraggio basati sul tempo senza la necessità di un campo timestamp separato.
-
Sicuri per URL: La codifica base62 rende i KSUID sicuri per l'uso negli URL senza alcuna codifica aggiuntiva.
-
Probabilità Ridotta di Collisione: Il componente casuale di 16 byte rende le collisioni estremamente improbabili, anche a tassi di generazione elevati.
Come Utilizzare Questo Generatore
- Inserisci eventuali parametri aggiuntivi se necessario (ad esempio, timestamp personalizzato).
- Fai clic sul pulsante "Genera KSUID" per creare un nuovo KSUID.
- Il KSUID generato verrà visualizzato nel campo di output.
- Puoi generare più KSUID ripetendo i passaggi 1-3.
- Usa il pulsante "Copia" accanto a ciascun KSUID per copiarlo negli appunti.
- Facoltativamente, utilizza la funzione "Esporta" per scaricare un elenco di KSUID generati.
Ricorda che ogni KSUID è unico e dovrebbe essere utilizzato solo una volta. Genera un nuovo KSUID ogni volta che hai bisogno di un identificatore unico.
Esempi di Codice
Ecco esempi di generazione di KSUID in vari linguaggi di programmazione:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"KSUID generato: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`KSUID generato: ${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("KSUID generato: " + 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 << "KSUID generato: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "KSUID generato: #{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 "KSUID generato: " . $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("KSUID generato: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("KSUID generato: \(newId)")
6
Riferimenti
- Repository GitHub di KSUID di Segment: https://github.com/segmentio/ksuid
- "Generare buoni identificatori unici" di Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- Specifica KSUID: https://github.com/segmentio/ksuid/blob/master/README.md
Feedback
Clicca sul toast di feedback per iniziare a inviare feedback su questo strumento
Strumenti Correlati
Scopri altri strumenti che potrebbero essere utili per il tuo flusso di lavoro