;

UUID / GUID Üretici

Standart UUID v4 (rastgele) ve nanoid formatlarında benzersiz tanımlayıcılar üretir. Toplu üretim destekli. Tarayıcıda anında çalışır, kayıt gerekmez, ücretsizdir.

UUID Üretici

v4 + NanoID
// ID'LER —

    

UUID / GUID Nedir?

UUID (Universally Unique Identifier) veya GUID (Globally Unique Identifier), teorik olarak çakışma olasılığı sıfıra yakın olan 128-bit'lik benzersiz tanımlayıcılardır. 32 hexadecimal karakter + 4 tireden oluşur, toplamda 36 karakterlik bir string'tir:

550e8400-e29b-41d4-a716-446655440000

UUID, RFC 4122 standardıyla tanımlanmıştır. 5 farklı versiyonu vardır, her biri farklı yöntemlerle üretilir ve farklı kullanım senaryolarına uyar.

UUID Versiyonları

UUID v1 — MAC Adresi + Zaman

Bilgisayarın MAC adresi ve mevcut zaman bilgisinden üretilir. Tahmin edilebilir, privacy kaygısı olan yerlerde kullanılmaz. Eskiden veritabanı kayıtlarında yaygın kullanılırdı.

UUID v3 ve v5 — Namespace + İsim

İsim alanı (namespace) UUID'si ve bir isim string'inden hash ile üretilir. v3 MD5 kullanır, v5 SHA-1. Aynı namespace + aynı isim her zaman aynı UUID'yi verir (deterministic). Aynı verinin iki kere işlenmesini önlemek için kullanışlıdır.

UUID v4 — Rastgele

Tamamen rastgele üretilir, en yaygın kullanılan versiyondur. Bir kullanıcı, oturum, geçici dosya için kimlik üretmek istediğinizde v4 standarttır. Rastgele 122 bit içerir (6 bit versiyon ve varyant bilgisi için ayrılmış). 5,3 × 10^36 farklı kombinasyon mümkün.

UUID v7 — Yeni: Zaman Sıralı

2024'te standartlaşan yeni versiyondur. Başlangıçta UNIX timestamp (millisaniye) içerir, sonrası rastgele. Veritabanı index'lerinde performans için ideal — kronolojik sıralı UUID'ler index'lerde daha az kırılganlık üretir. UUID v4'ün rastgele dağılımı veritabanlarında yavaşlamaya yol açabilir, v7 bu sorunu çözer.

UUID Çakışma Olasılığı

UUID v4'te 122 bit rastgele veri vardır. Doğum günü paradoksuna göre, %50 çakışma olasılığı için 2,71 × 10^18 UUID üretmeniz gerekir — saniyede 1 milyar üretseniz bile 85 yıl sürer. Pratikte UUID çakışması mümkün değildir.

UUID Nerelerde Kullanılır?

  • Veritabanı Birincil Anahtarları: Auto-increment yerine UUID kullanarak distributed sistemler arası kolayca veri taşıyabilirsiniz
  • API Request ID: Her isteği takip etmek için (logging, tracing)
  • Geçici Dosya İsimleri: upload-550e8400-e29b-41d4.tmp
  • Session ID: Kullanıcı oturum tanımlayıcıları
  • Transaction ID: Ödeme sistemleri, banking
  • Cache Key: Redis/Memcached anahtarları
  • JWT jti Claim: Token tekilleştirme
  • Dosya Yükleme: S3, CDN'lerde benzersiz dosya yolları

UUID vs Auto-Increment Karşılaştırması

Kriter UUID Auto-Increment
Tahmin edilebilirlikYok ✓Tahmin edilebilir
Boyut16 byte4-8 byte ✓
Distributed Sistemlerİdeal ✓Çakışma riski
URL'de GörünümÇirkinTemiz ✓
Index Performansı (v4)Kötüİyi ✓
Index Performansı (v7)İyi ✓İyi ✓

UUID Üretim Güvenliği

UUID üretirken kullanılan rastgele sayı üreteci (RNG) kriptografik olarak güvenli olmalıdır:

  • İyi: crypto.randomUUID() (browser/Node.js), secrets (Python), random_bytes() (PHP 7+)
  • Kötü: Math.random(), rand() — predictable, brute force'a açık

Bizim aracımız tarayıcının crypto.getRandomValues() API'sini kullanır, güvenlidir.

Sıkça Sorulan Sorular

UUID ile GUID aynı şey midir?

Pratik olarak evet, aynı standardı (RFC 4122) takip ederler. UUID Linux/Unix dünyasında, GUID ise Microsoft Windows dünyasında yaygın olarak kullanılır. Format ve üretim algoritmaları aynıdır, sadece Microsoft byte sıralamasında ufak bir fark vardır ama bu format düzeyinde değildir.

Hangi UUID versiyonu yeni proje için en iyisi?

Yeni projeler için UUID v7 ideal seçenektir - hem rastgeleliği hem zaman sıralılığı korur, veritabanı index'leri için optimaldir. Henüz tüm kütüphanelerde desteklenmediği için v4 hâlâ en yaygın güvenli seçimdir. Kesinlikle v1 kullanmayın (MAC adresinizi sızdırır), v3/v5 sadece deterministic UUID ihtiyacı varsa.

UUID veritabanında neden index performansını düşürür?

UUID v4 tamamen rastgele olduğu için yeni kayıtlar B-tree index'in her yerine eklenir, sayfa bölünmeleri (page splits) sık olur. Auto-increment ise hep sona ekler. UUID v7 zaman ile sıralı olduğu için bu sorunu çözer. Alternatif: UUID'yi binary(16) olarak saklamak ve gerektiğinde optimize edilmiş "ULID" gibi sıralı UUID benzeri formatlar kullanmak.

UUID URL'de güvenli mi?

UUID v4 URL'de görünmesinde sakınca yok - tahmin edilemezliği koruma sağlar. Yine de hassas içerikler için (özel link paylaşımı vb.) "unguessable" yani kullanıcının sahip olduğu URL'nin gizliliğine dayanan auth modeli kullanmayın - en azından expire eden token mekanizması ekleyin. UUID'yi base64 ile kısaltabilirsiniz (22 karakter) URL daha temiz görünür.

Bir milyon UUID üretsem çakışma olur mu?

Hayır. UUID v4'te 122 bit rastgele veri var. Bir milyon UUID için çakışma olasılığı yaklaşık 0.00000000000000000003 - pratik olarak imkânsız. Saniyede 1 milyar UUID üretseniz 85 yılda %50 çakışma olasılığına ulaşırsınız. Buna güven duyabilirsiniz, gerçek dünya kullanımında çakışma kaydı yoktur.

İlgili Araçlar

İlgili Araçlar

;