SQL Server Analysis Services (SSAS), verilerinizi iş zekası (BI) raporlaması için optimize edilmiş, yüksek performanslı bir yapıya dönüştüren çok boyutlu bir veri analiz motorudur. Bir DBA olarak bu yapıyı, veriyi sadece saklayan değil, karar destek mekanizmasına dönüştüren bir katman olarak düşünebilirsiniz.
SQL Server Database Engine (OLTP) satır tabanlı çalışırken, SSAS sütun tabanlı (Tabular) veya önceden hesaplanmış (Multidimensional) bir yapı sunar.
Hangi durumlarda ihtiyaç duyulmaktadır:
- Milyonlarca satırlık veride “Yıllara göre toplam satış” gibi sorgular OLTP’de dakikalar sürerken, SSAS’te milisaniyeler sürer.
- Karmaşık hesaplamaları (KPI, YTD – Year to Date vb.) SQL ile yazmak yerine SSAS üzerinde bir kez tanımlayıp her raporlama aracında (Power BI, Excel) kullanabilirsiniz.
- Raporlamada herkesin aynı metriği görmesini sağlar.
Eğer kullanıcı “Excel’de pivot yaparken çok bekliyorum” veya “Raporlarım çok yavaş, tarih bazlı kırılımları anlık göremiyorum” diyorsa, SSAS kurmanın vakti gelmiş demektir.
SSAS’i mevcutta bulunan sql server üzerine kurmak teknik olarak mümkündür ancak production ortamlarında tavsiye edilmez.
- Neden ayrı bir sunucu dersek SSAS, özellikle Tabular modelde veriyi RAM üzerinde tutar (In-Memory). SQL Server Engine ile aynı RAM’i ve CPU’yu paylaşması, her iki servisin de performansını darboğaza sokar.
- Eğer test aşamasındaysanız mevcut kurulum üzerinden devam edebilirsiniz. Ancak kurumsal bir yapıda ayrı bir Instance olarak kurmak, kaynak yönetimini (Resource Governance) çok daha sağlıklı yapmanızı sağlar.
Not: Kurulum işlemine başlamadan önce .NET Framework en son sürümünü güncellemeniz faydalıdır.
Sunucumun içerisine kopyalamış olduğum sql server’ı açıyorum setup dosyasına sağ tıklayıp yönetici olarak çalıştırıyorum.

Önümüze gelen ekranda installation bölümünde New SQL Server stand-alone installation or add features to an existing installation kısmına tıklıyorum.

Aşağıdaki ekranda ekranda specifiy a free edition veya elimizde herhangi bir lisans varsa enter the product key bölümünü seçiyoruz. İlk başta resimdeki bölümlerin ne işe yaradıklarına değinelim.

- Evulation: 180 gün boyunca tüm özellikleri kullanacağımız bir yapı olarak karşımıza çıkmaktadır.
- Express: SQL Server’ın kısıtlı sürümünü kurmanızı sağlar. Database boyutu olarak en fazla 10 Gibabyte’a kadar desteklemektedir.
- Developer:Geliştirme ve öğrenme süreçleriniz için ücretsiz sunulan Enterprise versiyonu özelliklerini taşıyan sürümdür. Sürekli kullanacağımız bir sürüm.
Benim elimde bir lisans anahtarı olduğu için enter the product key bölümünü seçip next deyiyorum.

Gelen ekranda I accept the license terms diyiyoruz ve next deyip bir sonraki adıma geçiyorum.

Bir sonraki ekranda Use Microsoft Update to check for updates seçeneğini seçmeyip next deyip ilerliyorum. Güvenlik ve diğer kapsamlarda yer alan güncellemelerin kontrolünü gerçekleştirerek kurulum sürecine dahil edilmesini istiyorsak bu adımı onaylamamız gerekiyor. Kurulum sırasında herhangi bir güncelleştirme varsa bunlarında güncelleştirilmesini istermisiniz seçeneğini seçmeyip ilerliyorum.

Aşağıdaki ekranda herhangi bir değişiklik yapmayıp Next deyip ilerliyorum.

