Create KSUIDs for Distributed Systems and Databases
Dağıtık sistemlerde, veritabanlarında ve benzersiz, zaman sıralı anahtarlar gerektiren uygulamalarda kullanılmak üzere K-Sıralı Benzersiz Tanımlayıcılar (KSUID'ler) oluşturun. KSUID'ler, çarpışma direncine sahip, sıralanabilir tanımlayıcılar oluşturmak için zaman damgasını rastgele verilerle birleştirir.
KSUID Üretici
Dokümantasyon
KSUID Üretici
Giriş
KSUID (K-Sıralı Benzersiz Tanımlayıcı), geleneksel UUID (Evrensel Benzersiz Tanımlayıcı) ve diğer tanımlayıcı sistemlerine göre birkaç avantaj sunan bir benzersiz tanımlayıcı formatıdır. Bu araç, KSUID'leri hızlı ve kolay bir şekilde üretmenizi sağlar.
KSUID Nedir?
KSUID, aşağıdaki bileşenlerden oluşan 20 baytlık sıralanabilir bir tanımlayıcıdır:
- 32 bit zaman damgası (4 bayt)
- 16 bayt rastgelelik
Bir dize olarak temsil edildiğinde, KSUID base62 formatında kodlanır ve 27 karakter uzunluğundadır.
KSUID Yapısı
KSUID'nin yapısı aşağıdaki gibi ayrılabilir:
-
Zaman Damgası (4 bayt): Bu, Unix epoch'undan (1 Ocak 1970, 00:00 UTC) itibaren geçen saniye sayısını temsil eder. Zaman damgası, KSUID'lerin yaklaşık olarak oluşturulma zamanına göre sıralanmasını sağlar.
-
Rastgele Bileşen (16 bayt): Bu, aynı saniye içinde birden fazla KSUID oluşturulsa bile benzersizliği sağlamak için kriptografik olarak güvenli bir rastgele sayıdır.
-
Base62 Kodlama: Birleşik 20 bayt (zaman damgası + rastgele) daha sonra base62 (A-Z, a-z, 0-9) kullanılarak kodlanır ve nihai 27 karakterli dizeyi oluşturur.
KSUID Formülü
Bir KSUID matematiksel olarak şu şekilde temsil edilebilir:
Burada:
- 32 bit zaman damgasıdır
- 128 bit rastgele bileşendir
- birleştirmeyi belirtir
Zaman damgası şu şekilde hesaplanır:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Burada KSUID_epoch 1400000000'dir (2014-05-13T16:53:20Z).
KSUID Yapı Diyagramı
KSUID'lerin Kullanım Alanları
KSUID'ler özellikle aşağıdaki senaryolarda faydalıdır:
-
Dağıtık Sistemler: Birden fazla sunucu veya hizmette koordinasyonsuz benzersiz tanımlayıcılara ihtiyaç duyduğunuzda.
-
Zaman Sıralı Veri: Verileri oluşturulma zamanına göre sıralamak istediğinizde, ayrı bir zaman damgası saklamaya gerek kalmadan.
-
Veritabanı Anahtarları: Dağıtık veritabanlarında, özellikle otomatik artan tamsayıların uygun olmadığı durumlarda birincil anahtar olarak.
-
URL Güvenli Tanımlayıcılar: Web uygulamalarında kaynaklar için kısa, benzersiz, URL güvenli tanımlayıcılar oluşturmak için.
-
Günlük Korelasyonu: Mikro hizmet mimarisinde farklı hizmetler arasında günlük kayıtlarını ilişkilendirmek için.
KSUID'lerin Avantajları
KSUID'ler diğer tanımlayıcı sistemlerine göre birkaç avantaj sunar:
-
Sıralanabilirlik: UUID'lerin aksine, KSUID'ler kronolojik olarak sıralanabilir, bu da veritabanı indeksleme ve günlük analizi için faydalıdır.
-
Koordinasyona Gerek Yok: Otomatik artan kimliklerin aksine, KSUID'ler çakışma riski olmadan farklı sunucular tarafından bağımsız olarak oluşturulabilir.
-
Kompakt Temsil: 27 karakter uzunluğunda olan KSUID'ler, dize olarak temsil edildiğinde UUID'lerden daha kompakt bir yapıya sahiptir.
-
Zaman Damgası Gömülü: Gömülü zaman damgası, ayrı bir zaman damgası alanı olmadan zaman tabanlı sıralama ve filtreleme yapılmasına olanak tanır.
-
URL Güvenli: Base62 kodlaması, KSUID'lerin URL'lerde ek bir kodlama gerektirmeden güvenli bir şekilde kullanılmasını sağlar.
-
Çakışma Olasılığının Azalması: 16 baytlık rastgele bileşen, yüksek üretim oranlarında bile çakışmaların son derece olasılıksız olmasını sağlar.
Bu Üreticiyi Nasıl Kullanırsınız
- Gerekirse ek parametreler girin (örneğin, özel zaman damgası).
- Yeni bir KSUID oluşturmak için "KSUID Oluştur" butonuna tıklayın.
- Oluşturulan KSUID çıktı alanında görüntülenecektir.
- 1-3 adımlarını tekrarlayarak birden fazla KSUID oluşturabilirsiniz.
- Her KSUID'nin yanındaki "Kopyala" butonunu kullanarak panonuza kopyalayabilirsiniz.
- İsteğe bağlı olarak, oluşturulan KSUID'lerin bir listesini indirmek için "Dışa Aktar" özelliğini kullanın.
Her KSUID'nin benzersiz olduğunu ve yalnızca bir kez kullanılacağını unutmayın. Benzersiz bir tanımlayıcıya ihtiyaç duyduğunuzda her seferinde yeni bir KSUID oluşturun.
Kod Örnekleri
Aşağıda, çeşitli programlama dillerinde KSUID oluşturma örnekleri bulunmaktadır:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Oluşturulan KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Oluşturulan 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("Oluşturulan 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 << "Oluşturulan KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Oluşturulan 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 "Oluşturulan 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("Oluşturulan KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Oluşturulan KSUID: \(newId)")
6
Referanslar
- Segment'in KSUID GitHub Deposu: https://github.com/segmentio/ksuid
- Peter Bourgon'un "İyi Benzersiz Tanımlayıcılar Üretmek" makalesi: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- KSUID Spesifikasyonu: https://github.com/segmentio/ksuid/blob/master/README.md
Geri Bildirim
Bu araç hakkında geri bildirim vermeye başlamak için geri bildirim toast'una tıklayın
İlgili Araçlar
Çalışma akışınız için faydalı olabilecek daha fazla aracı keşfedin