UUID Nedir?
UUID (Universally Unique Identifier, evrensel benzersiz tanımlayıcı), veritabanı satırları, dosyalar, API istekleri ve cihazlar gibi şeyleri, bir sonraki boş kimliği merkezi bir sunucuya sormadan etiketlemek için kullanılan 128 bitlik bir sayıdır. Beş gruba ayrılmış 32 onaltılık (hex) basamak olarak 8-4-4-4-12 düzeninde yazılır; örneğin f47ac10b-58cc-4372-a567-0e02b2c3d479.
UUID'ler, eski RFC 4122'nin yerini alan ve 6, 7 ve 8 sürümlerini ekleyen RFC 9562 (2024) ile tanımlanır. Üçüncü grubun ilk hex basamağı sürümü gösterir (yukarıdaki 4372 içindeki 4), dördüncü grubun ilk basamağı ise varyantı gösterir (standart UUID'lerde 8, 9, a veya b).

UUID Sürümleri
Her sürüm aynı 128 biti farklı şekilde doldurur. Gerçekte karşılaşacağınız sürümler şunlardır:
122 rastgele bit. İçinde bir anlam yok, sızdırılacak bir şey yok. Çoğu dilde varsayılan sürümdür (crypto.randomUUID(), uuid.uuid4(), Guid.NewGuid()).
Milisaniye cinsinden 48 bitlik bir Unix zaman damgası ve ardından rastgele bitler; böylece yeni kimlikler eskilerinin ardından sıralanır. RFC 9562, v1 ve v6 yerine bunu önerir.
60 bitlik bir zaman damgası, bir saat dizisi (clock sequence) ve başlangıçta bilgisayarın MAC adresi olan 48 bitlik bir düğüm kimliği. Oluşturucumuz bunun yerine rastgele bir düğüm kullanır.
Bir ad alanı (namespace) UUID'si ile bir ad, SHA-1 (v5) veya MD5 (v3) ile özetlenir (hash). Aynı girdi her zaman aynı UUID'yi verir. v5'i tercih edin.
Kimliklerin zamana göre sıralanması için alanları yeniden düzenlenmiş sürüm 1. Çoğunlukla zaten v1 kullanan sistemler için bir geçiş köprüsüdür.
Tamamı sıfır (00000000-0000-0000-0000-000000000000) veya tamamı f. “Değer yok” ya da “aralığın sonu” için yer tutucu olarak kullanılır.
Advertisement
UUID Nasıl Oluşturulur?
Rastgele bir kimlik için v4, kimlikler bir veritabanı indeksine girecekse veya oluşturulma zamanına göre sıralanmalıysa v7, aynı adın her zaman aynı UUID'ye karşılık gelmesi gerekiyorsa v5.
Tek seferde 1, 10, 100 veya 1.000 taneye kadar oluşturun. Her biri tarayıcının kriptografik olarak güvenli rastgele sayı üretecinden gelir.
Standart küçük harf, Windows tarzı GUID'ler için {süslü parantez} ve büyük harf, tiresiz 32 karakter veya bir urn:uuid: URN'si.
Tek bir UUID'yi ya da listenin tamamını kopyalayın veya .txt dosyası olarak indirin. Sayfa adresi ayarlarınızı saklar; böylece onları yer imlerine ekleyebilirsiniz.
UUID ve GUID: Bir Fark Var mı?
GUID (Globally Unique Identifier, küresel benzersiz tanımlayıcı), Microsoft'un aynı şeye verdiği addır. .NET'te Guid.NewGuid() veya PowerShell'de New-Guid ile oluşturulan bir GUID, standart bir sürüm 4 UUID'dir.
Görünür fark genellikle nasıl yazıldıklarıdır: Windows araçları GUID'leri çoğunlukla büyük harfle ve süslü parantez içinde gösterir; örneğin {F47AC10B-58CC-4372-A567-0E02B2C3D479}. Tam olarak bunu elde etmek için biçimi Süslü parantezli GUID olarak ayarlayın ve Büyük harf seçeneğini işaretleyin. Arka planda Windows ve .NET ilk üç grubu little-endian bayt sırasıyla saklar; bu nedenle metin aynı olsa bile ham 16 bayt, UUID bayt sırasından farklıdır. Bazı çok eski COM GUID'leri Microsoft'un kendi varyant bitlerini kullanır; yukarıdaki çözücü bunları etiketler.
Advertisement
UUID v4 mü v7 mi: Hangisini Kullanmalısınız?
İkisi de benzersiz kimlik olarak güvenle kullanılabilir. Fark, milyonlarcasını bir veritabanı indeksinde sakladığınızda ortaya çıkar.
Birincil anahtarlar için v7 kullanın. Her yeni v7 UUID'si bir öncekinden büyük olduğu için eklemeler B-tree indeksinde rastgele yerlere değil sona düşer; bu da PostgreSQL ve MySQL'de indeksleri kompakt, eklemeleri hızlı tutar. SQL Server istisnadır:
uniqueidentifierdeğerlerini önce son altı baytlarına göre sıralar, bu yüzden v7 orada bu avantajı sağlamaz.Kimlik hiçbir şey açığa çıkarmamalıysa v4 kullanın. Bir v7 UUID'si oluşturulma zamanını milisaniyesine kadar içerir; onu gören herkes yukarıdaki çözücüyle bu zamanı okuyabilir.
Adlardan kararlı kimlikler için v5 kullanın; örneğin her alan adı veya URL için bir UUID. Böylece her sistem bir tablo paylaşmadan aynı değeri hesaplar.
Yeni işlerde v1'den kaçının. Klasik v1, makinenin MAC adresini ve oluşturulma zamanını içerir; RFC 9562 bunun yerine v7'yi önerir.
İki UUID Hiç Aynı Olabilir mi?
Teoride evet, pratikte hayır. Bir sürüm 4 UUID'sinde 122 rastgele bit vardır; bu da yaklaşık 5,3 × 10^36 olası değer demektir. Tek bir tekrarın bile %50 olasılığa ulaşması için yaklaşık 2,7 kentilyon (2,7 × 10^18) UUID oluşturmanız gerekir. Bu, yaklaşık 86 yıl boyunca her saniye bir milyar UUID demektir.
Gerçek risk matematik değil, bozuk bir rastgele sayı üretecidir. Bu araç, tarayıcının kriptografik olarak güvenli kaynağı olan crypto.getRandomValues() işlevini kullanır; v7 ise bir sayaç tutar, böylece aynı milisaniyede oluşturulan UUID'ler de doğru sıralanır ve asla tekrarlanmaz.
Advertisement
UUID Çözme: Sürüm, Varyant ve Zaman Damgası
Çöz sekmesini açın ve her satıra bir tane olmak üzere bir veya daha fazla UUID yapıştırın: standart, süslü parantezli, urn:uuid: veya 32 karakterlik biçimde olabilir. Her biri için geçerli olup olmadığını, sürümünü ve varyantını, v1, v6 ve v7 içinse oluşturulduğu tarih ve saati görürsünüz.
v1 ve v6 UUID'lerinde çözücü ayrıca düğüm kimliğini ve bunun gerçek bir MAC adresine mi yoksa rastgele bir değere mi benzediğini gösterir. Bu, sisteminizdeki eski kimliklerin donanım adreslerini sızdırıp sızdırmadığını kontrol etmenin hızlı bir yoludur.
Kodda UUID Oluşturma
Çoğu büyük dil ve veritabanı, ek paket olmadan UUID oluşturabilir. Sürüm 7 desteği daha yenidir: Python 3.14, PostgreSQL 18, .NET 9 ve Go 1.27 bunu ekledi.
crypto.randomUUID()
// 'f47ac10b-58cc-4372-a567-0e02b2c3d479' (sürüm 4)import uuid
uuid.uuid4() # rastgele
uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com') # isme dayalı, her zaman aynı
uuid.uuid7() # Python 3.14+SELECT gen_random_uuid(); -- sürüm 4 (PostgreSQL 13+)
SELECT uuidv7(); -- sürüm 7 (PostgreSQL 18+)Guid.NewGuid() // sürüm 4
Guid.CreateVersion7() // sürüm 7 (.NET 9+)
# PowerShell
New-Guiduuidgen # rastgele UUID (macOS büyük harfle yazdırır)
uuidgen --time # sürüm 1 (util-linux)
cat /proc/sys/kernel/random/uuid # Linux çekirdeğiUUID.randomUUID() // Java, sürüm 4
uuid.NewV4() // Go 1.27+ standart kütüphane, sürüm 4
uuid.NewV7() // Go 1.27+, sürüm 7
// eski Go: github.com/google/uuid (uuid.New, uuid.NewV7)Advertisement
Diğer Geliştirici Araçları
Geliştiriciler ve sistem yöneticileri için, hepsi tarayıcınızda çalışan diğer ücretsiz araçlar: