UUID gerçekte nedir
UUID, Evrensel Benzersiz Tanımlayıcı anlamına gelen İngilizce "Universally Unique Identifier" kısaltmasıdır; bir şeyi başkasına sormadan etiketlemek için kullanılan 128 bitlik bir değerdir. GUID, yani Küresel Benzersiz Tanımlayıcı olarak da görebilirsiniz; bu, Microsoft'un Windows ve .NET dünyasında aynı fikre verdiği addır. İki terim neredeyse her önemli durumda aynı 128 bitlik sayıyı tanımlar; dolayısıyla bir meslektaşınız GUID deyip siz UUID dediğinizde neredeyse her zaman tamamen aynı şeyden bahsediyorsunuzdur.
Bu 128 bit genellikle 8-4-4-12 düzeninde kısa çizgilerle beş gruba ayrılmış 32 onaltılık basamak olarak yazılır. Tipik bir değer şöyle görünür: 123e4567-e89b-12d3-a456-426614174000. Kısa çizgilerin kendine özgü bir anlamı yoktur; yalnızca insanın değeri okurken yerini kaybetmemesi için vardırlar. Her karakter 0'dan f'ye kadar bir onaltılık basamaktır; bu yüzden bir UUID, yüzeyde yalnızca çok büyük bir tam sayı olmasına karşın sıradan bir sayıdan daha yoğun görünür.

Sürümler ve v4'ün neden tercih edildiği
Standart birçok sürüm tanımlar; bunlar bitlerin nasıl doldurulduğu bakımından farklılık gösterir. Sürüm 1 zaman tabanlıdır: geçerli zaman damgasını ve makinenin ağ MAC adresiyle birleştirir. Bu, v1 değerlerini oluşturulma zamanına göre sıralanabilir kılar; ancak nerede ve kabaca ne zaman yapıldıklarını da açığa çıkarır; bu her zaman hoş karşılanmaz. Sürüm 3 ve 5 ise ad tabanlıdır; bir ad alanı ve adı karma hale getirerek aynı girdinin her zaman aynı tanımlayıcıyı üretmesini sağlar.
Sürüm 4 tamamen farklı bir yol izler. Neredeyse saf rastlantısallıktır. 128 bitin altısı sürümü ve varyantı işaretlemek için ayrılmıştır; kalan 122 bit rastgele verilerle doldurulur. Zaman damgası yok, MAC adresi yok, ad alanı yok; sadece gürültü. İşte bu yüzden bu araç dahil çoğu oluşturucu varsayılan olarak v4 üretir. Cihaz veya oluşturulma anı hakkında hiçbir şey açığa çıkarmaz ve bunu yapan taraflar arasında koordinasyon gerektirmez. Bu sayfadaki araç tamamen tarayıcınızda çalışır; dolayısıyla rastgele değerler hiçbir zaman cihazınızı terk etmez.
Çakışma olasılığı gerçekte ne kadar düşük
Makul bir endişe, iki rastgele UUID'nin bir gün aynı olup olmayacağıdır. 122 rastgele bit ile olası v4 değerlerinin uzayı 2'nin 122. kuvvetidir; bu yaklaşık 5,3'ün ardından 36 sıfır geldiği bir sayıdır. İnsan açısından ifade etmek gerekirse, tek bir kopyanın olasılığının ölçülebilir bir düzeye çıkması için on yıllarca saniyede milyarlarca UUID oluşturmanız gerekir. Standardın kendisi de çakışma şansını ihmal edilebilir düzeyde sıfıra yakın olarak tanımlar. Pratikte ekipler v4'ü benzersiz kabul eder ve bu yargıda haklıdırlar.

