10 Soru ile SSIS’E Giriş
Herkese merhaba. Bu yazımda 10 soru ile SSIS’e (SQL Server Integration Services) giriş niteliğinde pratik bilgiler edineceğiz. SSIS, çok çeşitli veri dönüştürme ve taşıma görevlerini gerçekleştirmek için kullanılabilen bir Microsoft SQL Server bileşenidir. Kısaca ETL işlemlerini Microsoft ürün ailesinde SSIS ile gerçekleştiriyoruz.
Öncelikle aşağıda resmi bulunan geliştirme ortamındaki 4 bölümü sıra numaraları ile inceleyelim.
1. Bu alan design (tasarım) ortamımızdır. SSIS Toolbox (Araç kutusu) ile oluşturduğumuz pakete ait taskların (görevlerin) iş akışlarını burada tanımlıyoruz. Burada iki önemli arayüz olan Control Flow ve Data Flow için SSIS Toolbox bileşenleri farklıdır.
Control Flow paketlerin operasyon sırasını içerdiği için projemizin beynidir diyebiliriz. Farklı kaynaklardaki iş akışını yönettiğimiz veriyi işleme adımlarından oluşur. Çeşitli veri düzenleme tasklarından (görevlerinden) ve bu taskların biraraya gelmesiyle oluşan container bileşenlerini içerir.
Data Flow çeşitli kaynaklardan veri çekip yaptığımız dönüşüm işlemlerinden sonra hedef kaynağa yazdığımız alandır. Yani ETL işlemlerini burada gözlemliyoruz.
Parameters alanında parametre tanımlayarak paketimizi daha esnek hale getirebiliyoruz.
Event Handlers yalnızca belirli bir olay meydana geldiğinde yürütülecek görevlerin tanımlanabileceği özel kanaldır.
Package Explorer ile paketimizdeki tüm nesneleri ağaç biçiminde hiyerarşik olarak görüntüleyebiliriz.
2. SSIS Toolbox alanında control flow ve data flow’daki taskların iş akışını oluşturuyoruz. İstediğimiz bileşeni tasarım alanına sürükleyebiliyoruz. Buradaki her bir task (görev) ve dönüşüm bileşenleri belki başka bir yazımızın konusu olabilir.
3. Solution Explorer; tüm veri kaynaklarını, veri kaynakları görünümlerini, projeleri ve diğer çeşitli dosyaları görüntüleyebileceğimiz ve erişebileceğimiz bir ekrandır.
4. Connection Managers paket düzeyinde belirli bir nesneye bağlantı yapmak için kullanılır. Bu bir dosya, bir veritabanı, bir klasör olabilir. Görevler ve dönüşümler, nesneye bağlantı oluşturmak için bir bağlantı yöneticisi kullanır.
Şimdi sorularımızı soralım ve terimleri daha iyi anlamaya çalışalım.
1. Paket ne demek?
SSIS’de bir proje bir veya birden fazla paketten oluşur. Her pakette çalışacak olan taskların (görevlerin) iş akışları tanımlıdır. Daha sonra paketler belirli bir zamanlamaya göre çalıştırılır. Paketler; bağlantı (connection), görev (task), değişken (variable), event handler ve öncelik kısıtlarından (precedence constraints) oluşur.
2. Task nedir?
Görevler, bir paket kontrol akışında gerçekleştirilen iş birimlerini tanımlayan kontrol akış öğeleridir. Paket birden fazla görev içeriyorsa, öncelik akış kısıtlamaları ile kontrol akışına bağlanır ve sıralanır.
3. SSIS’i destekleyen bağlantı türleri neler?
- ODBC
- OLEDB
- Net SQLClient
- Düz bir dosya
- Excel
- XML
4. Event handlers sekmesinin rolü nedir?
SSIS olay işleyicileri, bir SSIS komut dosyasını denetlenebilir, hata koşullarına uygun şekilde tepki veren, ilerlemeyi rapor eden ve SSIS paketlerinizi izlemeye izin veren güvenilir bir sisteme dönüştürme işlerini görür. Event handlers sayesinde paketler iş akışında olaylara yanıt verecek şekilde yapılandırılabilir. Örneğin, herhangi bir görev durduğunda, başarısız olduğunda veya başladığında iş akışına müdahale edilebilir.
5. SSIS log işlemleri nasıl yapılır?
Loglama onError, onWarning gibi çeşitli olayların düz dosya, XML, SQL sunucu tablosu vb. gibi çoklu seçeneklere kaydedilmesiyle yapılabilir. Logging ile, bir paket her çalıştığında denetleme ve sorun giderme mümkün olur. Örneğin, paketi çalıştıran operatörün adını ve paketin başladığı ve bittiği zaman yakalanabilir.
6. SSIS Kataloğu nedir?
SSIS kataloğu, dağıtılan tüm paketleri uygulamak (deploy etmek) için kullanılan bir veritabanıdır. Güvenlik nedenleriyle, dağıtılan paketleri saklamak ve işlemek için yaygın olarak kullanılır. SQL Management Studio’da Integration Services Catalogs altında oluşturulurlar.
7. Oluşturduğumuz küpleri otomatik olarak nasıl güncelleriz?
Control Flow da bulunan Analysis Services Processing Task sayesinde multidimensional veya tabular küplerini güncelleyebiliriz. Genelde ETL paketlerinde önce küplerin kaynak tabloları doldurulur, ardından en sona bir tane Analysis Services Processing Task atılarak küp yeni verilerle güncellenir.
8. Container nedir ve türleri nelerdir?
Container (kapsayıcı), paketlere ve görevlere hizmet sağlayan yapıdır. Taskları (görevleri) anlamlı iş birimleri halinde gruplandırırlar. 4 farklı container (kapsayıcı) türü vardır.
- Task Host Container
- A Sequence Container
- A For Loop Container
- Foreach Loop Container
Task Host Container: Her kontrol akışı görevinin kendi konteyneri vardır.
Sequence Container: Aynı anda işlemek istediğimiz birkaç veri akışı görevimiz varsa sık kullanılır. Sequence Container, bu veri akışı görevlerini gruplandırmamızı sağlar. Kapsayıcı içinde birkaç görev paralel olarak işlenirse, SSIS paketi tüm bu görevler başarıyla tamamlanana kadar bekler.
For loop container: Görevleri birden çok kez çalıştırmayı sağlar.İstenen bir koşul karşılanana kadar aynı görevi belirli bir sayıda yürütmek için kullanılır.
For each Loop Container: Bu container (kapsayıcı); for döngüsü gibi sabit sayıda dönmez, dönme sayısı bir koleksiyon tarafından belirlenir. Örneğin bir dizindeki dosya sayısı veya tablodaki satır sayısı döngünün kaç kez döneceğini belirleyebilir.
9. Projede bulunan paketlerin çalışma sırasını nasıl ayarlayabiliriz?
Precedence Constraints (öncelik kısıtı), ile görevleri önceden tanımlanmış bir sırada yürütebiliriz. Precedence Constraints özel ifadeler kullanılarak tanımlanan iş kurallarının önceki görevlerinin sonucuna göre hedef görevlerin yürütülmesini denetler.
10. Projenin deploy (uygulanacağı) edileceği zamanı önceden nasıl belirleyebilirim?
Projeyi deploy etmekle içinde bulunan tüm paketleri çalıştırmış oluruz. Sadece bir paketi çalıştırmak istiyorsak paketin kendisine sağ tıklayıp deploy etmek de mümkün. ETL’in belirli bir zaman çerçevesinde (muhtemelen geceleri) çalışabilmesi için paketlerin planlanacağı en kolay seçenek SQL Server Agent’tır.
SQL Server Agent job sekmesi ile belirteceğimiz projenin tetiklenmesi için schedules (zamanlama) sekmesini kullanarak günlük, haftalık, aylık tanımlamalar yapabiliriz. Hatta paketleri yalnızca bir kez çalışacak şekilde zamanlayabiliriz.
Evet arkadaşlar bu yazımda 10 soru ile SSIS’e giriş düzeyinde sorular yanıtlayarak uygulamayı tanımış olduk. Bir sonraki yazımda görüşmek üzere.
Kaynakça