Gelen ekranda kurulum için başlangıç adımlarının doğru yapılıp yapılmadığına dair özet bir ekran geliyor. Uyarı verilen veya çarpı işareti gördüğümüz yerler için özel önlem alıp düzenleme yapabiliriz bende herhangi bir sorunla karşılaşmadığım için Next deyip ilerliyorum.

Asıl bizim için önemli olan sql server yapısının şekillendiği aşağıdaki bölümde ihtiyaçlarınıza göre seçim yapmak gereksiz olan sunucularınızda kullanmayacağınız özelliklerin seçilmemesi gerekmektedir.
Burada karşımıza instance features kısmı ve shared features kısmı gelmekte.
İnstance features kuracağımız her instance için teker teker ayarlamalarımız yaptığımız kısım ama shared features kısmı ise her instance’da ortak bulunmasını istediğimiz alan bu tamamen sizin sistemdeki ihtiyaçlarınıza göre şekillendirmeniz gereken bir yer.
Herhangi bir instance features kısmında herhangi bir özelliğe tıkladığımızda sağ üst tarafta açıklaması gözüküyor.
Analysis Service: OLAP (Online Analytical Processing) tipi sistemler için gereklidir.
Eğer verileriniz başka bir sunucudaki SQL Server’da, Oracle’da veya Azure üzerindeyse, SSAS sunucusuna Database Engine kurmanıza gerek yoktur. Ancak, SSAS veriyi çekmek için bir “kaynağa” ihtiyaç duyar. Bu kaynak uzak bir sunucu olabilir.
Ben sadece OLAP kurulumu yapacağım için sadece Analysis Services bölümünü seçerek ilerliyorum.

İnstance root directory Analysis Services kurulumunun yapılacağı disk yer alıyor.
Next deyip bir sonraki ekran geçtiğimizde önümüze Analysis Services için kurulacak instance‘ın default instance adımı yoksa bizim belirlediğimiz özel bir instance adımı olması gerektiğini söylüyor biz burada named instance seçeneğini seçerek işlemlerimizi yapacağız.

Aşağıdaki ekranda Analysis Services yapısının servis hesabının olduğu ve hangi dil yapısına göre işlemleri yapacağı Collation yapısı görülmekte ihtiyaçlarına göre seçim yapıp Next denildikten sonra bir sonraki aşamaya geçilir. SQL Server Analysis Services kısmında servis hesabı local bırakılmayıp active directory tarafında oluşturulan bir user’da seçilebilir.

Aşağıdaki bölüm Analysis Services’in hangi mimariyle çalışacağını belirler. Bir kez kurduktan sonra bu modu değiştiremezsiniz (değiştirmek için servisi kaldırıp tekrar kurmanız gerekir).
- Multidimensional and Data Mining Mode: Klasik “küp” yapısıdır. Daha karmaşık hesaplamalar ve çok büyük veri setleri için kullanılır. MDX dilini kullanır.
- Tabular Mode: Modern ve daha hızlı olan moddur. Verileri bellek içinde (in-memory) tutar (xVelocity motoru). Power BI ve Excel ile çok uyumludur ve DAX dilini kullanır. Günümüzde en çok tercih edilen moddur.
- PowerPivot Mode: SharePoint ile entegre çalışan yapılar için kullanılır.

Data Directories kısmı veri dosyalarının nerede tutulacağını göstermektedir. Next denilip bir sonraki aşamaya geçilir.

Özet ekranı görüp inceledikten sonra install deyip kurulum işlemlerime başlanır.

Başarılı bir şekilde kurulduğunu görmüş oldum.

Aşağıdaki bölümden kurulumunu yaptığımız Analysis Services kısmına girilmektedir.

Gelen ekranda Next denilip bir sonraki aşamaya geçilir.

Aşağıdaki ekran resmi, Analysis Services Deployment Wizard (Dağıtım Sihirbazı) aracılığıyla hazırladığınız bir projeyi sunucuya canlıya almak (deploy etmek) istediğiniz aşamadır

Database file kutucuğuna, projenizin derlenmiş halini içeren dosyayı göstermelisiniz.
- Eğer bir Tabular Model projesi üzerinde çalışıyorsanız, dosya uzantısı genellikle .asdatabase olur.
- Eğer Multidimensional (Çok Boyutlu) bir proje ise, yine aynı uzantılı dosyayı arayacaktır.
Bu dosya genellikle Visual Studio (SQL Server Data Tools – SSDT) projenizi “Build” (Derleme) ettiğinizde oluşur. Proje klasörünüzün içindeki şu yolu kontrol edebilirsiniz: …\ProjeKlasoru\bin\
SSMS üzerinden Analysis Services’e giriş yapılabilir.

Başarılı bir şekilde giriş yapılır.

Bu makalede Analysis Services’ın kurulumunu görmüş olduk. İlerleyen aşamalarda bu yapıla ile ilgili visual studio ortamında herhangi bir proje hazırlanırsa veya raporlama ortamında herhangi bir kullanıcı veritabanına nasıl bağlanır gibi adımlar gelmiş olacaktır.
Not: Günümüzde SQL Server içinde “dahili” OLAP performansı dendiğinde akla gelen ilk yapı Clustered Columnstore Index‘tir. Klasik satır bazlı (Rowstore) indexlerin aksine veriyi sütun bazlı saklar. Aynı sütundaki veriler benzer olduğu için muazzam bir sıkıştırma sağlar. Verileri satır satır değil, paketler halinde işleyerek CPU verimliliğini artırır. Sorguda kullanılmayan sütunlar ve ilgili olmayan veri blokları (segmentler) tamamen atlanır.
SSAS (Analysis Services), verileri bir ilişkisel veritabanından (genellikle SQL Server) çeker. Veriler henüz SSAS’e gitmeden önce kaynak veritabanında indexleme yapılması şu açılardan kritiktir: SSAS, verileri “Process” ederken SQL Server’a SELECT sorguları gönderir. Eğer kaynak tablolarda uygun indexler (özellikle Clustered Columnstore Index veya Join yapılan kolonlarda B-Tree indexler) yoksa, verinin SSAS’e aktarılması saatler sürebilir. Eğer SSAS Tabular modelde verileri kendi içine çekmiyor, doğrudan SQL’e soruyorsa (DirectQuery), tüm performans SQL Server üzerindeki indexlere bağlıdır.
SSAS İçinde (Veriler Alındıktan Sonra) Yapılan Yapılandırma
Veriler SSAS tarafına “Process” edilip alındıktan sonra, klasik anlamda bir SQL indexi oluşturulmaz. Ancak SSAS, kendi performans yapılarını veri aktarımı bittikten sonra oluşturur:
- Multidimensional Model (MOLAP) için: Veriler alındıktan sonra SSAS üzerinde Aggregations (Özetlemeler) tasarlanır ve oluşturulur. Bu özet tablolar, OLAP’taki “index” kavramının karşılığıdır. Bunlar veriler küpe yüklendikten sonra hesaplanıp diskte saklanır.
- Tabular Model için: Veriler SSAS belleğine (In-memory) alındığı anda VertiPaq motoru veriyi sıkıştırır ve kendi sözlük dizinlerini (Dictionaries) ve segmentlerini otomatik olarak oluşturur. Burada manuel bir “index oluştur” komutu yoktur; modelin tasarımı (ilişkiler ve kolon tipleri) bu yapıyı belirler.
Doğru yaklaşım her iki tarafta da işlem yapmaktır:
- Önce Kaynakta: Verilerin SSAS’e hızlı akabilmesi için SQL Server tarafındaki tablolara (özellikle Data Warehouse/Mart yapısındaysa) Columnstore Index veya büyük tablolar için Partitioning uygulanır.
- Sonra SSAS’te: Veriler içeri alındıktan sonra SSAS’in kendi iç mekanizmaları (Aggregation Design veya Tabular Hierarchy/Encoding) devreye girer.
Kritik Fark: Eğer verileriniz çok büyükse ve SQL tarafında index yoksa, SSAS veriyi çekmeye çalışırken zaman aşımına (timeout) uğrayabilir veya kaynak sunucuyu kilitleyebilir. Bu yüzden performans optimizasyonu her zaman kaynak veritabanından (Source) başlar.
Başka makalede görüşmek dileğiyle..
Gıybet etmeyin. Hucurat-12
