UUID (Universally Unique Identifier), merkezi bir sayaç ya da koordinasyon olmadan birbirinden bağımsız sistemlerde benzersiz kimlik üretmeye yarayan 128 bitlik bir değerdir. 550e8400-e29b-41d4-a716-446655440000 biçimindeki 36 karakterlik gösterimi, veritabanlarından dağıtık sistemlere kadar pek çok yerde standart hâline gelmiştir. Microsoft dünyasında aynı yapı GUID adıyla da bilinir. Kimliği üretmek için merkezi bir veritabanına sormak gerekmediğinden, farklı sunucular ve istemciler aynı anda güvenle kayıt oluşturabilir.
Bu araç RFC 4122 uyumlu sürüm 4 UUID üretir. Tek seferde 1 ile 1.000 arasında kimlik oluşturabilir, her biri ayrı satırda olacak şekilde kopyalayabilir veya metin dosyası olarak indirebilirsin. Rastgele bitler tarayıcının Web Crypto arayüzünden alınır ve üretim tamamen cihazında gerçekleşir. Zaman tabanlı UUID v7 ve v1 ya da isim tabanlı v3 ve v5 sürümleri bu araçta bulunmaz.
UUID v4 Oluşturucu nasıl kullanılır?
- UUID adedi alanına ihtiyacın olan sayıyı gir; 1 ile 1.000 arasında bir değer seçebilirsin.
- UUID oluştur düğmesine bas; her satırda bir UUID v4 listelenir.
- Tüm listeyi panoya almak için Kopyala düğmesini kullan.
- Listeyi dosya olarak saklamak istersen İndir ile .txt dosyasını kaydet.
- Yeni bir set gerektiğinde UUID oluştur düğmesine yeniden bas; her çalıştırmada farklı kimlikler üretilir.
Örnek biçim: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.
UUID nedir ve v4 nasıl oluşturulur?
Bir UUID, 32 onaltılık karakterin 8-4-4-4-12 düzeninde tirelerle ayrılmasıyla yazılır. Sürüm 4'te 128 bitin 6 biti biçim bilgisine ayrılır: üçüncü grubun ilk karakteri her zaman 4 olur ve sürümü gösterir, dördüncü grubun ilk karakteri ise 8, 9, a veya b değerlerinden biridir ve RFC 4122 varyantını belirtir.
Geri kalan 122 bit tamamen rastgeledir. Bu araç 16 baytı crypto.getRandomValues ile üretir, ardından yalnızca sürüm ve varyant bitlerini ayarlar. Böylece içinde zaman damgası, MAC adresi veya cihazını tanımlayan herhangi bir bilgi bulunmaz.
İki UUID çakışabilir mi?
Teorik olarak evet, pratikte hayır denecek kadar düşük bir olasılıkla. 122 rastgele bit yaklaşık 5,3 × 10^36 farklı değer demektir. Doğum günü paradoksuna göre bir çakışmanın yüzde 50 olasılıkla görülmesi için yaklaşık 2,7 × 10^18 UUID üretmek gerekir; bu, saniyede bir milyar UUID üretip bunu seksen yılı aşkın süre sürdürmeye denk gelir.
Bu güvence, rastgele sayı kaynağının kaliteli olmasına bağlıdır. Zayıf bir kaynak, örneğin tohumu tahmin edilebilen bir üreteç, çakışma riskini gerçek hâle getirebilir. Kriptografik rastgelelik kullanılmasının nedeni budur.
UUID v4 ile v7 arasındaki fark
UUID v7, ilk 48 bitine milisaniye cinsinden zaman damgası yerleştirir; bu sayede üretim sırasına göre sıralanabilir ve B-ağacı indekslerinde daha düzenli yerleşir. v4 ise tamamen rastgeledir ve hiçbir zaman bilgisi içermez. Bu araç yalnızca v4 üretir. Çok yüksek hacimli tablolarda birincil anahtar olarak sıralanabilir kimlik istiyorsan veritabanının ya da programlama dilinin v7 desteğini kullanmalısın.
Kullanım alanları ve ipuçları
UUID'ler, kimliğin kayıt veritabanına yazılmadan önce bilinmesi gerektiğinde ya da birden fazla sistem aynı anda kayıt ürettiğinde özellikle işe yarar.
- Veritabanı birincil anahtarı: PostgreSQL'de uuid, MySQL ve MariaDB'de BINARY(16) sütun türüyle verimli saklanır.
- API istekleri: tekrar eden istekleri ayırt etmek için idempotency anahtarı olarak kullanılır.
- Dosya ve nesne adları: yüklenen dosyaların ad çakışmasını önler.
- Test verisi ve fixture dosyaları: gerçekçi kimliklerle örnek kayıt hazırlamayı kolaylaştırır.
- Güvenlik belirteci olarak kullanma: oturum veya parola sıfırlama için amaca özel üretilmiş belirteçler tercih edilmelidir.
Sıkça sorulan sorular
UUID nedir, GUID ile aynı şey mi?
UUID, 128 bitlik evrensel benzersiz tanımlayıcıdır ve RFC 4122 ile tanımlanmıştır. GUID, Microsoft'un aynı yapıya verdiği addır; biçim ve kullanım açısından pratikte farkları yoktur. Bazı Microsoft araçları GUID'leri büyük harfle veya süslü parantez içinde gösterebilir, ancak değer aynıdır. Bu araçta üretilen kimlikleri GUID bekleyen .NET veya SQL Server projelerinde de kullanabilirsin.
Bu araç UUID v7 üretiyor mu?
Hayır. Araç yalnızca RFC 4122 uyumlu, tamamen rastgele UUID v4 üretir. Zaman damgası içeren ve sıralanabilen v7 gerekiyorsa PostgreSQL 18'in uuidv7 fonksiyonu ya da kullandığın dilin güncel UUID kütüphanesi gibi kaynakları tercih etmelisin. v4 ise çoğu genel kullanım için yeterlidir. İhtiyacın netleşmeden sürüm değiştirmen gerekmez.
Üretilen UUID'ler gerçekten benzersiz mi?
Kesin bir garanti yoktur ama çakışma olasılığı ihmal edilebilir düzeydedir. 122 rastgele bit sayesinde yüzde 50 çakışma ihtimali için yaklaşık 2,7 × 10^18 UUID gerekir. Kriptografik rastgele sayı üreteci kullanıldığı için bu olasılık hesabı pratikte geçerlidir. Yine de veritabanında UUID sütununa benzersizlik kısıtı eklemek iyi bir güvenlik ağıdır.
Tek seferde kaç UUID oluşturabilirim?
Tek seferde 1 ile 1.000 arasında UUID üretebilirsin. Daha fazlasına ihtiyacın varsa işlemi birkaç kez tekrarlayıp listeleri birleştirebilirsin; her çalıştırma bağımsız rastgele değerler kullandığından tekrar beklenmez. Çok büyük hacimler için kendi uygulamanda üretim yapmak daha pratiktir. Liste .txt olarak indirildiğinde her satırda bir UUID bulunur.
UUID büyük harfle mi küçük harfle mi yazılmalı?
RFC 4122, UUID'lerin çıktıda küçük harfle yazılmasını, girdide ise büyük-küçük harf ayrımı yapılmamasını önerir. Bu araç küçük harf üretir. Büyük harf bekleyen bir sistemle çalışıyorsan listeyi büyük-küçük harf dönüştürücüyle kolayca çevirebilirsin. Karşılaştırma yaparken ise harf durumunu normalize etmeyi unutma; aksi hâlde aynı kimlik farklıymış gibi görünebilir.
UUID v4 şifre veya güvenlik anahtarı olarak kullanılabilir mi?
Önerilmez. UUID'ler kimlik olarak tasarlanmıştır, gizlilik için değil; günlüklerde, adreslerde ve hata mesajlarında açıkça görünmeleri olağandır. Şifre gerekiyorsa şifre oluşturucuyu, oturum veya erişim belirteci gerekiyorsa uygulamanın güvenlik kütüphanesini kullanmak daha doğrudur. Bir UUID'yi bilmek hiçbir zaman tek başına yetki anlamına gelmemelidir.