Veri ambarı tasarımında fazladan joinler elinizi yakar


Bir veri ambarı tasarımında fact tablolarınız ve boyut tablolarınız olur.

Boyut tabloları, tüm yapı için aynı olmalıdır. Mesela ürün boyut tablosunu ele alalım: Üretim için ayrı bir ürün boyut tablosu, finans için ayrı bir ürün boyut tablosu, pazarlama için ayrı bir ürün boyut tablosu…. ihtiyacınız varsa, iş zekası uygulamanız çöpe doğru gidiyor demektir. Çünkü bir ürünün bölümler arasında karşılaştırması gibi kesinlikle istenen bir şeyi yapmanız çok zorlaşacaktır. Mesela pazarlama kampanyaları ile ürün üretimleri arasında bir korelasyon kuramazsınız!

Şimdi gelelim asıl konumuz olan joinlere.

Normal şartlar altında bir boyutun tek bir tablo olması gerekir. Birden fazla tablo (snowflake dimension) olarak tasarlarsanız, fazladan joinler katmış olursunuz. Oysa boyutlar toplam alanın çok az bir kısmını kaplarlar, birden fazla tabloya bölerek kazandığınız alan ihmal edilebilirdir. Aynı verinin birden fazla yerde update edilmesi sorunu da burada bu kadar büyük değildir. Çünkü yine normal şartlar altında veri ambarını update eden, sadece sizin veri aktarım paketlerinizdir. Başka bir erişim yoktur.

Veri ambarındaki joinlerle ilgili bir başka konu da, bir boyutla bir fact tablosu arasında bütünleşik bir anahtar üzerinde ilişki kurmanın sakıncalı olmasıdır. Böyle bir durumda performans açısından bir sakınca oluşturmuş olursunuz. Bunun yerine boyut tablosuna surrogate bir anahtar atamak çok daha mantıklı olacaktır.

Kafanızı karıştırabilecek bir durum, SQL 2005’in getirdiği ‘role playing dimension’ kavramıdır. Bu, özel bir durumdur ve bir önceki paragrafta anlattığım durumla ilişkisi yoktur. Role playing dimension’da, bir boyut bir fact tablosuna birden fazla açıdan bakış sağlar. Mesela satışlarla ilgili bir fact tablosunda, sipariş tarihi, fatura tarihi, sevk tarihi diye 3 alan olduğunu düşünün. Role playing dimension sayesinde bunların üçünü de tek bir zaman tablosuna bağlarsınız ve sanki 3 ayrı boyut üretmiş gibi olursunuz. Burada, bütünleşik anahtar kullanımı sözkonusu değildir.

Bu yazı Genel içinde yayınlandı ve olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s