K-Sortable Unique Identifier Generator for Distributed Systems
Hasilkan Pengenal Unik yang Dapat Diurutkan K (KSUID) untuk digunakan dalam sistem terdistribusi, basis data, dan aplikasi yang memerlukan kunci unik yang dapat diurutkan berdasarkan waktu. KSUID menggabungkan cap waktu dengan data acak untuk membuat pengenal yang tahan tabrakan dan dapat diurutkan.
Generator KSUID
Dokumentasi
KSUID Generator
Pendahuluan
KSUID (K-Sortable Unique IDentifier) adalah format pengidentifikasi unik yang menawarkan beberapa keuntungan dibandingkan UUID (Universally Unique Identifier) dan sistem pengidentifikasi lainnya. Alat ini memungkinkan Anda untuk menghasilkan KSUID dengan cepat dan mudah.
Apa itu KSUID?
KSUID adalah pengidentifikasi yang dapat diurutkan sepanjang 20-byte yang terdiri dari:
- Timestamp 32-bit (4 byte)
- 16 byte acak
Ketika direpresentasikan sebagai string, KSUID dikodekan dalam base62 dan memiliki panjang 27 karakter.
Struktur KSUID
Struktur KSUID dapat dibagi sebagai berikut:
-
Timestamp (4 byte): Ini mewakili jumlah detik sejak epoch Unix (1 Januari 1970, pukul 00:00 UTC). Timestamp memungkinkan KSUID untuk diurutkan berdasarkan waktu pembuatan.
-
Komponen Acak (16 byte): Ini adalah angka acak yang aman secara kriptografis yang memastikan keunikan bahkan ketika beberapa KSUID dihasilkan dalam detik yang sama.
-
Pengkodean Base62: Gabungan 20 byte (timestamp + acak) kemudian dikodekan menggunakan base62 (A-Z, a-z, 0-9) untuk menghasilkan string akhir sepanjang 27 karakter.
Rumus KSUID
KSUID dapat direpresentasikan secara matematis sebagai:
Dimana:
- adalah timestamp 32-bit
- adalah komponen acak 128-bit
- menunjukkan penggabungan
Timestamp dihitung sebagai:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Dimana KSUID_epoch adalah 1400000000 (2014-05-13T16:53:20Z).
Diagram Struktur KSUID
Kasus Penggunaan KSUID
KSUID sangat berguna dalam skenario berikut:
-
Sistem Terdistribusi: Ketika Anda memerlukan pengidentifikasi unik di seluruh beberapa server atau layanan tanpa koordinasi.
-
Data yang Dapat Diurutkan Berdasarkan Waktu: Ketika Anda ingin mengurutkan data berdasarkan waktu pembuatan tanpa menyimpan field timestamp terpisah.
-
Kunci Database: Sebagai kunci utama dalam database, terutama dalam database terdistribusi di mana integer yang meningkat otomatis tidak cocok.
-
Pengidentifikasi Aman untuk URL: Untuk membuat pengidentifikasi unik yang pendek dan aman untuk URL untuk sumber daya dalam aplikasi web.
-
Korelasi Log: Untuk menghubungkan entri log di berbagai layanan dalam arsitektur mikroservis.
Keuntungan KSUID
KSUID menawarkan beberapa keuntungan dibandingkan sistem pengidentifikasi lainnya:
-
Dapat Diurutkan: Berbeda dengan UUID, KSUID dapat diurutkan secara kronologis, yang berguna untuk pengindeksan database dan analisis log.
-
Tidak Memerlukan Koordinasi: Berbeda dengan ID yang meningkat otomatis, KSUID dapat dihasilkan secara independen oleh server yang berbeda tanpa risiko tabrakan.
-
Representasi Kompak: Dengan 27 karakter, KSUID lebih kompak dibandingkan UUID ketika direpresentasikan sebagai string.
-
Timestamp Tersimpan: Timestamp yang disematkan memungkinkan pengurutan dan penyaringan berdasarkan waktu tanpa memerlukan field timestamp terpisah.
-
Aman untuk URL: Pengkodean base62 membuat KSUID aman untuk digunakan dalam URL tanpa pengkodean tambahan.
-
Mengurangi Probabilitas Tabrakan: Komponen acak 16 byte membuat tabrakan sangat tidak mungkin, bahkan pada tingkat pembuatan yang tinggi.
Cara Menggunakan Generator Ini
- Masukkan parameter tambahan jika diperlukan (misalnya, timestamp kustom).
- Klik tombol "Generate KSUID" untuk membuat KSUID baru.
- KSUID yang dihasilkan akan ditampilkan di field output.
- Anda dapat menghasilkan beberapa KSUID dengan mengulangi langkah 1-3.
- Gunakan tombol "Copy" di samping setiap KSUID untuk menyalinnya ke clipboard Anda.
- Opsional, gunakan fitur "Export" untuk mengunduh daftar KSUID yang dihasilkan.
Ingat bahwa setiap KSUID adalah unik dan harus digunakan hanya sekali. Hasilkan KSUID baru setiap kali Anda memerlukan pengidentifikasi unik.
Contoh Kode
Berikut adalah contoh menghasilkan KSUID dalam berbagai bahasa pemrograman:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Generated KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Generated 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("Generated 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 << "Generated KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Generated 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 "Generated 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("Generated KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Generated KSUID: \(newId)")
6
Referensi
- Repositori KSUID GitHub Segment: https://github.com/segmentio/ksuid
- "Menghasilkan pengidentifikasi unik yang baik" oleh Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- Spesifikasi KSUID: https://github.com/segmentio/ksuid/blob/master/README.md
Umpan Balik
Klik toast umpan balik untuk mulai memberikan umpan balik tentang alat ini
Alat Terkait
Temukan lebih banyak alat yang mungkin berguna untuk alur kerja Anda