UUID Nedir?

UUID (Universally Unique Identifier)16 byte uzunluğundadır, beş karakter grubundan oluşan 32 hexadecimal karakter (veya 128 bit uzunluğunda), çizgi karakteri ile ayrılmış olduğundan toplamda 36 karakter ile temsil edilir. Sadece sayılardan değil harflerden de oluştuğu için veritabanlarında string olarak saklanmaktadır. Diğer ismi GUID’dir (Globally Unique Identifier). Formatı RFC 4122‘ye göre belirlenmektedir.

6F9619FF-8B86-D011-B42D-00C04FC964FF  
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
  • Yukarda M olarak verilen karakter UUID versiyonunu verir, bu durumda UUID versiyonu D’dir.
  • N değeri de UUID varyant değerini verir, bu durumda UUID varyant değeri B’dir.

Kullanıldığı yerlerden bahsedelim.

Normalde index olarak artan 0-1-2-3-4… integer sayıları kullanılır. Fakat bunun yerine UUID’de kullanılabilmektedir. Kullanıldığı durumlar farklılık göstermektedir.

Örneğin elimizde iki farklı veritabanında sipariş tablolarımız olsun ve satırları merge etmek istiyoruz. Normal artan index kullansaydık reindex işlemi yapmamız gerekecekti fakat bu tablolarda indexleme olarak UUID kullandıysak reindex işlemine gerek kalmadan direkt iki tabloyu da hemencecik orada merge edebiliriz.

Veya bir desktop uygulama üzerinde takımca sürekli aynı türden içerik oluşturulduğunu düşünün. Siz buraya yeni bi içerik/satir ekleyeceksiniz. Offline iken eklediğiniz satır online olduğunuzda ana tabloya yazılmaya başlanacak, bu durumda takımdaki diğer insanların eklediği yeni satırların index değerleriyle çakışmaması için tabloda incremental index kullanmak yerine UUID indexlemesi kullanılması daha mantıklı olmaktadır.

Bunun dezavantajı da var tabii ki. Biri diskteki boyutu diğeri ise index scan hızı.

Normal incremental index integer değer olarak tabloda saklanırken string UUID 36 karakter olarak olarak saklanır. MongoDB’de bunun iyileştirmesi yapılmış olup 16 byte olarak kompakt binary formatında saklanmaktadır.

Incremental index’te index scan işlemini O(1) complexity’sinde gerçekleştirebilirsiniz, yeni bi satır eklemek istediğiniz zaman son index’in üstüne 1 eklersiniz yeni satırın index değeri hızlıca oluşturulmuş olur. Fakat UUID’de durum bu şekilde olmadığı için index scan işlemi daha uzun sürecektir.

Veritabanınız dağıtımlı bi yapıdaysa veya daha sonradan dağıtımlı bir yapıya kavuşturma niyetiniz varsa UUID ile indexlemeniz daha mantıklı olacaktır. NoSQL bir veritabanınız scale-up olurken birden fazla sunucuya dağıtımı gerçekleşiyorsa UUID’nin kullanımı burda oldukça mantıklı olacaktır. Bu durumda performansı artırmak için uygun yöntemler uygulanabilir.

SQL Server’da NEWID fonksiyonu kullanılarak yeni UUID değerleri oluşturulabilir.

-- Creating a local variable with DECLARE/SET syntax.  
DECLARE @myid uniqueidentifier  
SET @myid = NEWID()  
PRINT 'Value of @myid is: '+ CONVERT(varchar(255), @myid)  

Output:

Value of @myid is: 6F9619FF-8B86-D011-B42D-00C04FC964FF 

Should you use UUID?

NEWID

Python UUID

Leave a Reply

Your email address will not be published. Required fields are marked *