UUID oluşturucu nasıl kullanılır?
- Sürümü seçin: v4 (rastgele) veya v7 (zamana göre sıralı).
- Kaç UUID'ye ihtiyacınız olduğunu belirleyin: tek bir değerden toplu bir listeye kadar.
- İsterseniz büyük harfe geçin veya tireleri kaldırın.
- Tek bir değeri veya listenin tamamını kopyalayın.
UUID'ler tarayıcınızda, tarayıcının kriptografik olarak güvenli rastgele sayı üreteciyle oluşturulur. Sunucularımıza hiçbir zaman gönderilmez ve orada saklanmaz; bu yüzden hangi tanımlayıcıları oluşturduğunuzu başka kimse bilmez.
UUID nedir?
UUID (Universally Unique Identifier, evrensel benzersiz tanımlayıcı), herhangi bir makinede bağımsız olarak oluşturulabilen ve başka bir değerle çakışma olasılığı yok denecek kadar az olan 128 bitlik bir değerdir. Merkezi bir kayıt sistemine veya veritabanına gidip gelmeye gerek yoktur; bu da UUID'leri dağıtık sistemler, çevrimdışı istemciler ve birkaç kaynaktan gelen verileri birleştirmek için ideal kılar. İstek kimlikleri için ve token'ların içindeki jti alanı (claim) için de yaygın bir tercihtir; bu token'ları JWT çözücü ile inceleyebilirsiniz. GUID (Globally Unique Identifier, küresel benzersiz tanımlayıcı), Microsoft'un aynı şey için kullandığı addır.
UUID'ler, tirelerle ayrılmış beş grupta 32 onaltılık (hex) rakam olarak, 8-4-4-4-12 düzeninde yazılır (toplam 36 karakter):
f47ac10b-58cc-4372-a567-0e02b2c3d479
^ ^
| varyant (8, 9, a veya b)
sürüm (4)
Üçüncü grubun ilk rakamı sürümü belirtir; dördüncü grubun ilk rakamı ise varyantı kodlar. Güncel belirtim, RFC 4122'nin yerini alan ve 6, 7 ve 8 sürümlerini ekleyen RFC 9562'dir (2024).
Sürüm 4 ile sürüm 7 karşılaştırması
| UUID v4 | UUID v7 | |
|---|---|---|
| İçerik | 122 rastgele bit (sürüm ve varyant için 6 bit sabit) | Milisaniye cinsinden 48 bitlik Unix zaman damgası, ardından rastgele bitler |
| Sıralama | Rastgele | Yaklaşık olarak kronolojik |
| Açığa çıkardığı | Hiçbir şey | Oluşturulma zamanı |
| En uygun kullanım | Token'lar, herkese açık kimlikler, genel kullanım | Veritabanı birincil anahtarları, olay günlükleri |
v7 veritabanı indeksleri için neden daha iyidir?
Birincil anahtarlar genellikle bir B-tree indeksinde saklanır. Rastgele v4 değerleri rastgele konumlara düşer; bu yüzden her ekleme farklı bir sayfayı etkiler ve büyük tablolarda sayfa bölünmelerine, zayıf önbellek yerelliğine ve indeks şişmesine yol açar. v7 UUID'leri bir zaman damgasıyla başladığı için yeni değerler, otomatik artan bir tamsayıda olduğu gibi indeksin sonuna yakın eklenir; küresel olarak benzersiz, istemcide oluşturulan kimliklerin avantajları da korunur.
Sık yapılan hatalar
- UUID'leri metin olarak saklamak. 36 karakterlik bir dize, 16 ham baytın iki katından fazla yer kaplar. Yerel bir
uuidtürü (PostgreSQL) veyaBINARY(16)(MySQL) kullanın. - UUID'leri gizli bilgi olarak kullanmak. v4 değerlerini tahmin etmek zordur, ama bunlar kimlik bilgisi değil, tanımlayıcıdır. v7 değerleri oluşturulma zamanlarını açığa çıkarır ve kısmen tahmin edilebilir. Parola sıfırlama ve API anahtarları için ayrı bir rastgele token kullanın.
- Büyük/küçük harfe duyarlı karşılaştırmalar. RFC 9562 çıktının küçük harfle verilmesini belirtir, ama girdinin her iki biçimde de kabul edilmesini şart koşar. Dizeleri karşılaştırmadan önce normalleştirin.
- Zayıf rastgelelik kaynakları. v4 UUID'leri
Math.random()ile oluşturmak benzersizliklerini zayıflatır. Kriptografik olarak güvenli bir üreteç kullanın.
Kodda UUID oluşturma
// JavaScript (browsers and Node.js)
crypto.randomUUID(); // v4
# Python
import uuid
uuid.uuid4()
uuid.uuid7() # Python 3.14+
-- PostgreSQL
SELECT gen_random_uuid(); -- v4 (PostgreSQL 13+)
SELECT uuidv7(); -- PostgreSQL 18+
// Java
java.util.UUID.randomUUID();
// C# / .NET
Guid.NewGuid(); // v4
Guid.CreateVersion7(); // .NET 9+
# Shell (Linux, macOS)
uuidgen
Sıkça sorulan sorular
İki UUID hiç aynı olabilir mi?
Teoride evet, pratikte hayır. 122 rastgele bitle olası v4 değerlerinin sayısı o kadar büyüktür ki tek bir tekrarın olası hâle gelmesi için onlarca yıl boyunca her saniye milyarlarca UUID oluşturmanız gerekir. Gerçek sistemlerdeki çakışmalar neredeyse her zaman tesadüften değil, bozuk bir rastgele sayı üretecinden veya kopyalanmış verilerden kaynaklanır.
UUID ile GUID arasındaki fark nedir?
Pratikte hiçbir fark yoktur. GUID, Microsoft teknolojilerinde kullanılan terimdir; biçim ve boyut aynıdır.
v4 mü yoksa v7 mi kullanmalıyım?
Veritabanı birincil anahtarları ve oluşturulma zamanına göre sıralanmasını istediğiniz her şey için v7 kullanın. Kimliğin hiçbir şey açığa çıkarmaması gerektiğinde, örneğin herkese açık URL'lerde görünen tanımlayıcılar için v4 kullanın.
Nil UUID geçerli mi?
Evet. 00000000-0000-0000-0000-000000000000 özel nil UUID'dir; RFC 9562 ayrıca tamamı f rakamlarından oluşan bir max UUID tanımlar. İkisi de çoğu zaman yer tutucu olarak kullanılır.
Güncellendi
Yorumlar
Bu aracı oylamak için giriş yapın.
Bir ipucu paylaşın, soru sorun ya da aracın işinize nasıl yaradığını anlatın.
Henüz yorum yok. Nasıl geçtiğini ilk siz anlatın.