Geliştiricilerin bunlara başvurduğu yerler
Benzersizlik merkezi bir otoriteye ihtiyaç duymadığından, UUID'ler koordinasyonun pahalı veya imkansız olduğu yerlerde parlar. Özellikle birden fazla servis satır eklediğinde ve bir sonraki sayı için paylaşılan bir sayaca başvuramazsınız, veritabanı birincil anahtarları için doğal bir tercihtir. Dağıtık sistemlerde, gezegenin karşı yanlarındaki iki düğüm hiçbir zaman çakışmadan aynı anda tanımlayıcı üretebilir. API idempotency anahtarlarını da beslerler; istemci bir isteğe UUID ekler, böylece ağ yeniden denediğinde sunucu tekrarı güvenle yoksayabilir. Oturum simgeleri, dosya adları, olay kimlikleri ve mesaj anahtarlarının hepsi aynı özelliğe dayanır.
UUID ile otomatik artan kimlikler
Klasik alternatif otomatik artan tam sayıdır: 1, 2, 3 ve devamı. Sıralı kimlikler küçüktür, doğal olarak sıralanır ve okunması kolaydır; ancak gerçek dezavantajları vardır. Kaç kayıt bulunduğunu açığa çıkarır, dışarıdakilerin komşu değerleri tahmin etmesine izin verir ve her eklemeyi tek bir sayaçtan geçirmeye zorlar; bu, bir veritabanını parçaladığınızda veya birden fazla kaynaktan veri birleştirdiğinizde darboğaza dönüşür. UUID'ler bu sorunları herhangi bir tarafın bağımsız olarak anahtar oluşturmasına izin vererek ve hacim veya sıra hakkında hiçbir bilgi vermeyerek çözer. Bunun bedeli boyut ve dizinlerde biraz daha az yerellik kaybıdır. Ölçek büyüten veya iç yapısını gizlemek zorunda olan sistemler için bu değiş tokuş genellikle değerlidir. Bunu ve benzeri araçları tüm oluşturucular koleksiyonumuzdan inceleyebilir ya da ilgili yapı taşları için daha geniş geliştirici araçları setine göz atabilirsiniz.
Sık sorulan sorular
GUID ile UUID aynı şey mi?
Gündelik kullanım için evet. GUID, Microsoft'un aynı 128 bitlik tanımlayıcıya verdiği addır. Tek gerçek fark, bazı Windows sistemlerinde ham ikili formdaki bayt sıralamasıdır; dize formunda birbirinin yerine geçebilir ve aynıdırlar.
Bu araç hangi UUID sürümünü üretiyor?
Rastgele varyant olan 4. sürümü üretir. 128 bitinin 122'si rastgele verilerle doldurulur; bu, her değerin tekrar etme olasılığını son derece düşük kılar ve herhangi bir zaman damgası veya cihaz bilgisi taşımadığı anlamına gelir.
İki UUID hiçbir zaman aynı olabilir mi?
Teoride olasılık tam olarak sıfır değildir; ancak yaklaşık 5,3 çarpı 10'un 36. kuvveti olası v4 değeriyle bu ihtimal ihmal edilebilir düzeyde küçüktür. Bir çakışmanın muhtemel olması için astronomik sayıda UUID oluşturmanız gerekirdi.
Neden otomatik artan sayı yerine UUID kullanmalıyım?
UUID'ler paylaşılan bir sayaç olmadan herhangi bir servis tarafından bağımsız olarak oluşturulabilir, kayıt sayılarını veya sırasını açığa çıkarmaz ve pek çok kaynaktan veri birleştirmeyi kolaylaştırır. Otomatik artan kimlikler daha küçüktür ancak darboğaz oluşturur ve ölçekte bilgi sızdırır.
UUID'ler bir sunucuda mı üretiliyor?
Hayır. Bu araç tamamen tarayıcınızda çalışır; dolayısıyla rastgele değerler yerel olarak üretilir ve hiçbir yere gönderilmez. Bu, özel tutmayı düşündüğünüz anahtar ve simgeler için güvenli kullanım sağlar.
Kısa çizgi deseni ne anlama gelir?
8-4-4-4-12 gruplandırması yalnızca okunabilirlik kuralıdır. Kısa çizgiler hiçbir veri taşımaz; 32 onaltılık basamağı parçalara böler, böylece insanlar değerleri daha kolay tarayıp karşılaştırabilir.
