Cardinality terimi sayısallık, asallık ya da önemlilik çevirisiyle mi kullanılmalı tam bilemiyorum. Bunun tam karşılığının ne olduğunu bu yazıyı tamamlayınca ya da zihnimde netleşince karar verebileceğim sanırım.
Cardinality veri tabanlarında iki ayrı bağlamda kullanılıyor. Veri modellemede tabloların ilişkilerinden bahsederken, sorgu optimizasyonunda benzersiz kayıtlardan bahsediyordur. Daha detaylı bakarsak;
Birinci olarak veri modelleme (tasarım) açısından bir tablo sütununda kaç farklı değer olduğunun ifadesidir. Veri tabanı tasarlarken yani modellerken göz önünde bulundurulması gereken önemli bir performans unsurudur. Bu kardinalite ilişkisel kardinalitedir. Tablolar ilişkilendirilirken ilgili alandaki verilerin arasında ilişki tasarlanır, bu ilişkinin bire – bir, bire – çok ya da çoka – çok niceliğini ifade edilmesine relationship cardinality denilir.
İkinci olarak sorgu optimizasyonunda ne anlama geliyor. Matematikte kardinalite bir dizedeki ya da kümedeki sayıların niceliğidir. Veri tabanına gelince bu anlam biraz farklılaşır; bir tablo sütunundaki farklı değerlerin sayısının tablonun satır sayısına göre niceliğidir. Tekrar eden değerler sayılmazlar.
Bu durumda cardinality yüksek ya da düşük olarak ifade edilebilir. Bir örnek ile açıklamak gerekirse;
Örnek tablo üzerinden kardinaliteyi inceleyelim. Ürün Numarası (Ürün ID) sütunu her ürün için benzersiz bir değer sakladığı için high cardinality’dir. Kategori sütununda kategoriler satır sayısına oranla tekrar edebileceği için medium cardinality’dir. Ürün sütunu ise bir ürünün bir çok desen ve rengiyle her biri benzersiz isimlendirileceği için yine high cardinality olacaktır.
Cardinality performans için çok önemli bir etkendir çünkü sorgu planlayıcısını doğrudan etkiler. Sorgu planlayıcısı sütun istatistiklerini inceleyerek bir sorgunun kaç değerle eşleşeceğini ve diğer sonuçları bulmak için kullanacaktır. Bulduğu sonuçlara göre sorgu işletme planı oluşturacaktır ki bu da sorgu performansını belirleyecektir.
Kaynaklar:
0 Yorum