ESC
Developer

UUID Nedir? Geliştiriciler için Benzersiz Tanımlayıcı Rehberi

UUID'lerin ne olduğunu, farklı versiyonların nasıl çalıştığını, ne zaman kullanılacağını ve JavaScript, Python, PHP ile SQL'de nasıl oluşturulacağını öğrenin.

2026-06-25 8 min read Developer
UUID Guide: A Developer's Guide to Unique Identifiers

UUID Nedir?

UUID (Universally Unique Identifier — Evrensel Benzersiz Tanımlayıcı), merkezi bir koordinasyona ihtiyaç duymadan zaman ve mekânda benzersiz olacak şekilde tasarlanmış 128 bit'lik bir tanımlayıcıdır. Sonuç olarak 36 karakterlik şu format ortaya çıkar:

550e8400-e29b-41d4-a716-446655440000

Bu dize, kısa çizgilerle ayrılmış beş grupta düzenlenmiş 32 onaltılı rakamı kodlar: 8-4-4-4-12. İki belirli bit konumu sürüm ve varyant bilgisini taşır.

Çakışma olasılığı: UUID v4 ile iki aynı ID oluşturma olasılığı yaklaşık 5.3×1036'da 1'dir. Pratikte hiçbir zaman çakışma yaşamazsınız.

UUID Versiyonları

UUID v1 — Zaman Tabanlı + MAC Adresi

v1, güncel zaman damgasını ağ arayüzünün MAC adresiyle birleştirir. Tek bir makinede oluşturulma zamanına göre sıralıdır. Dezavantaj: Host makinenin MAC adresini ve tam oluşturulma zamanını ortaya koyar — gizlilik açısından sorun teşkil eder.

UUID v3 — Namespace + MD5

Deterministiktir: aynı girdi her zaman aynı UUID'yi üretir. MD5 kullanır — v5'i tercih edin.

UUID v4 — Rastgele (En Yaygın)

122 biti kriptografik olarak güvenli rastgele verilerle doldurur. Durum, ağ veya koordinasyon gerektirmez. Çoğu kullanım durumu için varsayılan tercihiniz olmalıdır.

UUID v5 — Namespace + SHA-1

v3 gibi ancak SHA-1 kullanır. Deterministik: aynı namespace + isim = her seferinde aynı UUID.

UUID v7 — Zaman Sıralı (Yeni Standart)

Unix milisaniye zaman damgasını en önemli bitlere yerleştirir ve arkasına rastgele veri ekler. UUID'leri doğal olarak sıralanabilir kılar ve veritabanı B-ağacı indeks performansını önemli ölçüde iyileştirir.

Veritabanı birincil anahtarları için: UUID v7'yi tercih edin. Zaman sıralı yapısı indeks parçalanmasını önler.

UUID Neden Kullanılır?

  • Merkezi koordinasyon gerekmez: Herhangi bir istemci veya mikro servis bağımsız olarak UUID oluşturabilir.
  • Güvenlik: Sıralı tamsayı ID'ler veri hacmini açığa çıkarır. UUID'ler hiçbir şey açıklamaz.
  • Veritabanı birleştirme: Tamsayı ID'li tabloları birleştirmek çakışmalara yol açar. UUID anahtarlı tablolar çakışmasız birleşir.
  • Çevrimdışı oluşturma: Mobil uygulamalar ve yerel-öncelikli yazılımlar çevrimdışıyken kayıt oluşturabilir ve daha sonra senkronize edebilir.
  • Endüstri standardı: Her büyük veritabanı, ORM ve API çerçevesinde yerleşik destek bulunur.

UUID vs Diğer ID Türleri

ID TürüUzunlukSıralanabilirNotlar
Otomatik artan int4–8 byteEvetKayıt sayısını açığa çıkarır; dağıtık DB'lerde sorunlu
UUID v416 byte / 36 karakterHayırEvrensel destek; rastgele sıralama indekslerine zarar verir
UUID v716 byte / 36 karakterEvet (ms)DB birincil anahtarları için ideal
ULID26 karakterEvet (ms)Daha kısa, URL-güvenli; resmi standart değil
NanoID~21 karakterHayırURL slug'ları için kısa, yapılandırılabilir alfabe

UUID Ne Zaman Kullanılmaz?

  • Depolama ek yükü: String olarak 36 byte alır. BINARY(16) veya PostgreSQL'in native uuid türünü kullanın.
  • URL slug'ları: Uzun ve hatırlanması zor. İnsan odaklı URL'ler için ayrı bir slug sütunu kullanın.
  • v4 ile indeks parçalanması: Yüksek yazma hacimli tablolarda v7 veya ULID'i tercih edin.
MySQL ipucu: UUID'leri yüksek hacimli tablolarda asla VARCHAR(36) olarak saklamayın. UUID_TO_BIN(uuid, 1) ile BINARY(16) kullanın.

Kod ile UUID Oluşturma

JavaScript

const id = crypto.randomUUID(); // v4
// "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"

Python

import uuid
id_v4 = str(uuid.uuid4())

PHP

// ramsey/uuid paketi ile
use Ramsey\Uuid\Uuid;
$v4 = Uuid::uuid4()->toString();
$v7 = Uuid::uuid7()->toString();

SQL

-- MySQL
SELECT UUID();
-- PostgreSQL
SELECT gen_random_uuid();

UUID En İyi Uygulamaları

  • Binary olarak saklayın — BINARY(16) veya PostgreSQL native uuid türü.
  • Çoğu durumda v4 kullanın.
  • Veritabanı birincil anahtarları için v7 kullanın.
  • Gizlilik açısından hassas bağlamlarda v1'den kaçının.
  • Girişte UUID formatını doğrulayın: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i
  • Küçük harf kullanımını tutarlı biçimde uygulayın.
UUID'leri hemen oluşturmak mı istiyorsunuz? UUID Generator aracımız toplu v4 ve v7 UUID'ler oluşturur — anında kopyalayın, sunucu gerekmez.

Sıkça Sorulan Sorular

İki UUID hiç aynı olabilir mi?

Teorik olarak evet — olasılıksal, matematiksel değil. UUID v4 için çakışma olasılığı yaklaşık 5.3×1036'da 1'dir. Gerçek dünya sistemlerinde hiçbir zaman çakışmayla karşılaşmazsınız.

Veritabanı birincil anahtarları için v4 mü v7 mi?

v7 kullanın. v4 B-ağacı indeksinde rastgele konumlara ekleme yapar ve büyük ölçekte performansı düşürür. v7'nin milisaniye hassasiyetli zaman damgası öneki, yeni kayıtların her zaman indeksin sonuna eklenmesini sağlar.

UUID'ler büyük/küçük harfe duyarlı mı?

Hayır. Spesifikasyon büyük/küçük harf duyarsız olarak tanımlar. Kural olarak her zaman küçük harf kullanın.

Anında UUID Oluşturun

Toplu olarak v4 veya v7 UUID'ler oluşturun, panoya kopyalayın ve projelerinizde kullanın — sunucu yok, takip yok, %100 istemci tarafı.

UUID Generator'ı Aç