🛠️

Whiz Tools

Build • Create • Innovate

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:

  1. Timestamp 32-bit (4 byte)
  2. 16 byte acak

Ketika direpresentasikan sebagai string, KSUID dikodekan dalam base62 dan memiliki panjang 27 karakter.

Struktur KSUID

Struktur KSUID dapat dibagi sebagai berikut:

  1. 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.

  2. Komponen Acak (16 byte): Ini adalah angka acak yang aman secara kriptografis yang memastikan keunikan bahkan ketika beberapa KSUID dihasilkan dalam detik yang sama.

  3. 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:

KSUID=Base62(TR)KSUID = Base62(T || R)

Dimana:

  • TT adalah timestamp 32-bit
  • RR adalah komponen acak 128-bit
  • || menunjukkan penggabungan

Timestamp TT dihitung sebagai:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

Dimana KSUID_epoch adalah 1400000000 (2014-05-13T16:53:20Z).

Diagram Struktur KSUID

Timestamp (4 byte) Komponen Acak (16 byte)

Kasus Penggunaan KSUID

KSUID sangat berguna dalam skenario berikut:

  1. Sistem Terdistribusi: Ketika Anda memerlukan pengidentifikasi unik di seluruh beberapa server atau layanan tanpa koordinasi.

  2. Data yang Dapat Diurutkan Berdasarkan Waktu: Ketika Anda ingin mengurutkan data berdasarkan waktu pembuatan tanpa menyimpan field timestamp terpisah.

  3. Kunci Database: Sebagai kunci utama dalam database, terutama dalam database terdistribusi di mana integer yang meningkat otomatis tidak cocok.

  4. Pengidentifikasi Aman untuk URL: Untuk membuat pengidentifikasi unik yang pendek dan aman untuk URL untuk sumber daya dalam aplikasi web.

  5. Korelasi Log: Untuk menghubungkan entri log di berbagai layanan dalam arsitektur mikroservis.

Keuntungan KSUID

KSUID menawarkan beberapa keuntungan dibandingkan sistem pengidentifikasi lainnya:

  1. Dapat Diurutkan: Berbeda dengan UUID, KSUID dapat diurutkan secara kronologis, yang berguna untuk pengindeksan database dan analisis log.

  2. Tidak Memerlukan Koordinasi: Berbeda dengan ID yang meningkat otomatis, KSUID dapat dihasilkan secara independen oleh server yang berbeda tanpa risiko tabrakan.

  3. Representasi Kompak: Dengan 27 karakter, KSUID lebih kompak dibandingkan UUID ketika direpresentasikan sebagai string.

  4. Timestamp Tersimpan: Timestamp yang disematkan memungkinkan pengurutan dan penyaringan berdasarkan waktu tanpa memerlukan field timestamp terpisah.

  5. Aman untuk URL: Pengkodean base62 membuat KSUID aman untuk digunakan dalam URL tanpa pengkodean tambahan.

  6. Mengurangi Probabilitas Tabrakan: Komponen acak 16 byte membuat tabrakan sangat tidak mungkin, bahkan pada tingkat pembuatan yang tinggi.

Cara Menggunakan Generator Ini

  1. Masukkan parameter tambahan jika diperlukan (misalnya, timestamp kustom).
  2. Klik tombol "Generate KSUID" untuk membuat KSUID baru.
  3. KSUID yang dihasilkan akan ditampilkan di field output.
  4. Anda dapat menghasilkan beberapa KSUID dengan mengulangi langkah 1-3.
  5. Gunakan tombol "Copy" di samping setiap KSUID untuk menyalinnya ke clipboard Anda.
  6. 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

Referensi

  1. Repositori KSUID GitHub Segment: https://github.com/segmentio/ksuid
  2. "Menghasilkan pengidentifikasi unik yang baik" oleh Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Spesifikasi KSUID: https://github.com/segmentio/ksuid/blob/master/README.md