Biçim
Sürüm 4 (rastgele) UUID: 122 bit rastgelelik içerir; iki değerin çakışma olasılığı pratikte sıfırdır.
Kısaca cevap
Online GUID oluşturmak için kaç tane istediğinizi yazın (1-100, varsayılan 5), biçim seçeneklerini işaretleyin ve "Yeniden üret" düğmesine basın. Araç, 122 bit rastgelelik içeren sürüm 4 UUID üretir. Her satırı ayrı ayrı veya "Tümünü kopyala" ile hepsini alt alta kopyalayabilirsiniz; değerler yalnızca tarayıcınızda üretilir.
Bu sayfada
GUID oluşturucu nasıl kullanılır?
- Adedi girin: "Kaç tane?" kutusuna 1 ile 100 arasında bir sayı yazın.
- Biçimi seçin: "Tireli (8-4-4-4-12)" varsayılan olarak açıktır. İsterseniz "Büyük harf" ve "Süslü parantez içinde { }" seçeneklerini de işaretleyin.
- Kopyalayın: Her GUID'in yanındaki "Kopyala" düğmesi tek değeri, "Tümünü kopyala" ise listenin tamamını her biri ayrı satırda olacak şekilde kopyalar.
Ayarları değiştirdiğinizde liste kendiliğinden yenilenir. Seçeneklerin birlikte nasıl göründüğü aşağıdaki gibidir:
| Seçim | Örnek çıktı | Uzunluk |
|---|---|---|
| Varsayılan (tireli, küçük harf) | 3f1c9a2e-7b4d-4e1a-9c3b-5d8e2f6a1b0c | 36 karakter |
| Tiresiz | 3f1c9a2e7b4d4e1a9c3b5d8e2f6a1b0c | 32 karakter |
| Tireli + büyük harf | 3F1C9A2E-7B4D-4E1A-9C3B-5D8E2F6A1B0C | 36 karakter |
| Tireli + süslü parantez | {3f1c9a2e-7b4d-4e1a-9c3b-5d8e2f6a1b0c} | 38 karakter |
Süslü parantezli biçim, Windows kayıt defteri ve bazı Microsoft araçlarında sık görülür. Veritabanı ve API'lerde genellikle tireli, küçük harfli biçim kullanılır.
GUID nedir? UUID ile farkı var mı?
UUID (Universally Unique Identifier), 128 bitlik benzersiz bir kimliktir. GUID (Globally Unique Identifier) aynı kavramın özellikle Microsoft ekosisteminde kullanılan adıdır. Amaç, merkezi bir sayaç veya kayıt sistemine sormadan, farklı bilgisayarlarda birbirinden bağımsız olarak üretilen kimliklerin çakışmamasını sağlamaktır.
128 bit, 32 onaltılık (hexadecimal) karakterle yazılır ve okunabilirlik için tirelerle 8-4-4-4-12 düzeninde beş gruba ayrılır. UUID'nin birkaç sürümü vardır; bu araç, tamamen rastgele sayılara dayanan sürüm 4'ü üretir.
Sürüm 4 UUID'nin yapısı: neden 122 bit?
128 bitin tamamı rastgele değildir; 6 bit, değerin türünü belirtmek için sabitlenir:
- Sürüm (4 bit): Üçüncü grubun ilk karakteri her zaman
4'tür. Yukarıdaki örnekte "4e1a" grubu bunu gösterir. - Varyant (2 bit): Dördüncü grubun ilk karakteri
8,9,aveyabolur. Bu, değerin standart UUID düzenine uyduğunu belirtir.
Geriye kalan 128 − 6 = 122 bit rastgeledir. Bir GUID'in sürüm 4 olup olmadığını bu iki karaktere bakarak hızlıca anlayabilirsiniz.
Araç, tarayıcıda varsa yerleşik crypto.randomUUID() işlevini kullanır. Bu işlev yoksa aynı yapıyı crypto.getRandomValues ile kendisi kurar: 16 rastgele bayt üretir, sürüm ve varyant bitlerini yerleştirir. İki yol da kriptografik rastgelelik kaynağını kullanır; kaynağın önemini Kriptografi ve Rastgelelik yazısında okuyabilirsiniz.
Çakışma olasılığı gerçekte ne kadar?
122 bit, yaklaşık 5,3 × 10^36 farklı değer demektir. Çakışma hesabında "doğum günü problemi" denen durum geçerlidir: soru, belirli bir değerin tekrar gelmesi değil, üretilen tüm değerler arasında herhangi ikisinin aynı çıkmasıdır.
- 1 milyar UUID üretildiğinde herhangi ikisinin çakışma olasılığı yaklaşık 9 × 10^-20'dir.
- Çakışma olasılığının %50'ye ulaşması için yaklaşık 2,7 × 10^18 (2,7 milyar kere milyar) UUID üretmek gerekir.
Yani iyi bir rastgelelik kaynağıyla üretilen sürüm 4 UUID'lerde çakışma, pratikte dikkate alınacak bir risk değildir. Gerçek hayatta sorunlar daha çok zayıf rastgele sayı üreteçlerinden veya aynı değerin yanlışlıkla kopyalanması gibi yazılım hatalarından çıkar. Yine de veritabanında benzersizlik kısıtı (unique constraint) kullanmak iyi bir alışkanlıktır.
GUID ne işe yarar, nerede kullanılır?
- Veritabanı birincil anahtarları: Kayıt, veritabanına yazılmadan önce kimlik alabilir; farklı sunuculardaki veriler çakışma olmadan birleştirilebilir.
- Dağıtık sistemler ve API'ler: İstekleri izlemek için takip kimliği (correlation ID) veya aynı işlemin iki kez yapılmasını önleyen istek anahtarı olarak.
- Dosya ve nesne adları: Yüklenen dosyalara çakışmayan adlar vermek için.
- Test verisi: Geliştirme sırasında hızlıca örnek kimlik gerektiğinde.
C#, SQL, Python ve JavaScript'te GUID nasıl oluşturulur?
Kodda veya veritabanında GUID üretmek için çoğu ortamda hazır bir işlev bulunur; bu sayfadaki araca yalnızca elle hızlıca değer gerektiğinde ihtiyaç duyarsınız.
- C# (.NET):
Guid.NewGuid(). Microsoft'un belgelerine göre bu yöntem sürüm 4 UUID üretir ve 122 bit rastgelelik içerir. Aynı belge,NewGuid'in kriptografik amaçlarla (ör. gizli anahtar üretmek) kullanılmamasını önerir. - SQL Server:
NEWID()işleviuniqueidentifiertüründe yeni bir değer döndürür; tablo tanımındaDEFAULT NEWID()ile sütunun varsayılan değeri yapılabilir. - PostgreSQL:
gen_random_uuid()sürüm 4 (rastgele) UUID üretir. - JavaScript:
crypto.randomUUID(); bu araç da tarayıcıda varsa bu işlevi kullanır. - Python:
uuidmodülündekiuuid4():
import uuid
print(uuid.uuid4())
Guid kimlik = Guid.NewGuid();
Console.WriteLine(kimlik); // ör. 0f8fad5b-d9cb-469f-a165-70867728950e
C# ile rastgelelik kullanımına örnek için C# ile Rastgele Şifre Üretici yazısına bakabilirsiniz.
GUID gizli bir değer değildir. Tahmin edilmesi zor olsa da şifre, oturum anahtarı veya API anahtarı yerine kullanmayın. Şifre gerekiyorsa ana sayfadaki şifre üreticiyi kullanın.
Veritabanında nasıl saklanır?
GUID'i metin olarak saklamak mümkündür ama yer kaplar: tireli biçim 36 karakterdir, oysa değerin kendisi yalnızca 16 bayttır. Bu yüzden birçok veritabanı UUID için özel bir tür sunar. SQL Server'da uniqueidentifier, PostgreSQL'de uuid türü bu iş içindir. Böyle bir türün olmadığı sistemlerde değer 16 baytlık ikili (binary) alan olarak da tutulabilir.
Özel tür kullanmak, hatalı biçimli değerlerin kaydedilmesini de engeller. Metin olarak saklamak zorundaysanız tüm uygulamada tek bir biçimde (örneğin tireli ve küçük harf) karar kılın; aksi hâlde aynı değerin farklı yazımları karşılaştırmada sorun çıkarabilir. UUID sürümleri ve kullanım alanları hakkında daha fazlası UUID (GUID) Nedir, Ne İşe Yarar? yazısında ele alınacak.
Sürüm 7 UUID hakkında kısa not
Rastgele sürüm 4 değerler sıralı gelmediği için, bazı veritabanlarında birincil anahtar olarak kullanıldığında ekleme performansını düşürebilir ve dizinlerin dağınıklaşmasına yol açabilir. 2024'te yayımlanan ve RFC 4122'nin yerini alan güncel UUID standardı RFC 9562, bu sorun için 48 bitlik Unix milisaniye zaman damgasıyla başlayan ve bu yüzden kabaca oluşturulma sırasına göre dizilen sürüm 7'yi tanımlar. Sırayla eklenen çok sayıda kayıt tutuyorsanız sürüm 7'yi değerlendirebilirsiniz; bu araç ise yalnızca sürüm 4 üretir.
Diğer geliştirici ve rastgele araçlar için Araçlar sayfasına göz atabilirsiniz.
Sık sorulan sorular
GUID nedir, açılımı ne?
GUID, Globally Unique Identifier (küresel benzersiz tanımlayıcı) ifadesinin kısaltmasıdır. 32 onaltılık karakterle yazılan 128 bitlik bir kimlik numarasıdır ve kayıtları, dosyaları veya nesneleri merkezi bir sayaca ihtiyaç duymadan benzersiz biçimde adlandırmak için kullanılır.
GUID ile UUID arasında fark var mı?
Pratikte aynı şeyi ifade ederler. UUID standarttaki addır; GUID ise özellikle Microsoft dünyasında (Windows, .NET, SQL Server) kullanılan addır. Bu aracın ürettiği değerler her iki bağlamda da kullanılabilir.
İki GUID'in aynı çıkma olasılığı var mı?
Teorik olarak var ama pratikte ihmal edilebilir. Sürüm 4 UUID'de 122 bit rastgelelik vardır, yani yaklaşık 5,3 × 10^36 olası değer. Bir milyar UUID üretildiğinde bile herhangi ikisinin çakışma olasılığı yaklaşık 10^-19 düzeyindedir.
GUID'i şifre veya gizli anahtar olarak kullanabilir miyim?
Önerilmez. UUID'ler benzersiz kimlik olarak tasarlanmıştır, gizli değer olarak değil; kayıtlarda, adres satırlarında ve günlüklerde açıkça görünmeleri olağandır. Şifre veya gizli anahtar için amaca uygun bir şifre üretici kullanın.
Tiresiz GUID ile tireli GUID aynı değer mi?
Evet. Tireler yalnızca okunabilirlik için vardır; tiresiz biçim aynı 32 onaltılık karakterden oluşur. Büyük veya küçük harf kullanımı da değeri değiştirmez, ancak bazı sistemler karşılaştırmada harf farkına duyarlı olabilir.



