KSUID-Generator für verteilte Systeme und Datenbanken
Generieren Sie K-sortierbare eindeutige Identifikatoren (KSUIDs) für die Verwendung in verteilten Systemen, Datenbanken und Anwendungen, die eindeutige, zeit-sortierbare Schlüssel erfordern. KSUIDs kombinieren einen Zeitstempel mit zufälligen Daten, um kollision resistente, sortierbare Identifikatoren zu erstellen.
KSUID-Generator
Dokumentation
KSUID-Generator
Einführung
KSUID (K-Sortierbare Eindeutige Identifikatoren) ist ein eindeutiges Identifikationsformat, das mehrere Vorteile gegenüber traditionellen UUIDs (Universell Eindeutige Identifikatoren) und anderen Identifikationssystemen bietet. Dieses Tool ermöglicht es Ihnen, KSUIDs schnell und einfach zu generieren.
Was ist ein KSUID?
Ein KSUID ist ein 20-Byte sortierbarer Identifikator, der aus Folgendem besteht:
- Einem 32-Bit-Zeitstempel (4 Bytes)
- 16 Bytes Zufälligkeit
Wenn als Zeichenfolge dargestellt, wird ein KSUID in Base62 kodiert und ist 27 Zeichen lang.
Struktur eines KSUID
Die Struktur eines KSUID kann wie folgt unterteilt werden:
-
Zeitstempel (4 Bytes): Dieser repräsentiert die Anzahl der Sekunden seit dem Unix-Epoch (1. Januar 1970, 00:00 UTC). Der Zeitstempel ermöglicht es, KSUIDs grob nach Erstellungszeit zu sortieren.
-
Zufallskomponente (16 Bytes): Dies ist eine kryptographisch sichere Zufallszahl, die die Eindeutigkeit gewährleistet, selbst wenn mehrere KSUIDs in derselben Sekunde generiert werden.
-
Base62-Kodierung: Die kombinierten 20 Bytes (Zeitstempel + Zufall) werden dann mit Base62 (A-Z, a-z, 0-9) kodiert, um die endgültige 27-Zeichen-Zeichenfolge zu erzeugen.
KSUID-Formel
Ein KSUID kann mathematisch wie folgt dargestellt werden:
Wobei:
- der 32-Bit-Zeitstempel ist
- die 128-Bit-Zufallskomponente ist
- die Verkettung darstellt
Der Zeitstempel wird wie folgt berechnet:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Wobei KSUID_epoch 1400000000 (2014-05-13T16:53:20Z) ist.
KSUID-Strukturdiagramm
Anwendungsfälle für KSUIDs
KSUIDs sind besonders nützlich in den folgenden Szenarien:
-
Verteilte Systeme: Wenn Sie eindeutige Identifikatoren über mehrere Server oder Dienste hinweg ohne Koordination benötigen.
-
Zeit-sortierbare Daten: Wenn Sie Daten nach Erstellungszeit sortieren möchten, ohne einen separaten Zeitstempel zu speichern.
-
Datenbank-Schlüssel: Als Primärschlüssel in Datenbanken, insbesondere in verteilten Datenbanken, wo auto-incrementierende Ganzzahlen nicht geeignet sind.
-
URL-sichere Identifikatoren: Für die Erstellung kurzer, eindeutiger, URL-sicherer Identifikatoren für Ressourcen in Webanwendungen.
-
Protokoll-Korrelation: Um Protokolleinträge über verschiedene Dienste in einer Microservices-Architektur zu korrelieren.
Vorteile von KSUIDs
KSUIDs bieten mehrere Vorteile gegenüber anderen Identifikationssystemen:
-
Sortierbarkeit: Im Gegensatz zu UUIDs können KSUIDs chronologisch sortiert werden, was nützlich für die Datenbankindizierung und Protokollanalyse ist.
-
Keine Koordination erforderlich: Im Gegensatz zu auto-incrementierenden IDs können KSUIDs unabhängig von verschiedenen Servern generiert werden, ohne dass Kollisionen riskieren.
-
Kompakte Darstellung: Mit 27 Zeichen sind KSUIDs kompakter als UUIDs, wenn sie als Zeichenfolgen dargestellt werden.
-
Eingebetteter Zeitstempel: Der eingebettete Zeitstempel ermöglicht zeitbasierte Sortierung und Filterung, ohne ein separates Zeitstempelfeld zu benötigen.
-
URL-sicher: Die Base62-Kodierung macht KSUIDs sicher für die Verwendung in URLs ohne zusätzliche Kodierung.
-
Reduzierte Kollisionswahrscheinlichkeit: Die 16-Byte-Zufallskomponente macht Kollisionen extrem unwahrscheinlich, selbst bei hohen Generierungsraten.
So verwenden Sie diesen Generator
- Geben Sie alle zusätzlichen Parameter ein, falls erforderlich (z. B. benutzerdefinierter Zeitstempel).
- Klicken Sie auf die Schaltfläche "KSUID generieren", um ein neues KSUID zu erstellen.
- Das generierte KSUID wird im Ausgabefeld angezeigt.
- Sie können mehrere KSUIDs generieren, indem Sie die Schritte 1-3 wiederholen.
- Verwenden Sie die Schaltfläche "Kopieren" neben jedem KSUID, um es in Ihre Zwischenablage zu kopieren.
- Optional können Sie die Funktion "Exportieren" verwenden, um eine Liste der generierten KSUIDs herunterzuladen.
Denken Sie daran, dass jedes KSUID einzigartig ist und nur einmal verwendet werden sollte. Generieren Sie jedes Mal ein neues KSUID, wenn Sie einen eindeutigen Identifikator benötigen.
Code-Beispiele
Hier sind Beispiele zur Generierung von KSUIDs in verschiedenen Programmiersprachen:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Generiertes KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Generiertes 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("Generiertes 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 << "Generiertes KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Generiertes 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 "Generiertes 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("Generiertes KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Generiertes KSUID: \(newId)")
6
Referenzen
- Segments KSUID GitHub-Repository: https://github.com/segmentio/ksuid
- "Generierung guter eindeutiger Identifikatoren" von Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID-Spezifikation: https://github.com/segmentio/ksuid/blob/master/README.md
Feedback
Klicken Sie auf das Feedback-Toast, um Feedback zu diesem Tool zu geben
Verwandte Werkzeuge
Entdecken Sie weitere Werkzeuge, die für Ihren Arbeitsablauf nützlich sein könnten