UUID Üretici

Kriptografik olarak güvenli UUID üretir — rastgele v4 veya zaman-sıralı v7. Tarayıcının Web Crypto API'si kullanılır; hiçbir değer sunucuya gönderilmez.

Son güncelleme:

Seçenekler
Sürüm
1 ile 100 arası.
Biçim

Üretilen UUID'ler

"Üret"e basın.

UUID'ye gerçekten ne zaman ihtiyaç olur

Kimlik birden fazla yerde üretiliyorsa

Mobil uygulama çevrimdışıyken kayıt oluşturuyor, üç ayrı mikroservis kendi tablosuna yazıyorsa merkezi bir sayaç koordinasyon yükü demektir. UUID bu koordinasyonu tamamen ortadan kaldırır: herkes üretir, kimse çakışmaz.

Sıralı anahtar bilgi sızdırıyorsa

Fatura numarası 8412 olan bir müşteri, bir hafta sonra 9271 aldığında haftalık iş hacminizi öğrenmiş olur. Rastgele UUID bu sayacı görünmez kılar; üstelik geçerli bir başka kimlik tahmin etmek de imkânsızlaşır.

Kayıtlar sonradan birleştirilecekse

İki ortamın verisi (staging ile production, iki müşterinin tenant'ı) günün birinde tek tabloda buluşacaksa tamsayı anahtarlar çakışır ve yeniden numaralandırma gerekir. UUID'yle birleştirme çakışmasızdır. Aynı gerekçe çok bölgeli veritabanı kurulumları için de geçerli: her bölge kendi kimliğini üretir, replikasyon çakışma çözmek zorunda kalmaz.

Çalışılmış örnek: metin sütunu ile ikili sütunun bedeli

UUID'nin kendisi kadar nasıl saklandığı da önemli. SQL Server üzerinde iki seçeneği karşılaştıralım: nvarchar(36) ve uniqueidentifier.

  1. Tire içeren UUID metni 36 karakterdir; nvarchar bunu UTF-16 ile karakter başına 2 bayttan 72 bayt yapar.
  2. uniqueidentifier (veya MySQL'de BINARY(16)) aynı değeri 16 bayt olarak saklar.
  3. Satır başına fark: 72 ÷ 16 = 4,5 kat.
  4. 10 milyon satırlık tabloda yalnız anahtar sütunu: metinle 720 MB, ikiliyle 160 MB.
  5. Her nonclustered indeks anahtar değerini yeniden taşıdığı için bu fark indeks sayısıyla çarpılır.

Tip seçimi ilk migration'da bir satırlık karardır; canlıya çıktıktan sonra düzeltmek ise indeksleriyle birlikte tablonun yeniden yazılması demektir. Metin sütunu ayrıca her JOIN ve karşılaştırmada collation kurallarını devreye sokar; ikili karşılaştırma bunların hiçbirine uğramaz.

Sık yapılan dört hata

Rastgele v4'ü yoğun ekleme tablosuna clustered anahtar yapmak

v4 değerleri indeksin her yerine dağılır; her ekleme farklı sayfaya düşer, sayfa bölünmeleri ve parçalanma büyür. Ekleme ağırlıklı tablolarda zaman-sıralı v7 (veya .NET 9'daki Guid.CreateVersion7) bu sorunu kökten çözer.

Math.random ile UUID taklidi üretmek

Eski örnek kodlarda dolaşan Math.random tabanlı üreteçler tahmin edilebilir değer üretir. Kimlik olarak kullanıldığında sorun çıkmayabilir; ama böyle bir değer parola sıfırlama bağlantısına girerse tahmin edilebilirlik saldırı yüzeyine dönüşür.

v7'nin zaman damgası taşıdığını unutmak

v7'nin ilk 48 biti üretim anını milisaniye hassasiyetinde açık eder. İç anahtarlar için bu bir özelliktir; dışarıya verilen ve oluşturulma zamanı gizli kalması gereken kimliklerde v4 kullanılmalıdır.

Büyük/küçük harfi serbest bırakmak

Aynı UUID bir tabloya büyük, ötekine küçük harfle yazılırsa metin bazlı eşleştirme sessizce boş döner. Kural tek olmalı: sınırda normalize edin (RFC 9562 çıktı için küçük harfi önerir) ya da hiç metinle saklamayın.

Bu araçla birlikte kullanılanlar

  • Hash Üretici (SHA) Metnin SHA-1, SHA-256, SHA-384 ve SHA-512 özetlerini anında hesaplayın. Web Crypto API ile, tarayıcıda.
  • Base64 Kodlayıcı-Çözücü Metni Base64'e kodlayın veya geri çözün. Standart ve URL-güvenli (base64url) varyant; UTF-8 uyumlu, tarayıcıda.
  • CIDR / Subnet Hesaplayıcısı CIDR notasyonundan ağ adresi, broadcast, subnet maskesi, kullanılabilir host aralığı ve adres tipini hesaplayın.
  • Cron İfade Çözümleyici Bir cron ifadesini alan alan çözümleyin ve sonraki çalışma zamanlarını görün. Kubernetes CronJob ve zamanlanmış görevler için.
  • Epoch / Unix Timestamp Dönüştürücü Unix epoch zaman damgalarını okunabilir tarihlere çevirin ve geri dönüştürün. Saniye ve milisaniye otomatik algılanır.

Sık Sorulan Sorular

UUID v4 nedir?

UUID v4, 122 biti rastgele üretilen 128 bitlik bir tanımlayıcıdır. Merkezî bir otoriteye gerek kalmadan benzersizdir; veritabanı birincil anahtarları, oturum kimlikleri ve dosya adları için idealdir. Çakışma olasılığı pratikte ihmal edilebilir.

v4 ile v7 arasındaki fark nedir?

v4 tamamen rastgeledir; üretilen değerler sıralı değildir. v7 ise ilk 48 bitinde Unix milisaniye zaman damgası taşır — yani zaman-sıralıdır. Bu, v7'yi veritabanı birincil anahtarı olarak çok daha verimli kılar: indeks parçalanması azalır, ekleme sıralı kalır.

Bu UUID'ler güvenli şekilde mi üretiliyor?

Evet. Rastgelelik tarayıcının crypto.getRandomValues / crypto.randomUUID API'sinden gelir; bu kriptografik olarak güvenli bir kaynaktır. Math.random gibi tahmin edilebilir bir üreteç kullanılmaz. Hiçbir değer sunucuya gönderilmez.

İki UUID'nin çakışma olasılığı nedir?

v4'te 122 bit rastgelelik vardır. Bir çakışma görmek için milyarlarca UUID üretmek gerekir — 103 trilyon UUID'de çakışma olasılığı milyarda bir mertebesindedir. Pratik sistemlerde çakışma göz ardı edilebilir.

.NET'te UUID nasıl üretilir?

.NET'te Guid.NewGuid() v4 benzeri rastgele bir GUID üretir. .NET 9+ ile Guid.CreateVersion7() zaman-sıralı v7 üretir — yüksek hacimli ekleme yapılan tablolarda birincil anahtar olarak tercih edilir.