My Profile Photo

Mehmet Cem Yücel


Technical Writings.
Architecture, Security, Java, Golang, Devops, Microservices, Spring Boot, Kafka, Distributed Systems and Blockchain


UUID'yi Doğru Kullanıyor Musunuz?

Giriş

Hepimizin unique bir ID gereksinimi duyduğumuzda sığındığımız güvenilir liman UUID’ler. Peki UUID’nin 7 farklı versiyonu olduğunu ve hepsinin farklı konulara göre özel çözümler sunduğunu biliyor musunuz? Gelin birlikte inceleyelim.

UUID Kırılımları

Type Version Description
Timestamp + MAC v1 v2 v6 Zaman Damgası + MAC Adresine ek bazı bilgiler
Random v4 Tamamen Gelişigüzel
Namespace v3 v5 Namespace ve ek bir bilgi ile üretilen hash fonksiyonu örneği
Hybrid v7 Timestamp + Random kombinasyonu

Timestamp + MAC (UUID v1, UUID v2, UUID v6)

Bu versiyonlarda Zaman Damgası kullanılarak bir unique id üretilmeye çalışılır. Nanosaniye seviyesinde bile olsa dünyanın üzerinde herhangi başka bir makinede aynı zamana denk gelebilecek başka bir yaratım söz konusu olabileceği için bu ihtimali azaltmak üzere MAC adresi de eklenerek ihtimal uzayı daraltılır. Farklı versiyonlarda farklı bilgiler daha eklenir, sıralı olarak id yaratımı mümkün olabilir(v6).

Random (UUID v4)

Bu yöntemde herhangi bir input yoktur, doğrudan rastgele olarak UUID yaratımı yapılır. Bu da sıralılık avantajını kaybetmeye sebep olur. Yeterli entropi şartlarında oldukça geniş bir sonuç uzayına sahip olduğu için güvenle kullanılabilir.

Namespace (UUID v3 MD5, UUID v5 SHA-1)

Belirli bir namespace ve verilen ekstra bir input değeri ile birlikte hash fonksiyonlarından geçirilerek üretilen UUID örneğidir. Avantajı, verdiğiniz aynı input değerleri için her zaman aynı output’u üretecektir. Sıralı değildir. Dikkat edilmesi gereken nokta, yeterince geniş bir output uzayına sahipseniz kullanılan hash fonksiyonlarından sebepli verdiğiniz inputlar tahmin edilebilir hale gelecektir. Bu sebeple hassas verilerle UUID üretimi yapılmamalıdır.

Hybrid (UUID v7)

Random ve Timestamp yöntemlerinin kombinasyonu ile UUID üretimini ifade eder. Birçok modern veritabanında bu yöntem kullanılmaktadır.

Ek Detaylar

Aşağıdaki videoda ID, Unique ID, Universally Unique ID kavramlarını ve ayrıca:

  • UUID Çözüm Uzayı
  • Entropi
  • Collision
  • UUID Versiyonları Detayları
  • Farklı versiyonların kod örnekleri gibi bir çok ekstra konuyu inceledik. İlgileniyorsanız göz atabilirsiniz.

# UUID ve GUID Versiyonları Hakkında Bilmedikleriniz! Gerçekten Unique Mi, Nasıl Çalışır, Güvenli Mi?](https://www.youtube.com/watch?v=CJ_8Cd8WxyI “UUID ve GUID Versiyonları Hakkında Bilmedikleriniz! Gerçekten Unique Mi, Nasıl Çalışır, Güvenli Mi?”)

Sonuç

Farkında olmadan kullanılan hatalı versiyon UUID’ler gerek güvenlik, gerek performans gerek ise sıralılık gibi avantajları ıskalamak açılarından yazılımımızı etkileyecektir. “One Fit Size All” yaklaşımından sıyrılıp ihtiyaca yönelik yöntemi kullanmak her zaman daha doğru bir tercih olacaktır.

En yalın haliyle




May interest this topics

If you interested in Blockchain Technologies,


comments powered by Disqus