- Cihazlara veya nesnelere kesinlikle tekrarlanmayan kimlikler vermenin yollarını inceliyor; rastgele (random) ve deterministik yaklaşımları karşılaştırıyor
- Rastgele yaklaşım, yeterince büyük bit sayısı kullanıldığında çakışma olasılığını fiilen 0’a indirebilir; UUID (122 bit) düzeyinden evrenin toplam hesaplama sınırına (798 bit) kadar farklı seviyeler vardır
- Deterministik yaklaşımda merkezi sayaç, yetki devrine dayalı hiyerarşi (Dewey), ikili ağaç (Binary), token gibi çeşitli şemalar öneriliyor ve her yöntemin kimlik uzunluğu büyüme özellikleri simülasyonlarla analiz ediliyor
- Ayrıca tüm deterministik şemaların en kötü durumda doğrusal (linear) büyümeyi kaçınılmaz olarak yaşayacağını gösteren matematiksel bir kanıt sunuluyor
- Sonuç olarak, kozmik ölçekte genişlemede bile pratik ve verimli yöntem rastgele kimlik üretimi; deterministik yöntemler ise verimsiz kalıyor
Benzersiz kimlik ihtiyacı ve problemin tanımı
- Nesne tanımlama, üretim, lojistik, iletişim, güvenlik gibi tüm sistemlerin temelidir ve büyük ölçekli genişlemede çakışmasız kimlik atamak kilit bir problemdir
- İnsanlık galaksi ölçeğinde genişlese bile tekrarsız bir kimlik sistemi gerekli olacaktır
- Problem, “kesinlikle çakışmayacak bir kimlik nasıl oluşturulur?” şeklinde tanımlanır
Rastgele (Random) yaklaşım
- En basit yöntem rastgele bir sayı seçmektir
- Merkezi yönetim veya senkronizasyon olmadan her yerde üretilebilir
- Çakışma olasılığı bit sayısı artırılarak kontrol edilebilir; pratikte 0’a çok yaklaştırılabilir
- UUID (122 bit) için yaklaşık $2^{61}$ adet kimlik üretildiğinde çakışma beklenir
- Evrenin toplam hesaplama sınırı (10¹²⁰ işlem) dikkate alındığında 798 bit gerekir
- Atom ölçeği (10⁸⁰ adet) için 532 bit, 1g nanobot (10⁵⁶ adet) için 372 bit
- Gerçek rastgeleliğin sağlanması önemlidir; CSPRNG veya kuantum rastgele sayı kaynağı kullanımı önerilir
- Yaygın seed’ler veya sabit kimlikler (ör. all-zero) yasaklanmalıdır
Deterministik yaklaşım
- Merkezi sayaç yöntemi, tek bir sunucunun sıralı şekilde kimlik vermesine dayanır
- Erişilebilirlik sorunu nedeniyle uydu-cihazlar arasında yetki devri yapısı (Dewey) önerilir
- Dewey şeması:
A.B.C biçiminde hiyerarşik kimlik; Elias omega coding ile gösterilir
- Ağaç yapısına bağlı olarak logaritmik veya doğrusal büyüme gösterebilir
- Binary şeması, kimlik uzayını ikili ağaçla böler; bazı durumlarda Dewey’den daha verimlidir
- 2-Adic Valuation, matematiksel benzersizlik garantisi sunar; Binary’nin bir türevi gibidir
- Token şeması, zincir yapısında logaritmik büyüme gösterir; ancak genişlik arttığında doğrusal büyümeye döner
Doğrusal büyümenin kaçınılmazlığının kanıtı
- Tüm kimlik atama yollarının benzersiz olması gerektiği varsayımıyla, mümkün yol sayısı hesaplanır
- Düğüm sayısı n olduğunda gereken kimlik sayısı $2^{n-1}$ düzeyine çıkar
- Dolayısıyla kimlik uzunluğu en az O(n) olur; yani en kötü durumda doğrusal büyüme kaçınılmazdır
- Hiçbir algoritma tüm durumlarda logaritmik büyümeyi koruyamaz
Genişleme modeli simülasyonları
- Random Recursive Tree, Preferential Attachment, Fitness Model gibi çeşitli büyüme modelleriyle deneyler yapılıyor
- Küçük ölçekte (2.048 düğüm) Binary öne çıkarken, Dewey ve Token sonuçları duruma göre değişiyor
- Preferential modelde Dewey en verimli yöntem
- Fitness modelde Dewey ve Binary benzer performans gösteriyor
- Bir milyon düğüm ölçeğindeki deneylerde de Dewey ve Token logaritmik büyümeyi koruyor
- Kimlik uzunluğu ≈ 6.55 × ln(n) biçiminde yaklaşık ifade edilebiliyor
Galaktik ve kozmik ölçekli genişleme modeli
- Gezegenler arası yayılım, sabit hızlı bir dalga cephesi (front) olarak modelleniyor
- Her gezegen yaklaşık 10⁹ adet kimlik ürettikten sonra bir sonraki gezegene yayılıyor
- Yaklaşık 2.121 gezegen yarıçapına sahip bir galakside, tam yayılım sonunda kimlik uzunluğu yaklaşık 288.048 bit oluyor
- Galaksiler arası yayılım da hesaba katıldığında (yaklaşık 7.816 adım), yaklaşık 2,2 milyar bit (281MB) gerekiyor
- Deterministik yaklaşım verimsiz kalırken, rastgele yaklaşım (798 bit ve altı) ezici biçimde daha verimli
Güvenlik ve ek değerlendirmeler
- Kimlik sahteciliğini önlemek için imza tabanlı doğrulama sistemi uygulanabilir
- Rastgele kimliklerde açık anahtar kimlik olarak kullanılabilir; deterministik şemalarda ebeveyn, çocuk anahtarını imzalar
- Hata düzeltme kodları ve sürüm yönetimi gereklidir
- Kimliği üzerinde saklayamayan nesneler (ör. gezegenler) için birden çok kimliğin eşlenmesiyle yönetim yapılabilir
- Theseus’un gemisi problemi gibi, bileşenler değiştiğinde kimliğin sürüp sürmeyeceği tartışılır
- İlgili kavramlar: Decentralized Identifiers (DID), Ancestry Labeling Schemes
Sonuç
- Deterministik şemalar teorik olarak ilgi çekici olsa da pratikte zayıf kalır
- Rastgele kimlik üretimi, kozmik ölçekte bile gerçekçi ve verimlidir
- Kimlik çakışma olasılığını “fiilen 0” seviyesine indirmek, en güvenli ve en pratik seçimdir
4 yorum
Orijinal metni mutlaka okuyun. Formüller ve simülasyonlarla görselleştirerek anlattığı için okuması çok keyifliydi.
Zaman tabanlı olarak üretmek, doğrusal bir şey olarak görülmeli herhalde..?
Galiba asıl metne biraz bakmam gerekecek. İlginç bir hikâye.
Çarpışırsa, bu kozmik ölçekte şanssız olmak mı demek...(?)
Hacker News görüşleri
Bu analiz tamamen adil değil. UUID tasarlanırken yerellik (locality), yani ışık hızı hesaba katılıyor ama çarpışma olasılığı hesaplanırken bu yok sayılıyor. Gerçekte bir çarpışmanın anlamlı olabilmesi için iki UUID'nin üretildikten sonra nedensel temas (causal contact) kurması gerekir. Bu yüzden basit doğum günü paradoksu (birthday paradox) uygulamak yanlış bir yaklaşım. Yerellik hesaba katılırsa gerekli UUID boyutunun yazıda söylenen 800 bitten çok daha küçük olması muhtemel. Matematiksel hesabını yapmadım ama 256 bitten fazla olacağını sanmıyorum. HN, bu tür ince eleyip sık dokuyan teknik tartışmaların ciddiyetle yürütüldüğü az sayıdaki yerden biri olduğu için gerçekten hoşuma gidiyor
Adreslenebilir nesne sayısını hesaplarken, her nesnenin adresinin en az bir kez bir yerde saklanması gerektiğini de hesaba katmak gerekir. Bir biti saklamak için Npb parçacığı gerekiyorsa, adres bit sayısı arttıkça adreslenebilir nesne sayısı azalır. Dolayısıyla en fazla adreslenebilir nesne sayısı, Nthg = Np / (Npb * f(Ntng)) biçiminde bir ilişkiyle bulunabilir
Bir zamanlar 256 bit rastgele ID'nin çarpışma kontrolü yapmadan kullanılmak için yeterli olduğunu savunmam gerekmişti. Ekip arkadaşlarım karmaşık çarpışma doğrulama mantığı eklemek istiyordu ama 2^256'nın gözlemlenebilir evrendeki atom sayısına yakın bir ölçek olduğunu anlattım. Çarpışma yaşanmadan önce veri merkezinin milyonlarca kez patlama ihtimalinin daha yüksek olduğunu söyleyerek onları ikna ettim. Sonunda 128 bitin bile yeterli olduğu sonucuna vardık
Her atoma bir ID verildiğini varsayarsak yaklaşık 532 bit gerektiğine dair bir hesap var. Ama pratikte atom gruplarına da (ör. mikroçip, otomobil vb.) ID vermek isteyeceğimiz için bu sayı daha büyük olabilir
Bir deste kartla ID ifade etme fikri var. 52 kartın her birini Unicode karakteriyle göstermek okunabilir oluyor, elle düzenlemeyi zorlaştırıyor ve desen tanımayı kolaylaştırıyor. Gerçek bir kart destesini karıştırıp kamerayla okutursanız rastgele tohum olarak da kullanılabilir. Benzer bir fikir olarak DiceKeys de var
Harika bir görselleştirme ve içgörü. Ben veritabanlarını mümkün olduğunca küçük rastgele tanımlayıcılar etrafında tasarladım. Bu tür evrensel tanımlayıcıların aslında elimizdeki tek gerçek ‘altın plak’ olduğunu düşünüyorum. Bilimsel veri yönetimi ya da kütüphanecilik gibi alanlarda bu kavram yeterince takdir edilmiyor. Büyük ölçekli organizasyon sorunlarının çoğu daha iyi tanımlayıcı tasarımıyla çözülebilirdi.
İlgili yazılar: Identifiers Deep Dive, Trible Structure
Becky Chambers'ın The Galaxy, and the Ground Within kitabının yaklaşık 281. sayfasındayım.
Kitaptaki mesaj örneği:
Bu seriyi gerçekten seviyorum. Çok türlü bir evrenin merkezi olarak uzlaşılmış bir yol adresleme sistemi kullanması fikri ilginç
Kısa süre önce Snowflake ID ile tanıştım. Twitter, Discord, Instagram, Mastodon ve başkaları bunu kullanıyor. ID boyutunu küçültmek için zaman damgası + rastgelelik bileşimi kullanılıyor ama yazıda buna değinilmemesi üzücü.
Snowflake ID wiki, Tom Scott videosu bkz.
Snowflake zaman damgasındaki bitlerin bir kısmı rastgelelikle değiştirilirse saniyede 4 milyar ID üretmek mümkün olabilir
Gözlemlenebilir olgulara dayanarak ID üretmek mümkün mü diye merak ediyorum. Zaman ve mesafeyle ayrışan özellikler sayesinde tekillik garanti edilebilir belki. Örneğin belli bir andaki yıldız ışığı deseni yalnızca tek bir kişi tarafından görülebilir. Bu, lav lambası gibi gürültüyü entropi olarak kullanan yöntemlere benziyor. Eğer tüm evren için bir koordinat sistemi tanımlanabilirse, yerel zaman + x + y + z + salt birleşimiyle benzersiz bir ID üretilebilir gibi görünüyor
Rastgele UUID yaklaşımı ömür açısından çok daha üstün. Aynı anda çalışabilecek cihaz sayısı sınırlı ve ağaç tabanlı UUID'lerin aksine bir cihaz devre dışı kaldığında ID yeniden kullanılabiliyor. Gerçekçi olarak en pratik çözüm, konum tabanlı kök + rastgele alt bitler karışımını kullanan hibrit bir algoritma gibi görünüyor