MySql UUID Kullanımı

MySql sunucusu üzerinde otomatik üretilen ve eşsiz rakam-harf karışık(hexadecimal) bir ID ye ihtiyacımız olduğunda mysql’in UUID() honksiyonunukullanırız.

Bu fonkisyon bize "90mur931-5f08-59r7-20ag-34ams0211985" şeklinde benzersiz(unique) ve rakam-harf karışık(hexadecimal), 36 karakter, 128bit uzunluğunda bir id üretir. Bu ID’yi otomatik şifre atamalarından tutun, database lerimizde birincil anahtar(primaryKey) olarak kullanabileceğiniz bir çok yer vardır.

 Örnek kullanım: 

SELECT UUID();

Çıktı: 


Yukarıdaki id’nin 36 karakterini değilde belirli bir kısmını kullanmak isterseniz aşağıdaki örneklerden faydalanabilirsiniz.

UUID’nin soldan 8 karakterini kullanmak isterseniz aşağıdaki komutu kullanabilirsiniz.

SELECT LEFT(UUID(),8) 'UUID()';

Çıktı: 

UUID’nin sağdan 12 karakterini kullanmak isterseniz aşağıdaki komutu kullanabilirsiniz.

SELECT RIGHT(UUID(),12) 'UUID()';

Çıktı: 


Üretilen UUID’nin içindeki “-” ortadan tire karakterini kaldırmak isterseniz aşağıdaki komutu kullanabilirsiniz.

SELECT  REPLACE(UUID(),'-','')

Çıktı: 


UUID’yi yukarıdaki kullanmak çok büyük yapılarda performan sorunlarına yol açabilir. Bu sorunu ortadan kaldırmak için önerilen yöntem UUId yi database de “BINARY” tipinde saklamaktır.
yapılması gereken işlemler sırasıyla şunlardır.

– Önce üretilen uuid’deki “-” işaretini yukarıdaki yöntemle kaldırın ve id yi 32 karaktere düşürün.

– Sonra uuid’yi database de tutacak alanı hazırlayalım. Yukarıda belirttiğimiz gibi uuid’yi “BINARY” tipinde saklayacağız ancak mySql’de “BINARY” nin 8 bitlik bir kapasitesi vardır ama bizim 128bit lik alana ihtiyacımız var. (8bit*16 = 128bit) Bu yüzden “BINARY(16)” olarak alan tanımı yapacağız.

– Daha sonra kayıt ekleme (insert) işlemi aşağıdaki gibidir.

INSERT INTO TableName (bin16UuidAlani) VALUES (UNHEX(REPLACE(UUID(),'-','')))

– Database’e attığımız UUID’yi sorgulamak/görmek istersek aşağıdaki komutu kullanırız.

SELECT HEX(bin16UuidAlani) AS FieldBin FROM TableName 

Bu yazı

tarihinde

tarafından oluşturulmuştur.

Yazı kategoris :

Etiketler :


Yorumlar

Yorum bırakın