RevealTheme logo

UUID Oluşturucu

UUID v4 (evrensel olarak benzersiz rastgele tanımlayıcılar) oluşturun. Her tıklama yeni bir tanımlayıcı üretir.

Bu araç nasıl kullanılır

  1. 1

    Click the Generate UUID button to produce a fresh random v4 UUID.

  2. 2

    Read the 36-character identifier shown in the canonical 8-4-4-4-12 format below the button.

  3. 3

    Click Copy to put the UUID on your clipboard for pasting into code, a database, or a config file.

  4. 4

    Click Generate UUID again whenever you need another one — every click replaces the value with a brand-new random UUID.

UUID nedir ve yazılım onu neden kullanır?

Bir UUID (Universally Unique Identifier, Microsoft bağlamlarında bazen GUID olarak adlandırılır), sistemler arasında koordinasyona gerek kalmadan varlıkları tanımlamak için kullanılan 128 bitlik bir değerdir. Bir UUID'nin temel fikri, birbirini tanımayan iki farklı makinede çalışan iki farklı programın UUID üretebilmesi ve bunların asla çakışmayacağını güvenle varsayabilmesidir. Bu özellik, dağıtık sistem tasarımını mümkün kılar: herhangi bir hizmetin merkezi bir sayaç olmadan yerel olarak tanımlayıcı üretmesine izin verebilir, satırları yeniden numaralandırmadan veritabanlarını birleştirebilir ve sunucu isteği görmeden önce istemcide tanımlayıcıları önceden oluşturabilirsiniz. UUID'lerin RFC 4122 tarafından tanımlanan beş standart sürümü vardır: v1 (zaman + MAC adresi tabanlı; oluşturma zamanını ve makine kimliğini sızdırır), v3 (bir ad alanı + adın MD5 karması), v4 (rastgele; en yaygını), v5 (bir ad alanı + adın SHA-1 karması). RFC 9562, v6'yı (zamana göre sıralı; v1 gibi ama MAC sızdırmadan) ve v7'yi (Unix zaman damgası + rastgele; kronolojik olarak sıralandığı için özellikle veritabanı birincil anahtarları için tasarlanmış) ekledi. Bu araç, UUID v4'leri crypto.randomUUID() aracılığıyla oluşturur; bu da tarayıcının altındaki işletim sisteminin kriptografik olarak güçlü rastgeleliğini —TLS anahtarlarının geldiği aynı kaynağı— kullanır. Çıktı, Python'un uuid.uuid4(), Node'un crypto.randomUUID() ve Go'nun google/uuid.NewRandom() işlevlerininkiyle bayt bayt aynıdır.

Yaygın kullanım örnekleri

  • Veritabanı birincil anahtarları — veritabanlarını birleştirmeniz veya istemci tarafında kimlik üretmeniz gerektiğinde otomatik artan tam sayıların yerini alın.

  • Çerezlerdeki oturum tanımlayıcıları — geçerli bir oturum kimliğini kaba kuvvetle bulmanın hesaplama açısından imkânsız olacağı kadar uzun.

  • API istekleri için idempotency anahtarları — isteği güvenle tekrarlayın; sunucu UUID'ye göre tekilleştirir.

  • Dosya yükleme tanımlayıcıları — yol çakışmalarını önlemek ve orijinal dosya adlarını açığa çıkarmamak için yüklenen dosyaları UUID ile adlandırın.

  • Dağıtık izleme kimlikleri — her istek bir UUID alır ve günlük ilişkilendirmesi için servisler boyunca yayılır.

  • Test fikstürü tanımlayıcıları — test senaryoları arasında kimlikleri eşgüdümlemeden, test verileri için öngörülebilir rastgelelik.

Sıkça sorulan sorular

v4 ne anlama gelir?
Sürüm 4: 122 bit rastgelelik artı 6 bit sabit sürüm/varyant'tan oluşturulur. Diğer sürümler: v1, zaman damgası + MAC tabanlıdır (kullanmayın; makine kimliğini ve zamanı sızdırır), v3/v5, bir ad alanı + adın belirleyici karmalarıdır (kararlı türetilmiş tanımlayıcılar için kullanışlı), v7, zaman damgası önekli rastgeledir (kronolojik olarak sıralandığı için veritabanları için mükemmel). Çoğu durum için v4 doğru varsayılan seçenektir.
UUID'ler gerçekten ne kadar benzersiz?
UUID v4'lerin 122 bit etkin rastgeleliği vardır: 5,3×10^36 olası değer. %50 çakışma olasılığına ulaşmadan önce 2,71 katrilyon UUID üretmeniz gerekirdi. Bağlam için, saniyede bir milyar UUID üretseydiniz, bu eşiğe ulaşmak için 85 yıl gerekirdi. İyi bir rastgele sayı üreteciyle pratikte çakışmalar olmaz.
Veritabanı birincil anahtarları için v4 mü yoksa v7 mi kullanmalıyım?
Veritabanları için v7 daha iyidir. UUID v4'ler rastgeledir; bu da yeni satırların B-tree dizinlerine rastgele dağılması, dizin şişmesine ve büyük ölçekte yavaş eklemelere neden olması anlamına gelir. v7, zaman damgasını öne ekler; böylece yeni UUID'ler her zaman eskilerden sonra sıralanır ve sıralı ekleme desenleri korunur. PostgreSQL, MySQL ve SQL Server v7'den yararlanır. Kitaplığınız henüz v7'yi desteklemiyorsa, ULID'ler aynı özelliğe sahip popüler bir alternatiftir.
crypto.randomUUID() kullanmak güvenli mi?
Evet. WHATWG'de belirtilmiş ve tüm modern tarayıcılarda işletim sisteminin kriptografik rastgele sayı üreteci (TLS anahtarlarının geldiği aynı kaynak) aracılığıyla uygulanmıştır. Çıktı öngörülemez ve tüm UUID v4 alanına eşit olarak dağılır.
UUID ile GUID arasındaki fark nedir?
İşlevsel olarak aynıdırlar: GUID, aynı kavram için Microsoft'un terimidir. Bayt formatı bazı Microsoft API'lerinde farklılık gösterir (.NET'in Guid.ToByteArray() işlevi ilk üç alanda karışık bayt sırası kullanır); bu nedenle birlikte çalışabilirlik önemli olduğunda bayt sırasına dikkat edin. Standart dize formatı (8-4-4-4-12) aynıdır.
URL'lerde kullanmak için bir UUID'yi kısaltabilir miyim?
Evet: 128 biti, standart onaltılık format yerine Base62 veya Base64 ile kodlayın. Base62 size 22 karakter verir; Base64, dolgulu olarak 22 ya da URL açısından güvenli varyantında 22 verir. Bazı kitaplıklar 'kısa UUID' formatları da kullanır. Temeldeki bitler değişmez; yalnızca görüntüleme kodlaması farklıdır.
UUID'm neden başka bir UUID ile aynı karakterlerle başlıyor?
Bu bir tesadüftür: UUID v4'ler rastgeledir. Toplam 36 onaltılık karakter ve yalnızca 22 rastgele onaltılık karakterle (4'ü sürüm/varyant için ayrılmıştır ve 4'ü tiredir), çok sayıda ürettiğinizde bazı önek eşleşmeleri kaçınılmazdır. Önekler eşleşse bile UUID'nin tamamı benzersizdir.

İlgili araçlar