UUID v4 Üretici: Yapısı, Kullanımı ve Tarayıcı Tabanlı Uygulama
Bu sayfa, UUID v4 tanımlayıcılarını (RFC 4122 sürüm 4) anında üretir. 1 ile 100 arasında bir sayı belirleyerek, büyük harf ve tire ekleme seçenekleriyle, 36 karakterlik standart 8-4-4-4-12 formatında rastgele dizeler elde edersiniz. Tüm işlem tarayıcınızda yerel olarak, kriptografik güçte rastgelelik kullanılarak gerçekleşir; hiçbir veri sunucuya gönderilmez. Üretilen her bir ID’ye tıklayarak tek tek kopyalayabilir veya “Tümünü kopyala” butonuyla hepsini bir kerede panoya alabilirsiniz.
Bu Sayfayı Farklı Kılan Nedir?
UUID v4, 122 bit rastgelelik kullanır ve zaman damgası içermez. Bu, her bir değerin öngörülemez olmasını ve çakışma olasılığının ihmal edilebilir düzeyde kalmasını sağlar. Ancak bu özellik aynı zamanda bir dezavantaj da getirir: UUID v7 veya ULID gibi zamana göre sıralanabilir alternatiflerin aksine, v4 ID’leri rastgele sıralanır. Veritabanında birincil anahtar olarak kullanıldıklarında, zaman bilgisi taşımadıkları için indeksler parçalanabilir (sayfa bölünmeleri). Bu sayfa, tam da bu noktada devreye girer: kullanıcıya büyük harf ve tire seçeneklerini sunarken, formatın içindeki rastgelelik ve yapı sabit kalır. Varsayılan çıktı küçük harf ve tireli olacak şekilde ayarlanmıştır. Herhangi bir seçeneği değiştirdiğinizde tüm ID kümesi yeniden üretilir.
Girdiler, Çıktılar ve Kullanım Akışı
Girdiler
- Format: UUID v4 (sayfada ayrıca UUID v7, ULID ve NanoID seçenekleri de bulunur).
- Adet: 1 ile 100 arasında bir tam sayı.
- Büyük Harf: Kapalı (false) varsayılandır. Açıldığında ID’ler büyük harfle görüntülenir.
- Tire Ekle: Açık (true) varsayılandır. Kapatıldığında 32 haneli hex dizisi tire olmadan gösterilir.
Çıktılar
- Üretilen ID’ler: Liste halinde UUID v4 dizeleri.
- ID Sayısı: Listenin yanında kaç adet ID üretildiği gösterilir.
- Durum Mesajları: Sayfa ilk yüklendiğinde “Hazır.”, üretim yapıldığında “Oluşturuldu.”, tüm ID’ler kopyalandığında “Tümü kopyalandı!” mesajı görünür.
Kullanım Akışı
Sayfa açar açmaz varsayılan ayarlarla (adet=1, küçük harf, tireli) bir UUID v4 görürsünüz. Adedi artırmak, büyük harfi açmak veya tireleri kapatmak için ilgili kontrolleri kullanırsınız. Her değişiklik tüm listeyi yeniden oluşturur. Tek bir ID’ye tıklayarak onu, “Tümünü kopyala” butonuna tıklayarak bütün listeyi panoya alırsınız.
UUID v4’ün Yapısı ve Standartları
UUID v4, 128 bitlik bir değerdir. Bu 128 bitin dağılımı şöyledir:
- 4 bit sürüm numarası (0100 = 4)
- 2 bit varyant (10 = RFC 4122)
- 122 bit tamamen rastgele veri
Bu 128 bit, 16 sekizli (oktet) halinde saklanır ve insan tarafından okunabilir biçimde 32 onaltılık (hex) basamak olarak yazılır. Standart 8-4-4-4-12 deseni şudur:
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
Burada:
xrastgele bir hex basamağını temsil eder (0-9, a-f).4sürüm numarasını gösterir.yvaryantı belirtir ve 8, 9, a veya b değerlerinden birini alır.
Örneğin tireli ve küçük harfli bir çıktı:
a1b2c3d4-e5f6-4789-8abc-def012345678
Tiresiz ve büyük harfli aynı değer:
A1B2C3D4E5F647898ABCDEF012345678
Sayfanın “Büyük Harf” ve “Tire Ekle” seçenekleri yalnızca görüntüleme formatını etkiler; içteki bit yapısı ve rastgelelik aynı kalır. Değişiklik yapıldığında sayfanın tüm kümeyi yeniden oluşturmasının nedeni, kullanıcının yeni formata uygun taze rastgele değerler görmesini sağlamaktır.
Rastgelelik Kaynağı ve Çakışma Olasılığı
Tarayıcıdaki crypto.getRandomValues() yöntemi, işletim sisteminin kriptografik olarak güvenli rastgele sayı üretecini (CSPRNG) kullanır. Bu, tahmin edilmesi neredeyse imkânsız olan ve kuantum sonrası standartlara uygun kabul edilen bir rastgelelik kaynağıdır. UUID v4’ün 122 bit rastgele verisi, üretilen her bir ID’nin benzersiz olmasını garantiye yakın bir düzeye taşır.
Çakışma olasılığından söz edelim: 122 bit rastgele alan, toplam 2¹²² ≈ 5,3 × 10³⁶ farklı olası değer sunar. Pratikte, günde 1 milyar UUID v4 üretilse bile, bir çakışma görmek için milyarlarca yıl geçmesi gerekir. Bu hesaplar doğum günü saldırısı (birthday attack) eşiğine dayanır: 2^n/2 üretimden sonra çakışma olasılığı %50’ye ulaşır. n=122 için bu eşik 2⁶¹ ≈ 2,3 × 10¹⁸’dir. Yani her saniyede bir milyar ID üreten bir sistem ancak 73 milyon yıl sonra %50 çakışma olasılığına erişir.
Veritabanı İndeks Performansına Etkisi
UUID v4’ün en sık gözden kaçırılan yönü, zaman sıralı olmaması nedeniyle veritabanı indeksleri üzerindeki etkisidir. Bir B‑ağacı (B‑tree) indeksine rastgele sırada eklenen değerler, sayfa bölünmelerine ve indeks parçalanmasına yol açar. Bu durum özellikle birincil anahtar olarak kullanıldığında yazma performansını düşürür ve depolama alanını verimsiz kullanır.
Zaman sıralı alternatifler olan UUID v7 (Unix zaman damgası + rastgele bitler) veya ULID (26 karakterlik Crockford Base32, zaman + rastgelelik) bu sorunu çözer: yeni eklenen kayıtlar indeksin son sayfasına gider, sayfa bölünmesi azalır. Ancak bu alternatifler, v4’ün sağladığı tam öngörülemezlikten ödün verir. Zaman damgası taşıdıkları için, ID’nin üretildiği an kabaca bilinebilir. Güvenlik tokenları, oturum ID’leri veya anonimleştirilmiş anahtarlar gibi durumlarda bu kabul edilemez olabilir.
Uygulamanızın gereksinimlerine göre seçim yapmalısınız: sıralama performansı kritikse v7 veya ULID, öngörülemezlik ve güvenlik ön plandaysa v4 tercih edilir. Bu sayfa, her iki ihtiyacı da karşılayacak şekilde format seçenekleri sunar.
Pratik Kullanım İpuçları
- Büyük harf kullanımı: Bazı sistemler (örneğin eski veritabanları veya büyük/küçük harf duyarlı olmayan arama motorları) büyük harfli ID’leri daha kolay işler. Ancak yaygın standart küçük harftir.
- Tire kullanımı: 32 hex basamaklı tiresiz UUID, 36 karakterli tireli versiyona göre daha kompakttır. Depolama alanı kritikse tireleri kaldırabilir, ancak okunabilirlik azalır.
- Toplu üretim: 100 adede kadar ID’yi aynı anda üretip kopyalayabilirsiniz. Bu, test verisi oluşturma veya toplu kayıt işlemleri için idealdir.
- Yerel işleme: Hiçbir veri sunucuya gitmediğinden, hassas verilerle çalışan uygulamalarda bile gönül rahatlığıyla kullanılabilir. İnternet bağlantısı olmasa da sayfa çalışır (sayfanın bir kere yüklenmiş olması yeterlidir).
Sık Sorulan Sorular (SSS)
Soru 1: UUID v4 tamamen rastgele midir?
Evet. 122 bit rastgele veri, kriptografik olarak güvenli bir kaynaktan gelir. Sürüm (4 bit) ve varyant (2 bit) sabittir, geri kalan tüm bitler rastgeledir. Zaman, MAC adresi veya başka bir tanımlayıcı içermez.
Soru 2: İki UUID v4’ün çakışma olasılığı nedir?
122 bit rastgele alan, yaklaşık 5,3 × 10³⁶ olası değer sunar. Her saniyede bir milyar ID üretilse bile, bir çakışma görmek için milyarlarca yıl gerekir. Pratikte çakışma olasılığı yok denecek kadar azdır.
Soru 3: UUID v4’ü veritabanında birincil anahtar olarak kullanabilir miyim?
Kullanabilirsiniz, ancak zaman sıralı olmadığı için indeks parçalanmasına ve yazma performansında düşüşe yol açar. Sıralama kritik değilse veya öngörülemezlik ön plandaysa (örneğin güvenlik tokenları) uygun bir seçimdir. Sıralama performansı önemliyse UUID v7 veya ULID gibi zaman sıralı alternatifleri düşünün.
Soru 4: Büyük harf ve tire seçenekleri ID’nin iç yapısını değiştirir mi?
Hayır. Yalnızca görüntüleme formatını değiştirir. ID’nin bit yapısı, rastgelelik kaynağı ve RFC 4122’ye uygunluğu aynı kalır. Seçenekleri değiştirdiğinizde sayfa tüm kümeyi yeniden oluşturur, çünkü her bir ID yeni formatla uyumlu taze rastgele değerlerden oluşur.
Soru 5: Tarayıcıda üretilen UUID’ler ne kadar güvenli?
crypto.getRandomValues() yöntemi, işletim sisteminin CSPRNG’sini kullanır. Bu, donanım tabanlı rastgelelik kaynaklarına dayanır ve kriptografik uygulamalar için yeterli kabul edilir. UUID v4’ün öngörülemezliği, bu rastgelelik kaynağının gücüne dayanır.
Soru 6: 100’den fazla ID üretmek mümkün mü?
Hayır, sayfa adet aralığını 1-100 ile sınırlandırmıştır. Daha fazla ID gerekiyorsa, işlemi birden çok kez tekrarlayabilir veya başka bir araç kullanabilirsiniz.