Генератор на K-Подредими Уникални Идентификатори (KSUID)
Генерирайте K-Подредими Уникални Идентификатори (KSUID) за употреба в разпределени системи, бази данни и приложения, изискващи уникални, подредими по време ключове. KSUID комбинират времеви печат с произволни данни, за да създадат устойчиви на сблъсък, подредими идентификатори.
Генератор на KSUID
Документация
Генератор на KSUID
Въведение
KSUID (K-Sortable Unique IDentifier) е формат на уникален идентификатор, който предлага няколко предимства пред традиционния UUID (Universally Unique Identifier) и други системи за идентификатори. Този инструмент ви позволява бързо и лесно да генерирате KSUID.
Какво е KSUID?
KSUID е 20-байтов уникален идентификатор, който се състои от:
- 32-битов времеви печат (4 байта)
- 16 байта произволност
Когато се представя като низ, KSUID е кодирано в base62 и е дълго 27 знака.
Структура на KSUID
Структурата на KSUID може да бъде разделена, както следва:
-
Времеви печат (4 байта): Това представлява броя на секундите от Unix епохата (1 януари 1970 г. в 00:00 UTC). Времевият печат позволява на KSUID да бъде приблизително сортиран по време на генериране.
-
Произволен компонент (16 байта): Това е криптографски сигурно произволно число, което осигурява уникалност дори когато множество KSUID са генерирани в същата секунда.
-
Кодиране в Base62: Комбинираните 20 байта (времеви печат + произволен) след това се кодирани с помощта на base62 (A-Z, a-z, 0-9), за да произведат крайния 27-символен низ.
Формула на KSUID
KSUID може да бъде представен математически като:
Където:
- е 32-битовият времеви печат
- е 128-битовият произволен компонент
- обозначава конкатенация
Времевият печат се изчислява като:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Където KSUID_epoch е 1400000000 (2014-05-13T16:53:20Z).
Диаграма на структурата на KSUID
Приложения на KSUID
KSUID са особено полезни в следните сценарии:
-
Разпределени системи: Когато ви трябват уникални идентификатори в множество сървъри или услуги без координация.
-
Данни, които могат да се сортират по време: Когато искате да сортирате данни по време на създаване, без да съхранявате отделно времеви печат.
-
Ключове на база данни: Като основни ключове в бази данни, особено в разпределени бази данни, където автоинкрементиращите се цели не са подходящи.
-
Идентификатори, безопасни за URL: За създаване на кратки, уникални идентификатори, безопасни за URL, за ресурси в уеб приложения.
-
Корелация на логове: За корелация на записи в логовете между различни услуги в архитектура на микросервизи.
Предимства на KSUID
KSUID предлагат няколко предимства пред други системи за идентификатори:
-
Сортиране: За разлика от UUID, KSUID могат да се сортират хронологично, което е полезно за индексиране на бази данни и анализ на логове.
-
Не е необходима координация: За разлика от автоинкрементиращите се идентификатори, KSUID могат да се генерират независимо от различни сървъри, без риск от сблъсъци.
-
Компактно представяне: С дължина от 27 знака, KSUID са по-компактни от UUID, когато се представят като низове.
-
Вграден времеви печат: Вграденият времеви печат позволява времева сортировка и филтриране без необходимост от отделно поле за времеви печат.
-
Безопасни за URL: Кодиране в base62 прави KSUID безопасни за използване в URL без допълнително кодиране.
-
Намалена вероятност за сблъсък: 16-байтовият произволен компонент прави сблъсъците изключително малко вероятни, дори при високи скорости на генериране.
Как да използвате този генератор
- Въведете всякакви допълнителни параметри, ако е необходимо (например, персонализиран времеви печат).
- Щракнете върху бутона "Генерирай KSUID", за да създадете нов KSUID.
- Генерираният KSUID ще бъде показан в полето за изход.
- Можете да генерирате множество KSUID, като повторите стъпки 1-3.
- Използвайте бутона "Копирай" до всеки KSUID, за да го копирате в клипборда.
- По желание, използвайте функцията "Експорт", за да изтеглите списък с генерирани KSUID.
Запомнете, че всеки KSUID е уникален и трябва да се използва само веднъж. Генерирайте нов KSUID всеки път, когато ви е необходим уникален идентификатор.
Примери за код
Ето примери за генериране на KSUID в различни програмни езици:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Генериран KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Генериран 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("Генериран 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 << "Генериран KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Генериран 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 "Генериран 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("Генериран KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Генериран KSUID: \(newId)")
6
Референции
- GitHub репозиторий на KSUID на Segment: https://github.com/segmentio/ksuid
- "Генериране на добри уникални идентификатори" от Питър Боргон: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- Спецификация на KSUID: https://github.com/segmentio/ksuid/blob/master/README.md
Обратна връзка
Кликнете върху обратната връзка, за да започнете да давате обратна връзка за този инструмент
Свързани инструменти
Открийте още инструменти, които може да бъдат полезни за вашия работен процес