🛠️

Whiz Tools

Build • Create • Innovate

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:

  1. 32 bit zaman damgası (4 bayt)
  2. 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:

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

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

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

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

Burada:

  • TT 32 bit zaman damgasıdır
  • RR 128 bit rastgele bileşendir
  • || birleştirmeyi belirtir

Zaman damgası TT ş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ı

Zaman Damgası (4 bayt) Rastgele Bileşen (16 bayt)

KSUID'lerin Kullanım Alanları

KSUID'ler özellikle aşağıdaki senaryolarda faydalıdır:

  1. Dağıtık Sistemler: Birden fazla sunucu veya hizmette koordinasyonsuz benzersiz tanımlayıcılara ihtiyaç duyduğunuzda.

  2. Zaman Sıralı Veri: Verileri oluşturulma zamanına göre sıralamak istediğinizde, ayrı bir zaman damgası saklamaya gerek kalmadan.

  3. Veritabanı Anahtarları: Dağıtık veritabanlarında, özellikle otomatik artan tamsayıların uygun olmadığı durumlarda birincil anahtar olarak.

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

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

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

  2. Koordinasyona Gerek Yok: Otomatik artan kimliklerin aksine, KSUID'ler çakışma riski olmadan farklı sunucular tarafından bağımsız olarak oluşturulabilir.

  3. Kompakt Temsil: 27 karakter uzunluğunda olan KSUID'ler, dize olarak temsil edildiğinde UUID'lerden daha kompakt bir yapıya sahiptir.

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

  5. URL Güvenli: Base62 kodlaması, KSUID'lerin URL'lerde ek bir kodlama gerektirmeden güvenli bir şekilde kullanılmasını sağlar.

  6. Ç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

  1. Gerekirse ek parametreler girin (örneğin, özel zaman damgası).
  2. Yeni bir KSUID oluşturmak için "KSUID Oluştur" butonuna tıklayın.
  3. Oluşturulan KSUID çıktı alanında görüntülenecektir.
  4. 1-3 adımlarını tekrarlayarak birden fazla KSUID oluşturabilirsiniz.
  5. Her KSUID'nin yanındaki "Kopyala" butonunu kullanarak panonuza kopyalayabilirsiniz.
  6. İ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

Referanslar

  1. Segment'in KSUID GitHub Deposu: https://github.com/segmentio/ksuid
  2. Peter Bourgon'un "İyi Benzersiz Tanımlayıcılar Üretmek" makalesi: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. KSUID Spesifikasyonu: https://github.com/segmentio/ksuid/blob/master/README.md