-

Günlük Veri Tabanı ve Veri Ambarı Karşılaştırması

Bu yazıda operasyonel (günlük) veri tabanından çekilen rapor ile Veri Ambarı’ndan çekilen rapor arasındaki performans farkını örnek senaryolar kullanarak ortaya çıkarmaya çalışacağız. Bu işlem için benzer sonuçlar üreten 2 rapor örneği kullanacağız. İki rapordan ilkinde veri kaynağı olarak günlük veri tabanı kullanılırken, ikinci rapor örneğinde veri kaynağı olarak Veri Ambarı kullanıyoruz.

1.Rapor: Bu uygulama örneğinde Microsoft’un ücretsiz kullanıma sunduğu AdventureWorks veri tabanı kullanılmıştır. Rapor senaryosunda AdventureWorks şirketinin satışlarına ay, yıl ve çalışan filtresi verilmiştir. Örnek senaryo için AdventureWorks2012 veri tabanını veri kaynağı olarak ekliyoruz. Bu aşamada daha önce oluşturulup paylaşılmış veri tabanları da kullanılabilir. Aşağıdaki şekillerden yeni paylaşımlı veri kaynağının nasıl eklenebileceği görülebilir, sunucuya bağlanarak kullanılacak veri tabanı bilgileri seçilir.

rapor1

rapor2

 

Devamında eklenen veri kaynağından oluşturulmuş veri kümelerine ihtiyaç duyulur. Veri kümeleri oluşturulurken çalışan, ay, yıl, satılan ürünlerin miktarı, kategorisi ile ilişkili olan tablolar düşünülmelidir. Bu senaryo örneğinde 2 adet veri kümesi kullanılmıştır.

Rapor kullanıcısından filtre amaçlı, çalışan seçilmesi isteneceğinden çalışan adı ve ID değerini içeren bir koleksiyona ihtiyaç duyulmaktadır. Satış yapan çalışan bilgilerini içeren veri kümesini oluşturmak üzere aşağıdaki Sql sorgusu kullanılmıştır;

sql1Rapor filtrelerini oluşturmak amacı ile parametre eklememiz gerekmektedir. Bu senaryoda yıl, ay ve çalışan filtreleri olduğundan her biri için parametre eklenmesi gerekmektedir.

İkinci veri kümesi için ürünün kategorisi ve yapılan satışlar ile ilgili tablolardan bilgiler alınmalıdır. EmpSalesMonth ismindeki veri kümesini oluşturan Sql sorgusu aşağıdaki gibidir;

sql2

Sql sorgusundaki where clause’da yer alan @ReportYear, @ReportMonth, @EmployeeID parametreleri kullanıcı arayüzünden aşağıdaki gibi seçilen değerler ile dolar.

rapor3

Veri kümesinin eklendiği ekran görüntsü aşağıdaki gibidir. Bu ekranda kullanılacak veri kaynağı seçilir ve Sql sorgusu query bölümüne eklenir. Veri kümesinin Sql sorgusu query designer, text form veya stored procedure olarak eklenebilir.

rapor4

 

Parametreler seçildiğinde David Campbell ismindeki çalışanın Kasım 2005, 2006, 2007 yıllarında farklı kategorilerde yapmış olduğu satış miktarlarını ve oranlarını gösteren sonuçlar tablo ve grafik olarak aşağıdaki şekilde verilmiştir. Çıkan sonuçlarda çalışanın farklı yıllarda yaptığı Aksesuar (Accessories), Bisiklet (Bikes), Giyim (Clothing), Parça (Components) kategorileri için toplam satış miktarları grafiksel olarak ve aynı zamanda rakamsal olarak verilmiştir.

 

rapor5
2.Rapor:
İkinci rapor örneği için benzer sonuçlar üreten raporu oluşturmak üzere Veri Ambarı veri kaynağı olarak eklenir. Bu örnek için AdventureWorksDW2012 ismindeki veri kaynağı eklenir.

Çalışan bilgilerini veren veri kümesi aşağıdaki Sql kodu ile oluşturulmuştur;

Sql3

 

 

 

 

İlk rapor örneği ile karşılaştırdığımızda çalışan bilgilerini almak için tek tablo kullanmıştır.

EmpSalesMonthDW ismindeki ikinci veri kümesi için aşağıdaki Sql sorgusu kullanılmıştır;

sql4

Veri Ambarı’ndan oluşturulan veri kümesinde operasyonel veri tabanından oluşturulan veri kümesinekıyasla daha az tablo kullanılmıştır. Satış ile ilgli işlemler için FactResellerSalestablosu kullanılmıştır. Hareket (fact) tablosu ürün, kategori, tarih ve çalışan gibi bilgilere ulaşmak üzere sabit (dim) tablolarına bağlanmıştır.

İki Raporun Karşılaştırılması

iki senaryo örneği karşılaştırılırken kullanılan ana veri kümeleri EmpSalesMonth ve EmpSalesMonthDW’u oluşturulan scriptler Sql Server Management Studio’da çalıştırılmıştır, bu sorguların performansını ölçmek için Microsoft Sql Server eklentisi olan Sql Statistics (Sql istatistik) ismindeki araç kullanılmıştır. Sql Statistics özelliği aktive edildikten sonra çalıştırılan sorgularda sorgu sonucu ile birlikte istatistiki veriler de elde edilir.

Sql Statistics ismindeki araç kullanılarak sorgular 5’er kere çalıştırılmıştır, kullanılan araç sayesinde harcanan süreler kayıt altına alınmıştır.Aşağıdaki Tablo 1 ve Tablo 2′de  iki rapor için çıkan sonuçlar görülebilir. Sorgular her çalıştırıldığında farklı zaman harcanmıştır, ancak ortalama zamanlar düşünülerek karşılaştırma yapılacak olursak; Veri Ambarı’ndan çekilen sorgu operasyonel veri tabanından çekilen sorgunun ortalama toplam işletim (average total execution time) süresi 3 kattan fazla daha hızlı yanıt vermiştir. Sunucudan gelen cevap süresi de Veri Ambarı’ndan 4 katdan fazla daha hızlıdır. İki yöntem arasında açık bir performans farkı bulunmaktadır.

Tablo 1: EmpSalesMonth oluşturan sorgunun milisaniye cinsinden çıkan sonuçları.

Channels 5.Deneme 4.Deneme 3.Deneme 2.Deneme 1.Deneme Ortalama
Client processing time 355 219 594 752 156 415.2
Wait time on serverreplis 1752 1602 1720 6371 1437 2576.4
Total execution time 2107 1821 2314 7123 1593 2991.6

 

Tablo 2: EmpSalesMonthDW oluşturan sorgunun milisaniye cinsinden çıkan sonuçları.

Channels 5.Deneme 4.Deneme 3.Deneme 2.Deneme 1.Deneme Ortalama
Client processing time 15 125 47 47 94 65.6
Wait time on server replies 703 671 734 601 640 669.8
Total execution time 718 796 781 648 734 735.4

 

Kaynaklar:

[1]   .AdventureWorks Sample Reports 2008 R2, http://msftdbprodsamples.codeplex. com / releases/view/89245, [Ziyaret tarihi:10 Mayıs 2015].

[2]   AdventureWorks website sample, https://msfteeprodsamples.codeplex.com/ wikipage?title=SS2008!Readme_Storefront, [Ziyaret tarihi:25 Nisan 2015].

Your email address will not be published. Required fields are marked *

*