GUID Kavramı ve SQL Server’da GUID Kullanımı

GUID (Global Unique Identifier), global olarak benzersiz olarak üretilen 128 bit uzunluğunda bir veridir. GUID terimi, UUID (Universal Unique Identifier) standardının Microsoft Windows platformuna adapte edilmiş versiyonuna verilen isim olsa da Oracle Database, Openview, dBase gibi birçok yazılım ve veritabanı platformu da aynı isimlendirmeyi kullanmaktadır.

128 bitlik GUID verisi, 8-4-4-4-12 şeklinde bir gruplandırma ile 32 karakterlik hexadecimal kod olarak gösterilir. Örnek bir GUID verisi “3F2504E0-4F89-11D3-9A0C-0305E82C3301” şeklindedir.

Bir GUID verisi RFC 4122’de belirtilen algoritmaya göre beş farklı şekilde üretilebilir. Bu algoritmaya göre herhangi bir kişi bir GUID üretebilir ve benzersizliğin garantisi için merkezi bir otoriteye ihtiyaç duyulmaz. İki farklı GUID’nin aynı olma olasılığı matematiksel olarak tamamen sıfır olmasa da çok düşük bir olasılıktır. Örnek olarak %50 ihtimal birbirinin aynısı olan iki GUID oluşturmanız için 2,71 quintillion (milyon x milyon x milyon) GUID oluşturulmuş olması gerekiyor.

GUID Kullanım Yerleri

GUID verisi yazılım dünyasında farklı amaçlarla kullanılabilmektedir.

Bu kullanım alanları dışında GUID kullanımının bazı dezavantajları da bulunmaktadır. Birincisi veritabanında daha fazla alan kullanırsınız. GUID olarak tuttuğunuz veritabanı kolonları INT veya BIGINT tipinde tutacağınız kolonlardan daha fazla disk alanı kullanacaktır. Bunun dışında GUID tipindeki alanları Primary Key veya Foreign Key olarak belirlediğiniz takdirde bu alanlar diğer sayısal veri tipleri gibi indekslenemeyeceği için performans problemleri ortaya çıkacaktır. Bu problemin çözümü için sıralı bir şekilde GUID oluşturulmasını sağlayan Sequential GUID yapısı geliştirilmiştir.

SQL Server’da GUID Kullanımı

SQL Server’da NEWID() fonksiyonu ile GUID üretebiliyoruz. Fonksiyonun kullanımı SQL’de oldukça kolaydır. Fonksiyon her çalıştığında farklı bir GUID üretecektir.

SQL Server 2008 versiyonundan itibaren desteklenmeye başlanan NEWSEQUENTIALID() fonksiyonu ile sıralı GUID oluşturma imkanı sağlanmaktadır. Bu fonksiyon sayesinde GUID verisi içeren kolonların indeks olarak kullanılması durumunda ortaya çıkan performans problemlerinin önüne geçilebilmektedir. NEWSEQUENTIALID fonksiyonunun sadece Default Constraint olarak kullanılmasına izin verilmektedir. NEWID fonksiyonu gibi SELECT ile birlikte kullanılamaz. SELECT ile kullanılmaya çalışıldığı zaman aşağıdaki gibi bir hata mesajı alınacaktır.

Yeni bir tablo oluşturulurken NEWSEQUENTIALID varsayılan fonksiyonu ile oluşturulan key alanı tabloya yeni kayıtlar eklendikçe otomatik olarak sıralı şekilde artacaktır.

SQL Server’a benzer şekilde diğer veritabanı yönetim sistemleri ve programlama dillerinde GUID üreten fonksiyonlar bulunmaktadır.

Exit mobile version