UUID (GUID) Nedir ve Neden Kullanılmalıdır?

Öncelikle UUID (universally unique identifier) ve GUID (globally unique identifier) arasındaki ifade kargaşasını bir çözelim. GUID, Microsoft sistemlerde UUID’nin uygulanmasında kullandığı bir terimdir. Yani UUID ve GUID farklı şeyler değildir.

UUID hexadecimal 32 karakterden oluşur, 128bit (16bayt) değere sahiptirler, 4. sürümde d1fdf61e-0ab5-433d-9b19-de09425b1e46 gibi 36 karakter çıktıları mevcuttur. Kabaca benzersiz olduğunu varsayabiliriz fakat değildir. Ayrıntılı bilgi için towardsdatascience.com/are-uuids-really-unique-57eb80fc2a87 inceleyebilirsiniz. Daha ayrıntılı bilgi için: tools.ietf.org/html/rfc4122

Bu noktaya kadar özetlemek gerekirse; int değere sahip IDler yerine tercih edilebilecek yeni nesil ID formatıdır.

Dikkat! Her UUID formatında çıktı sunan kütüphane UUID standartları doğrultusunda hazırlanmamış olabilir. (Örn: Kullandığınız kütüphane Timestamp alıp, rastgele kendine özgü algoritmalar kullanarak karakter üretiyordur, MAC ve CPU Clock Sequence içermiyordur vs. işte bu durumda başınız ağrıyabilir. Bu nedenle UUID standartlarına uygun hazırlanmış, herkes tarafından tercih edilmiş, güvenilir kütüphaneleri tercih etmelisiniz.)

Peki neden kullanmalıyız?

  • Tahmin edilmesi çok zordur bu nedenle Brute Force vb. güvenlik endişelerinden bizi kurtarır.
  • Genellikle benzersiz olmasını garanti etmek için ekstra efor sarfetmemiz gerekmez. (Unique indeks vb. uygulamalar)

Örnek
Mevcut projelerde user/show/1 şeklinde istek kabul ederken user/show/2, user/show/3 … şeklinde yalnızca URI içeriğini değiştirerek basit bir crawler ile site içeriğimiz alınabilirdi fakat user/show/d1fdf61e-0ab5-433d-9b19-de09425b1e46 gibi UUID kullanmamız halinde böyle bir durum söz konusu olamayacaktır.