15 Ağustos 2008 Cuma
SQL Server 2008 Yenilikleri - 2 (Central Management Server
Central Management Server ile birden çok SQL Server’ı(veya instance’leri) merkezi bir SQL Server 2008 altında birleştirerek (register ederek), merkezi lokasyondan multiserver(çoklu sunucu) sorgular çalıştırabilirsiniz.
Bu işlemi gerçekleştirmek için kurulu herhangi bir SQL Server 2008’i Configuration Server(multiserver query’lerin çalıştırılacağı server) olarak belirlemeniz gerekiyor. Bunun için Configuration Server olarak belirlenen merkezi SQL Server 2008’i Register etmeniz gerekmektedir. Register etmek için ViewàRegistered Server penceresini açalım. Açılan pencere içerisinde ki Database Engine sekmesini genişletelim. Böylece Central Management Server menüsüne ulaşmış olduk. Central Management Server üzerinde mouse’un sağ butonu ile açılan kısayol menüsünden Register Central Managemet Server komutunu vererek register işlemini başlatmış oluruz.
Açılan pencereden register edilecek server’ı ve authentication tipini belirledikten sonra, Test butonunu tıklayarak işlemin başarılı olup olmadığını kontrol edebilirsiniz. Save butonunu tıklayarak register işlemini tamamlayalım. Ben TSAHINER/IZMIR adlı sunucumu(instance) Configuration Server olarak register ettim.
Register işlemini tamamladıktan sonra, Server altına diğer SQL Server sunucularını eklemek için Server Group oluşturmamız gerekmektedir. Server Group oluşturmak için Central Management Server üzerinde mouse’un sağ butonu ile açılan kısayol menüsünden New Server Group komutunu vererek yeni bir grup oluşturabilirsiniz.
New Server Group Properties penceresinde grup adını belirledikten sonra Ok butonunu tıklayarak yeni bir grup oluşturabilirsiniz. Ben grubun adını MyGroup veriyorum.
Artık SQL Server sunucularımızı ekleyebiliriz. Bunun için Central Management Server üzerinde mouse’un sağ butonu ile açılan kısayol menüsünden New Server Registration komutunu vererek sunucuları register edebiliriz. Açılan New Server Registration Properties penceresinde Server’ı belirledikten sonra, Test butonunu tıklayarak işlemin başarılı olup olmadığını kontrol edebilirsiniz. Save butonunu tıklayarak register işlemini tamamlayalım.
Ben sırasıyla aynı makinamda kurulu TSAHINER\INFOPARK ve TSAHINER\YAZOKULU sunucularımı (instance) register etttim. Siz network veya makinanızdaki diğer sunucuları register edebilirsiniz. Bu noktada dikkat edilecek önemli bir noktadan bahsetmek istiyorum. Sunucular (instance) sadece Windows Authentication ile register edilebilir.
Böylece register işlemini bitirdik. Artık multiserver query’ler yapabiliriz. MyGroup üzerinde mouse’un sağ butonu ile açılan kısayol menüsünden New Query komutunu vererek yeni bir sorgu oluşturalım.
Sorgu penceresine “Select * from sys.databases” sorgusunu yazalım ve çalıştıralım. Sonuç aşağıdaki gibi olacaktır. Bu arada bu sorgu server’daki tüm veritabanlarını listeler. :)
Dikkat ederseniz her iki sunucuda ki(TSAHINER\INFOPARK, TSAHINER\YAZOKULU) veritabanları listelendi. Böylece Central Management Server(TSAHINER\IZMIR) ile TSAHINER\INFOPARK, TSAHINER\YAZOKULU sunucuları üzerinden multiserver query çalıştırmış olduk. Son olarak isterseniz bu sorgu sonuçlarını birleştirerek gösterebiliriz. Bunun için Sorgu penceresinde mouse’un sağ butonu ile açılan kısayol menüsünden Query Options komutunu vererek sorgu seçeneklerini değiştirebilirsiniz.
Açılan Query Options penceresinin MultiServer sekmesinden Merge results özelliğini True yaparak sonuçları birleştirebilirsiniz. Sonuç aşağıdaki gibi olacaktır.
SQL Server 2008 yeniliklerini yazmaya devam edeceğim. Başka bir makalede görüşmek üzere....
Kaynak : 6158B- Updating Your SQL Server 2005 Skills to SQL Server 2008 (Beta,Early Release)
11 Ağustos 2008 Pazartesi
SQL Server 2008 Yenilikleri 1 (SQL Server 2008 Giriş)
Artık SQL Server 2008 yazma zamanı geldi. :) SQL Server 2008 yeniliklerini makale serisi şeklinde yazmaya çalışacağım. Öncelikle SQL Server versiyonlarına ve gereksimlerine bir göz atalım. Sonra SQL Server 2008 yeniliklerine değinelim.
Microsoft SQL Server Versiyonları :
- SQL Server 1.0 (1989): OS/2 için Microsoft, Sybase ve Ashton-Tate tarafından geliştirilmiştir.
- SQL Server 4.2 (1992): Windows NT 3.1 için geliştirilmiştir.
- SQL Server 6.0 (1995): Windows NT için belirli bir biçimde tasarlanmış ve planlanmış ilk versiyondur.
- SQL Server 7.0 (1999): Ölçeklenirlik ve performansı geliştirmek için tasarlanmış kod tabanlı SQL Server versiyonudur.
- SQL Server 2000: Performans, Ölçeklenirlik ve Güvenilirlik için geliştirilmiş bir diğer versiyondur.
- SQL Server 2005: Yeni ve geliştirilmiş özellikler içerir. Geliştirilmiş özelliklere Integration Service, Analysis Service, Notification Service, Reporting Service, XML desteği sayılabilir.
Enterprise:
Geniş ölçekli ve iş-kritik (business critical) uygulamalar için kullanılır. Aşağıdaki bileşenleri içerir.
- İş Kritik(Business Critical)
- Geniş düzeyde Online Transaction Processing (OLTP) desteği
- Geniş düzeyde raporlama
- İleri düzey mantıksal analiz
- Data Warehouse
Standart:
Orta ve küçük ölçekli departman uygulamaları için kullanılır. Aşağıdaki bileşenleri içerir.
- Departmanlar için tercih edilir.
- Orta ve Küçük düzeyde Online Transaction Processing (OLTP) desteği.
- Raporlama ve Analiz Desteği
Workgroup:
Küçük ölçekli şube uygulamaları için kullanılır. Veri yönetimi, Raporlama fonksiyonları, Güvenlik ve Uzak senkronizasyon desteği sağlar. Aşağıdaki bileşenleri içerir.
- Şube uygulamaları için veri depolama
- Şube uygulamaları için raporlama
- Uzak senkronizasyon
Express:
Bağımsız Yazılım Geliştiricilerin(Independent Software Vendors –ISV) kullandığı ücretsiz SQL Server 2008 edition’ı dır.
Compact:
Embedded(gömülü) sistemlerde Embedded veritabanları için kullanılan ücretsiz SQL Server 2008 edition’ı dır. Mobile Cihazlar, Desktop Bilgisayarlar ve Web Client’ların veritabanı uygulamalarında kullanılır.
Developer:
Uygulama geliştirme ve test amaçlı kullanılır. SQL Server 20008 Enterprise ile aynı fonksiyonlara sahiptir.
SQL Server 2008 yeniliklerini aşağıdaki gibi sayabilirim.
- Configuration Servers
- Policy-Based Management
- Resource Governor
- Data Collector
- Plan Freezing
- Transparent Data Encryption
- Auditing All Actions
- FILESTREAM Data Type
- Spatial Data
- Hot Add CPU
- Conflict Detection
- Change Data Capture
- MERGE Statement
- Report Designer
- Analysis Services Wizards
Kaynak : 6158B- Updating Your SQL Server 2005 Skills to SQL Server 2008 (Beta,Early Release)
9 Ağustos 2008 Cumartesi
Microsoft Yaz Okulu - İzmir
Microsoft Yaz Okulu - Ankara
19 Haziran 2008 Perşembe
WPF Event Modeli ve Routed Event
WPF de olay yöneticilerini(event handler). çift yönlü tanımlanır. Önce, ASP.NET veya Windows Form’lar da olduğu gibi XAML kod içerisine bildirim deyimi eklenir. Daha sonra yapılan bildirime göre kod dosyası içerisinde (örneğin xaml.cs,xaml.vb) olay prosedürü oluşturularak event handler tanımlanır. Bu event handler tanımlama işlemi ASP .NET’deki tanımlama(code-behind) işlemine oldukça benzerdir.
Aşağıda ki örnekte buttonun click olayı için event handler oluşturma işlemini yapalım.
Önce xaml içerisinde bildirim işlemini yapalım.
Daha sonra xaml.cs dosyasında code behind yöntemi ile event handler’ı oluşturalım.
Şimdi ise gelelim asıl meselemize. WPF ile beraber gelen yeniliklerden biri olan routed event’dan bahsedelim.
Routed Event
WPF birleşik kontrolleri hızlaca tasarlayabilmenizi ve olaylarını kolayca yönetebilmenizi sağlamak amacıyla routed eventlar’ı sunar.
Routed event, sadece kontrol üzerindeki event’ı tetiklemek yerine, root kontrole bağlı tetiklenen child kontrolle beraber root kontrolun de handler’larını başlatan bir olaydır.
3 çeşit routed event vardır Bunlar;
- Direct Event : Direct Event, tek kaynak üzerinden tetiklenen basit olaylardır. Bu olaylar WPF routed-event sistem ile register edilmiş olaylar hariç standart .NET olaylarına çok yakındır.
- Tunneling Event : Tunneling Event, olay tetiklenmeleri root kontrollerden child kontrole doğru hareket eder. Tunnelling Event ile Preview öneki ile belitilen eventlar(PreviewKeyDown) tetiklenir.
- Bubbling events : Bubling Event, Tunneling Event karşıtıdır ve olay tetiklenmeleri child kontrolden root kontrole doğru hareket eder. Bubbling Event ile standart eventler(Click) tetiklenir.
Şimdi bir örnek yapalım. Forma 1 Button ekleyelim Button’un içerisine StackPanel, StackPanel’in içerisine 2 adet Button ekleyelim. Form aşağıdaki gibi olacaktır.
Xaml kodları aşağıdaki gibi olacak.
WPF(Windows Presentation Foundation) Giriş - 3
Sırasıyla Visual Studio .NET 2008 -> New Project -> WPF Browser Application komutunu çalıştırın.
WPF Browser Application uygulamalarında kontroller Page tag’leri içerisine eklenir.
Button’u çift tıklayarak Buttonun Click olayına “MessageBox.Show("Hello World");” yazalım.
Page1.xaml.cs dosyasının görünümü aşağıdaki gibi olacaktır.
Projeyi çalıştırın. Sonuç aşağıdaki gibidir.
WPF(Windows Presentation Foundation) Giriş - 2
WPF(Windows Presentation Foundation) Giriş - 1
Microsoft, .NET Framework 3.0 ile birlikte 4 önemli altyapı sunmuştur. Bunlar Windows Presentation Foundation(WPF), Windows Communication Foundation(WCF), Windows Workflow Foundation(WF), Windows CardSpace(WCS) dir. .NET Framework 3.0, .NET Framework 2.0 ile birlikte yukarıda bahsettiğim 4 altyapıyı da içerir. Aslında .NET Framework 3.0, .NET Framework 2.0’dan sonra çıkan ara bir framework dür. Çünkü Visual Studio .NET 2008 ile beraber Framework 3.5 gelir. Fakat Visual Studio .NET 2005’in Framework’ü ise .Net Framework 2.0 dır.
Bu makalemde WPF(Windows Presentation Foundation) giriş yapacağım. Ayrıca WPF proje tipleri hakkında basit uygulamalar yapacağım.
WPF, Windows işletim sistemi içerisinde client(istemci) uygulama geliştirmek için kullanılan yeni nesil sunum(arayüz) sistemidir. WPF ile basit bir kelime işlemcisinden tutun kurumsal düzeyde media player uygulaması geliştirmeye kadar çeşitli Windows tabanlı uygulamalar geliştirmek için kullanabilirsiniz.
WPF ile standart windows uygulamaları veya web browser üzerinde çalışan uygulamalar geliştirebilirsiniz. WPF’in amacı modern grafik donanımı avantajlarını kullanan vektör tabanlı render motoru ve bağımsız çözünürlük sağlamaktır.
WPF’in yetenek ve özellikleri aşağıdaki gibidir.
- XAML-tabanlı kullanıcı arayüzü
- Sayfa Yerleşimi Yönetimi
- Veri Bağlama
- 2-D ve 3-D grafik
- Multimedya
- Animasyon
- Döküman ve Yazdırma
- Güvenlik
- Erişilebilirlik
- Lokalizasyon
- Windows Form kontrollerle birlikte çalışabilme
WPF ile kullanıcı arayüzü oluşturmak için XAML(Extensible Application Markup Language) kullanılır. XAML markup bir dildir. Arayüz tanımları XAML içerisinde oluşturulur ve .xaml uzantılı dosyalarda saklanır. Aşağıda Buton eklenmiş bir formun XAML kodları gösterilmektedir.
WPF ile 2 tip uygulama tipi sunar. Bunlar Standart ve Browser Applications uygulamalardır. Stand-alone uygulamalar geleneksel Windows uygulamaları geliştirmek için kullanılır. Browser Applications ise Web Browser içerisinde çalışabilen uygulamalar geliştirmektir.
14 Haziran 2008 Cumartesi
SQL Server 2005 Analysis Service 1 (Giriş)
Analysis Service Giriş
Firmalar yaptıkları işin performans değerini ölçmek için veri analizine ihtiyaç duyarlar. Firmalar veri analizi yaparak kar ve zarar değerlerini, birim maliyetlerini hesaplayabilirler. Örneğin bir üretim firması hata değerlerini görebilir veya bir havayolu firması doluluk oranlarını takip edebilir.
Firmalar iş trend’lerini(gidişatlarını) veya sorunları görmek için veri analizlerine ihtiyaç duyarlar. Böyle bir durumda firmanın karar yetkisine sahip kişiler görüşerek, hangi iş trend’inin başarılı olduğu ve hangi sorunların var olduğu analiz edilir veya çözümlenir.
Firmalar öngörücü(ileriye yönelik) modeller tasarlayarak, politikalarını belirlemeye ihtiyaç duyarlar. Öngörücü modeller eski dataya dayanarak gelecek için sonucu tahminleyen modellerdir. Örneğin bir sigorta şirketi her bir talep hakkında detaylı bilgileri toplar ve öngörücü modeller ile bu dataların içerisindeki sahte talepleri analiz edebilir. Bu dataları soruşturma memurları ilgili soruşturmalarda sonradan kullanabilir.
Yaygın Kullanılan Veri Analiz Çözümleri
İlişkisel Raporlama :
İlişkisel Raporlama, ilişkisel OLTP(Online Transaction Processing) veri kaynaklarındaki datayı anlamlı bir şekilde raporlamak için kullanılır. İlişkisel Raporlamaya SQL Server Reporting Services örnek verebiliriz. İlişkisel Raporlama senaryoları ile dataları kullanıcıya hızlı ve etkin bir şekilde özetleyebiliriz. İlişkisel Raporlamayı çeşitli farklı senaryolarda kullanabilirsiniz. Bunlar:Şirket içi raporlama kullanılabilir. Örneğin şirketin finans raporları, şirketin finans departmanı çalışanlarına ve yöneticilere paylaşılabilir. Veya şirketin ürün raporları tüm çalışanlar ile paylaşılabilir. İlişkisel Raporlama şirketler arası raporlamada da kullanılabilir. Bu senaryonun kullanılabilmesi için şirketler arasında extranet(şirketler arası internet) yapısının olması gerekmektedir. Bu senaryo ile merkez firmanın ürün raporları, iş ortağı diğer firmalar ile paylaşılabilir. Portallar ve uygulamalar içerisinde kullanılabilir. Örneğin CRM (customer relations management) , iş veya üretim uygulamalarında raporlama bileşeni olarak kullanılabilir.
OLAP :
OLAP sistemler datayı çeşitli kategorilere ve düzeylere göre depolar veya kümeler. Bu biçim standart OLTP raporlama uygulamalarına göre daha sezgisel ve interaktif analiz için daha uygundur.
Data Mining :
Data Mining, datalar için model(patterns) ve ilişkileri(correlations) kullanarak geniş çapta otomatik arama işlemleri yapar. Bir iş yöneticisi sorumlu olduğu bölümün ana hedef ve etkilerini biliyor olsa bile, bir data mining algoritması her bir hedef için daha çok bilgi verebilir. Ayrıca kontrol edilen durumlar arasında bir bağlantı çıkarabilir. Başarılı bir algoritma eski veriyi temel alarak gelecek için tahmin yapabilir ve bu tahminlere dayanarak çıkan sonuçları test edebilir. Data Mining için hem OLAP hemde OLTP sistemlerin her ikisinide kullanabilirsiniz.
Temel OLAP Kavramları
Bu bölümde temel OLAP çözümleri ile ilgili temel kavramlarından bahsetmek istiyorum. Bu kavramlar Analysis Service ile OLAP çözümleri planlarken ve gerçekleştirirken bizim için çok önemli olacak.
Data Warehouse :
Firmalar iş analiz süreçlerinde, kendileri için data sağlayan ve dağınık halde bulunan çeşitli verileri raporlama ve sorgulama ihtiyacı duyarlar. Data Warehouse, bu farklı kaynaklardaki veriyi tek bir çatı altında (tek bir kaynak altında) toplayarak yeniden yapılandırılmasına verilen addır.
Firmaların farklı departmanlarda dağınık olarak bulunan verilerin, güncel ve tutarlı olarak saklanması, her departmanın kendine özel sistemeler kullanması sebebiyle Data Warehouse oldukça zor ve zaman alıcı bir süreçtir.
Genellikle data analizleri için kullanılan Data Warehouse dataları (data warehouse tabloları için OLAP çözüm yapıları ve optimal şemalar) de-normalize yapılarak oluşturulur. Data Warehouse, Data Mart’ların sanal olarak birleşimini sağlayabilir veya Data Mart’lar için kaynak datalar sağlayarak onları merkezi bir şekilde saklayabilir.
De-Normalize, Normalization(Normalleştirme)işleminin tersi bir işlemdir. Normalization hakkında detaylı bilgi sahibi olmak için “Normalization(Normalleştirme) Nedir?” adlı makalemizi okuyabilirsiniz.
Normalization: Normalization, her bilgiye ait olduğu en iyi yerleşimi tanımlama işlemidir. Normalleştirme, veriyi en aza indiren, veriyi uygun gruplamalarla uygun veri türüne yerleştiren ve yapıyı en iyi şekilde kullanan bir tasarım yaklaşımıdır. Normalleştirilen bir veri modeli doğru şekilde düzenlendiği için fiziksel veritabanına çevirilebilir.
Normalization E.F. Codd tarafından 1970’ler de ilişkisel modelleri geliştirmek için oluşturulmuştur.
Normalleştirilen bir veri modeli, her tablonun iyi oluşturulduğunu garanti eder ve her alanın uygunluğunu belirtir. En iyi durum, normalleştirilen mantıklı bir veri modelinin fiziksel olabildiği zamandır.
De- Normalization: Raporlama veya analiz amacıyla ilişkisel veritabanı modelinden, daha basit bir data yapısına(formuna) geçiş işlemidir. Normalizasyon işleminin tersidir. Örneğin Firmanın Aylık,Yıllık,Günlük satış cirolarının tek tabloya indirgenmesi işlemi.
Data Mart:
Data Mart çeşitli iş faaliyetlerinde veya özel konularda data sağlayan Data warehouse altkümeleridir. Bazı şirketler genel ve bütünsel bir Data Warehouse kullanmak yerine departman düzeyindeki veriyi kullanmak isterler.Data Mart belirli bir konu veya departman bilgilerine odaklanırken, Data Warehouse bütün şirketin bilgilerine odaklanır.
Fact:
Fact genelde analiz ve toplama(aggregate) işlemleri yaparak fiyat veya adet gibi anahtar iş değerlerini sunan bir ölçü birimidir. Fact formlar dimension elemanları için basit hesaplamalar ve çoğunlukla toplama (aggregate) işlemleri yapmak için kullanılır.
Dimension:
Dimension Formlar, fact’ler için kaynaklardır(bağlamlardır) ve toplanmış(aggregate yapılmış) fact’ler içinde ki işler hakkında bakış açıları tanımlar. Örneğin ürün veya stoklar dimension olarak sayılabilir. Standart sorgular ile stoklar(dimension) içerisindeki her bir ürünün toplam miktarına erişilebilir.
Cube:
Cube’ler(Küp) özetlenmiş fact’ler ve çok boyutlu dimension data tutar. Cube’ler datalara erişimi en uygun hale getiren ve genellikle kullanıcıların Data Warehouse içerisindeki datalara ulaşabilmesini sağlayan giriş noktalarıdır.
Slicing ve dicing
Slicing(Dilimleme) ve dicing(Izgaralama), OLAP cube içerisindeki datanın iş analizlerini belirlemek için, yaygın olarak kullanılan terimdir. Slicing, bir veya birden çok dimension elemanlarını ayırarak tutar ve bu elemanları diğer dimension’lara göre değerlendirir. Örneğin slicing parekende satış yapan her bir bölgenin aylık bisiklet satışlarını değerlendirebilir. Örnekte ürün dimension’dan döndürülen bisiklet dataları slicing(dilimli) olur. Dicing, ayrılarak tutulan bu çoklu dimension elemanlarından geriye tek değer döndürür. Örneğin dicing Mart 2004 yılında Münih’de satılmış bisikletleri değerlendirebilir.
Pivot Table (Özet Tablo)
Pivot Table kullanıcılara OLAP cube’lere göz atmak için hassas bir arabirim sağlar. Kullanıcılar datayı daha çok detaylandırabilirler veya datayı daha özet hale getirebilirler. Ayrıca bu arayüz kullanıcılara slice(dilim) ve dice(ızgara) olanağı sağlar.
Bu makalede temel kavramlardan bahsettim. Bir sonraki makalemde SQL Server 2005 Analysis Service yapısından bahsedeceğim.
Kaynak : 2791A: Implementing and Maintaining Microsoft® SQL Server™ 2005 Analysis Services
10 Haziran 2008 Salı
Bahçeşehir Üniversitesi Seminer
Seminer resimleri aşağıdaki gibidir.
21 Mayıs 2008 Çarşamba
Kadir Has Üniversitesi Seminer
9 Mayıs 2008 Cuma
Maltepe Üniversitesi Seminer 2
Maltepe Üniversitesi Seminer 1
İstanbul Ticaret Üniversitesi Seminer
Trakya Üniversitesi Seminer
12 Nisan 2008 Cumartesi
Veritabanı Yöneticisi Tipleri
Veritabanı yöneticileri; veri, veritabanı ve veritabanı yönetim sisteminin tasarlanması, oluşturulması, bakımı ve izlenmesi gibi görevleri yerine getirir. En yaygın veritabanı yönetici tipleri asagıdaki gibidir.
Sistem Veritabanı Yöneticisi
Bir sistem veritabanı yöneticisi, tamamen veritabanının sistem kısmıyla yani teknik boyutuyla ilgilenir. Bir sistem veritabanı yöneticisin görevleri asagıdaki gibidir.
· Yeni DBMS versiyonlarını kurmak ve bakımlarını saglamak
· Sistem parametrelerini ayarlamak ve belli bir değerde tutmak
· DBMS ile birlikte çalısan işletim sistemini, ağı ve transaction işlemlerini ayarlamak.
· DBMS için uygun veri depolayıcısını seçmek.
· DBMS’nin birlikte çalıştığı depolama aygıtlarını ve onların yazılımını yönetmek
· Veritabanı uygulamaları için gerekli olan herhangi bir diğer teknolojilerle aracı olmak.
· Üçüncü parti veritabanı araçlarını kurmak.
Veritabanı Mimarı
Veritabanı mimarları yeni bir veritabanının tasarlanması ve oluşturulması görevlerini yerine getirir. Veritabanı mimarı, sadece yeni tasarım ve geliştirme işine bakar. Veritabanı mimarı bakım, idare, ve kurulan veritabanları ve uygulamaların ayarlarına karışmaz. Veritabanı mimarı, yeni veya mevcut olan uygulamalar için yeni veritabanlarını tasarlar.
Bir veritabanı mimarının görevleri asagıdaki gibidir.
· Mantıksal veritabanı modelini olusturmak
· Mantıksal veritabanı modeli içerisinden fiziksel veri modeline dönüsümünü saglamak.
· Etkin veritabanları yaratmak için,verilerin belirli fiziksel karekterisliklerini belirlemek, indeksleri olusturmak ve veritabanı nesnelerini uygun fiziksel depolama aygıtlarında saklamak
· Verimli SQL ve uygun veritabanı tasarımını garanti etmek için gereksinim duyulan veri girişleri ve degişikliklerini analiz etmek
· Yeni veritabanları için yedek ve geri kurtarma stratejilerini belirlemek.
Veritabanı Analisti
DBMS de yaygın olarak çalısan diger bir görevli veritabanı analisttir. Bu kişiler için uygun bir pozisyon yoktur. Bazen veritabanı analistleri yardımcı veritabanı yöneticileri olarak, bazen veritabanı mimari olarak, bazen de veri analistci olarak adlandırılır. Hatta bazen bazı şirketlerde veritabanı yöneticisi yerinede direkt kullanılır.
Veri Modelcisi (Data Modeler)
Veri modelleyicisi genellikle bir veri yöneticisin altında çalısan sorumludur. Bir veri modelcisinin görevleri asagıdaki gibidir
· Bir veritabanı projesini olusturmak için gereksinimleri toplamak
· Veri gereksinimleri analiz etmek
· Mantıksal ve Kavramsal veri modelli projeler tasarlamak
· Ortak bir veri modelini yaratmak ve güncellestirmek
Uygulama Veritabanı Yöneticisi
Uygulama veritabanı yöneticisi, sistem veritabanı yöneticisinin karsıtıdır. Uygulama veritabanı yöneticisi, veritabanı tasarlanması üzerine ve belirli bir uygulama veya uygulamalar için gerekli olan veritabanlarının destek ve idaresine odaklanır. Bir uygulama veritabanı yöneticisi aynı zamanda veritabanı yönetim degişikliklerini yapabilir, sistem performansını ayarlayabilir veya yaygın kullanılan diger rolleri de yerine getirebilir. Uygulama veritabanı yönetisi, DBMS uygulamalarını ve veritabanı çevresi farklılıklarını her türlü özel ayarlarına kadar izler.
Görevlere Odaklı Veritabanı Yöneticisi(Task-Oriented DBA)
Büyük organizasyonlar bazen bir veritabanı yöneticisini belirgin bir görev üzerinde görevlendirir. Göreve odaklı veritabanı yöneticilerine bir örnek verecek olursak, organizasyonun veritabanlarının recoverylerini garanti altına almak için bir gününü bir yedek ve recovery adayan veritabanı yöneticisi.
Organizasyonların çoğu, odaklanmanın bu yönünü karşılayamaz, ama şartları uygun olduğu zaman, göreve odaklı veritabanı yöneticilerine, çok önemli görevler için bilgili özel bir takımının altında toplayabilir.
Performans Analizcileri
Performans analizcileri özel bir göreve odaklı veritabanı yöneticileri olarak sayılabilir. Performans analizcileri diger veritabanı yöneticilerinin görevlerine ortak alabileceği gibi daha çok veritabanın performansıyla veya performansla ilgili problemlerle ugraşır.
Bir performans analisti, ayrıntıları anlamalıdır, performans için SQL dan komutlar vermelidir ve performans için veritabanlarını tasarlayabilmelidir. Bir performans analisti, gerekli olduğu zaman DBMS ve sistem parametrelerinde uygun degişiklikleri yapabilecek ayrıntılı DBMS teknik bilgisine sahip olmalıdır.
Performans analisti, sistem veritabanı yöneticisi olamaz. Fakat performans analisti, belirgin bir programın performansı üzerinde degisiklikleri kolaylastırmak için, uygulama gelistiricilerine yardım etmek için onların kullandığı dilde uygulama geliştirme bilgisine sahip olmalıdır.
Veri Ambar Yöneticileri
Genis veri analizi yapmak için veri depolarını kullanan organizasyonlar bu verileri izlemek ve depolama çevresine ihtiyaç duyar. Veri ambar yöneticileri, farklı veritabanları arasında OLTP ve veri ambarlama desteği verebilen yetenekli veritabanı yöneticileridir. Bir veri ambar yönetiminde aşağıdaki maddelerin olması gerekir.
· Is zekası, sorgu ve raporlama araçları
· Sadece okunabilir erisimler için veritabanı tasarımı
· Veri ambarlama tasarımı (örnegin star schema)
· Veri ambarlama teknolojileri (örnegin OLAP)
· Veri transferi ve dönüştürme
· Veri niteliklerini çıkarma
· Veriyi yüklemek ve kaldırmak için uygun veri tipleri
· Özel Yazılımlar
Üretim ve Test
Kaliteli bir veritabanı yaratmak için iki çevre yaratılmalı ve desteklenmelidir. Bunlar üretim ve testtir.
10 Nisan 2008 Perşembe
Veritabanı Yöneticisinin Görevleri
Veritabanı yöneticisinin rutin bir şekilde yerine getirmesi gereken çesitli görevler vardır. Bu görevlere veritabanı tasarımı, performansı izleme ve düzenleme, veritabanına erişilebilirlik, güvenlik, yedek alma ve geri yükleme, veri bütünlüğünün sağlama, veritabanın konumu değiştirme sayılabilir.
Veritabanı Tasarımı
Veritabanı yöneticisi RDMS (İlişkisel Veritabanı Yönetim Sistemi) de veritabanı oluştururken, oluşturacağı veritabanının hem teorisini hemde belirgin uygulamasını bilmek zorundadır.
Veritabanı yöneticisi mantıksal veri modelini fiziksel veri modeline dönüştürebilir. Veritabanı yöneticisi istemci ve uygulama tarafından kullanılan veritabanını tasarlayabileme ve uygulayabilmelidir.
Performansı İzleme ve Düzenleme
Performans, veritabanının ayarlarıyla veritabanından beklenenlerin karşılığını almakla ilgili bir durumu gösterir. Yani donanım, yazılım ve ayarlamalar açısından yetersiz bir sistemden, hız ve daha fazla kapasite beklemek yanlış olacaktır. Veritabanı performansını etkileyen 5 faktor vardır.
Bunlar;
· Workload(İş Yükü)
· Throughput(Üretilen iş)
· Resources(Kaynaklar),
· Optimization(İyi hale getirme)
· Contention(Mücadele)
dır.
Workload(İş Yükü), DBMS de tanımlı istekleri tanımlar. Workload; online transaction,
batch job, ad hoc query, data warehousing(veri ambarlama), analytical queries(analitik sorgular) ve herhangi bir zamanda sistem tarafından çalıstırılan komutları içerir. Workload gün gün, saat saat, dakika dakika hatta saniye saniye çok şiddetli dalgalanabilir. Bazen de periyodik olarak dalgalanabilir.
Throughput, bilgisayar, donanım ve yazılımının toplam yeteneklerini belirler. Throughput, I/O hızı, CPU hızı, makinanın paralel verimliligi, sistem yazılımının ve işletim sisteminin etkinliğini içerir.
Sistem bazında donanım ve yazılım araçları resources(kaynaklar) olarak bilinir. Örnek olarak veritabanı çekirdegi, boş disk alanı, önbellek denetleyicileri sayılabilir.
Optimization, veriye etkin bir şekilde erişmek için sorgu maliyet formülleri ile veritabanı taleplerini analiz etme anlamına gelir. Bütün sistem tipleri optimization kullanabilir. Fakat ilişkisel sorgular DBMS’de birincil derede benzersiz oldugu için optimization benzersizdir. Yine de birçok faktör veritabanını en iyi sekilde kullanıcısını ulaştırmak için en verimli erişim
yolları yaratmaya ihtiyaç duyar. Örnek olarak SQL kodlama, veritabanı parametreleri, verimli bir sekilde programlama sayılabilir.
Belirli kaynaklar üzerinde iş yükünün yüksek olduğu zamanlarda contention oluşur. Herhangi bir kaynağı birden çok bileşen veya kişi kullandığı anda Contention oluşur. Örnegin aynı veriye iki kişinin güncelleme yapmaya çalısması gibi. Contention artığı durumlarda workload artar.
Performansı düzenleme ve birçok görev ve becerileri, veritabanlarında etkili bir şekilde yapabilmek için veritabanı yöneticileri gerekir. Bu beceriler uygun indeksleri oluşturmak, yeteri kadar tampon bellek oluşturmak, veritabanını ve uygulamaları izlemek, veritabanını yeniden düzenlemek olarak sayılabilir.
Kullanılabilirlik(Availability)
Kullanılabilirlik(Availability) ilk bileşeni DBMS’yi yüksek tutmak ve çalıştırmaktır. DBMS’nin hizmet dışı kalmaması için otamatik uyarılar olusturmak ve sürekli izlemek gerekir.
Bireysel veritabanlarının sürekli açık ve çalışır olması gerekir. Veritabanı yöneticisi karısıklıkları en aza indirger ve çakışmaların en az olmasını sağlar. Bir veritabanı yöneticisi, çakışmaları en aza indirmek için clustering(kümeleme) gibi teknolojileri kullanabilir.
Veritabanı Güvenligi ve Yetkilendirilmesi
Veritabanı tasarlandıktan ve programlandıktan sonra kullanıcıların veritabanında ki veriye erişmesi ve degiştirmesi gerekir. Ama kullanıcıların uygun olmayan veya yasak olan veriye erişmemelidirler. Kullanıcılar sadece izni ve yetkisi oldugu veriye erişip onu kullanabilmelidirler. Işte veritabanı yöneticileri uygun olan veriye kullanıcıların erişmesini saglar.
Veritabanı yöneticileri DBMS içerisinde güvenligi saglamak için, SQL(Structured
Query Language) içerisinden Grant, Deny, Revoke deyimlerini kullanır.
Güvenlik birçok veritabanı gereksinimleri için gereklidir. Bunlar;
· Veritabanı objelerini oluşturmak için. Bunlar databases(veritabanı), tables(tablo),
views gibi.
· Veritabanı objelerini düzenlemek için.
· Sistem Kataloguna erismek için.
· Tablo içerindeki verilere erişmek ve degiştirmek için.
· Kullanıcı tanımlı veri tipleri ve fonksiyonlar yaratmak için.
· Stored Procedure çalıstırmak için.
· Veritabanını durdurmak veya çalıştırmak için.
· DBMS parametrelerini ayarlamak veya düzenlemek için.
· LOAD, RECOVER, REORG gibi veritabanı yardımcı komutlarını çalıstırır.
Güvenlik bazı yollarla güçlendirilebilir. Örnegin olusturulmus bir view’e son kullanıcılar ve programcılar tarafından bir giriş blogu konulabilir.
Ayrıca veritabanlarına harici(herhangi bir programlama dilinden veya uygulamalardan)
güvenlik metodları da uygulanabilir.
Yedek Alma ve Kurtarma(Geri Alma)
Veritabanı yöneticisi herhangi bir sorun karşısında kurtarma bilgisine sahip olmalıdır. Sorun sistem sorunları veya program hatası olabilir. Bugün hemen hemen bütün sorunlar uygulama hataları veya kullanıcı hataları olarak karşımıza çıkmaktadır.
Yapılan, analist tahminleri, uygulama hatalarının 80%’inin, yazılım başarısızlıkları ve insan hatası yüzünden olduğunu gösterir. Veritabanı yöneticisi çıkan sorunlara en kısa zamanda müdahale edebilmelidir.
Genellikle veri kurtarmanın ilk tipi, büyük bir kapatmadan dolayı oluşan varsayılan kurtarmadır(recover to current). Bu sonuç yapılan en son işlemin veya güncel işlemin başarıyla gerçekleşmemesinden kaynaklanabilir. Geri alımı tamamlanıncaya kadar uygulamalar kullanılmazlar.
Diger bir kurtarma tipi Point-in-time recovery’dir. Point-in-time recovery genellikle uygulama düzeyi sorunlarla ugraşır. Bir Point-in-time geri alımını yapmak için, geleneksel teknikler belirgin bir Point-in-time oldugu sürece tüm iş yapmanın etkilerini kaldırır.
Transaction recovery üçüncü tipteki kurtarmadır. Transaction recovery, arıza süresi ve veri kaybı durumlarında kullanılan kurtarma modelidir. Böylece transaction recovery belirli bir esnada belirli işlerinin etkilerinin, veritabanından kaldırılmadan gerçekleşeceği bir uygulamadır. Bu yüzden ki bazen uygulama kırıcı olarak da başvurulur.
Geri alma’nın herhangi bir tipini hazırlamak için, Veritabanı Yöneticisi olarak verinin, yazılım, donanım, veya elle yapılan bir işlemde bir hata halinde kaybolmadığını garanti etmesi için stratejinin oldugu bir yedegi gelistirmeye ihtiyaç duyar. Bu strateji uygulanabilir bir işlem olarak(veritabanı için bir yedek dosya olarak kopyalar, / Geri alma planı günlügüne kaydeder) veritabanını dosyalarının kopyasını alır.
Veri Bütünlüğü
Bir veritabanı tasarlarken veri zarar görmemesi ve bozulmaması için verinin dogru bir biçimde girilip saklanması gerekir. Veritabanı yöneticisin bu işlemi yerine getirmek için bütünlügü DBMS’nin kurallarıyla(rule) yerine getirir.
Veri bütünlügünü, 3 bakış açısıyla saglayabiliriz. Bunlar fiziksel(physical), anlamsal(semantic), ve içsel(internal) olarak sayabiliriz. Fiziksel DBMS de veri tipleri ve alanları sayabiliriz. Veritabanı yöneticisi her bir tablonun her sütunu için uygun bir veri tipi seçer. Böylece o alan için uygun verinin girilmesi saglanır. Örnegin sütunun veri tipi integer olarak tanımlanmışsa, o sütuna sadece nümerik bilgiler girilmesi sağlanır. Kullanıcı metinsel veya nümerik olmayan bir bilgi girdiğinde veritabanı hata üretir. Çogu ilişkisel DBMS türleri asagıdaki constraint(kısıt) tiplerini destekler:
Referential constraint : Belirli sütunlarla tablolar arasında ilişki kurmak için tanımlanır. Herhangi bir sütuna girilen verinin baska bir tablodaki diger bir sütunu etkilemesidir.
Unique constraint : Bir tablo içerisinde varolan bir sütunun içerisine benzersiz verilerin girilmesini sağlar. Örnegin, Ögrenci adında bir tabloda Ögrenci No diye bir sütunumuz olsun. Ögrenci No sütunun Unique (benzersiz) olarak belirlediginizde aynı Ögrenci No nun girilmemesini sağlarsınız.
Check constraint : Bir tablonun sütunlarında veya bir sütununda girilen bilgilerin kısıtlanmasını sağlar. Örnegin Ögrenci adında bir tabloda Cinsiyet diye bir sütunumuz olsun. Bu sütuna cinsiyeti sadece Bay veya Bayan olarak yazdırmak istiyorsak bunun için bir Check constraint tanımlamak gerekir.
Anlamsal (semantic), kontrol olarak da tanımlanma olarak da diğerlerine göre daha zordur. Anlamsal (semantic) bütünlüğe örnek olarak veritabanındaki verinin kalitesini verebilirim. Veritabanında belirli olan fiziksel bütünlük yada kısıt tanımları herhangi bir veriyi sadece depolamak için yeterli degildir. Veri kalitesini garanti etmek yerleşimde olması için yordam ve pratik ihtiyacıdır. Örnegin, kayıtlı olan müşterinin 25%’inde yanlış bir adres veya telefon numarası içeren bir müşteri veritabanı, yetersiz kalitesiyle bir veritabanının bir örnegidir.
Bütünlügün son yönü, iç DBMS oluşturur. DBMS iç bütünlüğünü, asağıdaki çözümlerle sağlar.
Index Tutarlılığı. Bir index veritabanında ekstradan yer kaplayan ve veritabanı içerisindeki tabloların içerigini düzenli bir yapıda tutan yer göstericilerdir. Indexler, herhangi bir veriyi sorgulararken tüm tablonun içerigini taramaktansa gerekli verilerin taranmasını saglayarak performansı artırır.
Pointer Tutarlılığı. Bazen büyük miktardaki çoklu nesneleri aynı fiziksel ortamda saklamayız. Bu yüzden büyük miktardaki bu verileri saklamak için Pointer’a ihtiyaç duyarız.
Backup Tutarlılığı. Çogu DBMS ürünleri bazen recovery için etkin olarak kullanılamayan gereksiz veritabanı yedekleri alır. Bu senaryo bu eylemleri tanımak ve düzeltici hareketleri almak için gereklidir.
15 Ocak 2008 Salı
Veri, Veritabanı ve Sistem Yönetimi
Çoğu firma verilerin, teknik ve iş yönünden bakış açısını çesitli rollerle tanımlamışlardır. Şimdi bu rolleri açıklamaya çalısacağım.
Veri Yönetimi
Veri yönetimi veri kaynak yönetiminde kullanılan veriyi yönetmek için gerekli teknolojiyi belirler ve veriyi kullanıcılar tarafından kullanılmaya hazır hale getirir. Veri yöneticisi iş yapısını anlama ve bunu mantıksal veri modeline çevirme ile sorumludur ve bunun için veri yöneticisi daha çok analiz etme, daha çok veri toplama ve dizayn evrelerini belirlemelidir.
Veritabanı yöneticiside(DBA) veritabanını geliştirme, test etme ve işlere uygunluk açısından planlamak zorundadır.
Veri yöneticisi verileri depolama, veritabanı yöneticisi DBMS ve veritabanının fiziksel
dizaynıyla ilgilenir. Ayrıca veri yönetisi metadata ile de ilgilenir. Metadata sistem bilgileridir. Metadata, veritabanı içerisindeki nesneler ve sistem hakkındaki bilgileri içerir. Veri yöneticisi işyerinin metadata stratejilerine cevap verebilmelidir. Örneğin veri yöneticisi veri elemanlarını tanımlamalı, isimlerini belirlemeli, varsa kısıtlamaları düzenlemeli, veri tipleri ve uzunluklarını ayarlamalıdır.
Veri yöneticisine veri modellerini olustururken, Conceptual(Kavramsal) veri modeli ve Logical(Mantıksal) veri modelinin birliktelikleri büyük katkıda bulunur. Conceptual (Kavramsal) veri modeli, yüksek derecede veri gereksiniminin anahatlarını içerir. Logical (Mantıksal) veri modeli, veri tipleri, veri uzunlukları, veriler arasındaki ilişkileri ve kısıtları içerir.
Veritabanı Yönetimi
Veritabanı yöneticisi(DBA), mantıksal veritabanı etkin bir şekilde fiziksel veritabanı modeline dönüştürür. Bir veritabanı yöneticisinin bu dönüşümü yaparken DBMS’yi mutlaka bilmesi gerekir. Bir veritabanı yöneticisi bir veri yöneticinden kavramsal ve mantıksal veri modelini alır ve bunu fiziksel veri modeline çevirir. Bu ilişki aşağıdaki şekilde gösterilmektedir.
Sistem Yönetimi
Bazı şirketler ki genellikle büyük organizasyonlar sistem yöneticilerine de sahiptir. Bu sistem yöneticileri DBMS’yi oluşturmak ve çalıştırmak için sistem programlama rollerini üstlenir. Sistem yöneticileri veritabanı planlarında ve veritabanı desteklerinde bulunmaz. Veritabanı Yöneticisi veritabanından sorumludur. Sistem Yöneticisi ise DBMS’nin kurulumu, düzenlenmesi ve destek işlerinden sorumludur.
Bunun dışında sistem yöneticisi diğer teknisyenlerle beraber Transaction İşlemleri, Message Queue Yazılımları, Network Protokolleri, İşletim Sistemi parametreleri gibi işlemleri gerçekleştirebilmek için birlikte çalışır.
Veri yöneticisi, sistem yöneticisiyle veritabanı yöneticisi arasında çapraz bir şekilde görevlerini yerine getirir. Sistem yöneticileri de veritabanı yöneticileri gibi fiziksel veritabanı altında çalısırlar, fakat veritabanı yöneticileri sistem yöneticileri gibi sistem yazılımlarının teknik olarak derinliklerinden ve ilişkilerinden anlamak zorunda değildir. Veri yöneticisi, veritabanı yöneticisi ve sistem yöneticisi arasındaki görev dağılımı aşağıdaki şekilde gösterilmistir.
Veritabanı Yönetiminin Kuralları
Veritabanı yönetim kurallarını, planlama ve düzenlenen planlamaları yerine getirme olarak söyleyebilirim. Bir veritabanı yöneticisi planlamaları yaparken şirketin büyümesini ve yapısal degişikliklerini göz önüne alarak planlamalıdır.
Veritabanı yöneticisi tasarılarını planlarken bu uygulamanın her adımını önceden planlamalı, gereksinimleri belirlemeli ve bu uygulamanın her adımındaki görevleri birbirleriyle döngüsel olarak işlemelidir. Aşağıdaki şekil de bu planlamayı göstermektedir.
Veritabanı yöneticisi, geliştirmeye başlamadan önce DBMS metodları kullanarak(örnek Oracle veya SQL Server) mantıksal veri modelini fiziksel veri modeline çevirmedir. Fiziksel veri modeline çevrilen veri uygulamalarının testleri de yapılarak uygulama hatalardan arındırılıp kullanıma hazır hale getirilmelidir. Kullanıma hazır hale getirilen veritabanının bundan sonraki işlemi bakım yapmaktır.
Kullanıma hazır hale gelen veritabanını kullanmaya başlamadan önce güvenlik mekanizmaları, depolama üniteleri ve bellek kullanma gereksinimleride düzenlenerek veritabanının gelişimi tamamlanır.
Bundan sonra DBA’nın yapması gereken faaliyete geçen veritabanın rutin yönetimsel görevlerini yerine getirmektir. Bu görevler;
· Performansı İzleme
· Yedek Alma ve Geri Yükleme
· Ayarlamalar
· Izin Yönetimleri
olarak sayılabilir.
DBA’a DBMS kurulumunu bitirdikten sonra uygulamalar vasıtasıyla veritabanına erişen IT altyapı sistemini oluşturmalıdır.(veya Program Gelistiricilerden destek alabilir). Son olarak DBA’in görevleri arasında sorgu ve rapor araçlarını düzenlemek, güvenliğini sağlamak, sorgu düzenekleri, performanslarını izleme ve düzenleme gibi görevler de sayılabilir.
14 Ocak 2008 Pazartesi
Database Management System (DBMS) nedir?
Veritabanı nedir? sorusuyla baslamak istiyorum. Belki bu soruya çok farklı cevaplar verilebilir. Ama şunu söyleyebilirim ki SQL Server 2005 bir database değildir. SQL Server 2005 bir Database Management System (Veritabanı Yönetim Sistemi’dir). Oysa SQL Server 2005 ile veritabanı yaratılabilir.
Veritabanı; alan, kayıt, dosya gibi veri elemanları içerisine veriler depolanmasını sağlar. DBMS ise son kullanıcı veya uygulama programcısı arasında veri yönetimi ve paylaşım etkinliğini sağlayan yazılımdır. DBMS database içerisindeki bilgileri depolayan, geri alan, değiştiren ve ekleyen sistematik metotlar sağlar. DBMS genellikle veri bütünlügü, veri güvenligi, veri erişim kontrolu ve uygun hale getirme, otomatik geri alma, yeniden başlatma ve kurtarma islerine de yerine getirir.
DBMS’inin görevleri ;
· Veritabanındaki ilişkileri yönetme,
· Datanın dogru bir sekilde kaydedilmesi,
· Bütün durumlarda hatta “system failure” durumunda bile datayı kurtarmak olarak özetleyebilirim.
DBMS’nin yetenekleriyle uygulamadan veritabanı örneklerine erişilebilir ve veritabanı işlemlerini yerine getirebiliriz. Örneğin herhangi bir muhasebe uygulamasıyla bu muhasebe uygulamasının kullandığı DBMS’i bütünleştirerek (örnek Oracle9i, DB2 veya SQL Server ) veri yönetim ve depolama islemlerini yerine getirebilirsiniz.
Şirketler çesitli veri tabanlarını tercih edebilir. Örnegin büyük bir sirket mainframe üzerinde çalısan DB2, farklı Unix platformlar üzerinde çalısabilen Informix ve Oracle, Windows 2003 üzerinde çalısabilen SQL Server tercih edebilir veya eski veritabanları olarak IMS, hatta gelişigüzel bir uygulamayla Adabas veya Ingres gibi DBMS’leri tercih edebilir.
Native HTTP Desteği
SQL Server 2005’e gelen yeniliklerinden biriside Native HTTP desteğidir. SQL Server; Stored Procedure, kullanıcı tanımlı fonksiyon ve Transact SQL sorgularını SAOP protokolunu kullanarak dış ortama aktarabilir. Bu özellik IIS olmadan SQL Server objelerini Web Servis olarak dışarıya açmak anlamına gelmektedir.
SQL Server’ın native HTTP desteği vermesinin asıl amacı farklı istemci uygulamaların SQL Server’a erişebilmesi sağlamaktır. Bu istemci uygulamalara windows tabanlı uygulamalar, web tabanlı uygulamalar ve konsol tabanlı uygulamalar sayılabilir. Bu uygulamalar farklı programla dilleriyle ve OLEDB, ODBC veya diğer özel erişim yöntemleri kullanılarak gerçekleştirilir.
Uygulamalar için Native HTTP desteğinin bir diğer bir alternatifi XML Web Servisleridir. XML Web Servisleri veriyi HTTP üzerinden XML olarak alır ve gönderir. XML Web Servisleri SQL Server 2005’in native HTTP desteği gibi platform ve dilden bağımsız olarak çalışır.
Native HTTP desteğinin XML Web Servislerinden en önemli farkı, IIS(Internet Information Services) ihtiyaç duymamasıdır.
Windows HTTP uygulama arayüzü olarak adlandırılan HTTP.sys, istemci makinadan aldığı HTTP isteklerini SQL Server’a iletir.
SQL Server DDL(Data Definition Language) deyimlerini, uygulamalara HTTP Endpoint’ler ile paylaştırır.
HTTP endpointleri oluşturmak için CREATE ENDPOINT, değiştirmek için ALTER ENDPOINT ve silmek için DROP ENDPOINT deyimi kullanılır.
CREATE ENDPOINT deyiminin kullanımı aşağıdaki gibidir.
CREATE ENDPOINT endPointName [AUTHORIZATION login]
STATE = { STARTED STOPPED DISABLED }
AS { TCP HTTP } (
PATH = 'url'
, PORTS = ({CLEAR SSL} [,... n])
[ SITE = {'*' '+' 'webSite' },]
[, CLEAR_PORT = clearPort ]
[, SSL_PORT = SSLPort ]
, AUTHENTICATION =({BASIC DIGEST INTEGRATED} [,...n])
[, AUTH_REALM = { 'realm' NONE } ]
[, DEFAULT_LOGON_DOMAIN = {'domain' NONE } ]
[, RESTRICT_IP = { NONE ALL } ]
[, COMPRESSION = { ENABLED DISABLED } ]
[,EXCEPT_IP = ({ <4-part-ip> <4-part-ip>:
)
Şimdi CREATE ENDPOINT deyiminin parametrelerini açıklayalım.
STATE = { STARTED STOPPED DISABLED }
EndPointlerin oluşturulduğu zamandaki durum bilgisini verir. Varsayılan değer STOPPED dır.
AS { TCP HTTP }
Kullanılacak protokol bilgisini verir.
PATH = 'url'
EndPoint’in path bilgisini tanımlar.
PORTS = ({CLEAR SSL} [,... n])
Dinleyici port bilgisini belirtir. Eğer CLEAR olarak tanımlanırsa gelen mesajlar HTTP, SSL tanımlanmış ise HTTPS olmalıdır.
[ SITE = {'*' '+' 'webSite' },]
Host edilen bilgisayarın adını belirtir.
[, SSL_PORT = SSLPort ]
Port bilgisi SSL olarak belirtilmiş ise, belirtilen SSL portunun numarasını verir. Varsayılan port numarası 443 dır.
AUTHENTICATION =({BASIC DIGEST INTEGRATED} [,...n])
Kullanılacak kimlik doğrulama bilgisini verir.
DEFAULT_LOGON_DOMAIN = {'domain' NONE } ]
Kimlik doğrulama tipi BASIC seçilmiş ise varsayılan domain bilgisini belirtir. Varsayılan değer NONE dır.
Şimdi CREATE ENDPOINT deyimini örnek içinde kullanalım. Öncelikle “Adres” isminde yeni bir veritabanı oluşturalım. Oluşturduğumuz veritabanın içerisine Kisi isminde bir tablo ekliyelim ve bu tablonun tüm kayıtlarını “spKisi” isminde bir stored procedure ile listeliyelim.
Use Master
GO
Create Database Adres
Go
Use Adres
Go
Create Table Kisi
(
ID int identity(1,1) Not Null,
Ad varchar(25) Not Null,
Soyad varchar(25) Not Null,
Adres varchar(60) Null
)
Go
Insert Into Kisi values('Tamer','ŞAHİNER','Bakırköy')
Insert Into Kisi values('Engin','ÖREN','Bakırköy')
Insert Into Kisi values('Yalçın','UZUN','Beşiktaş')
Insert Into Kisi values('Murat','HAKSAL','Bakırköy')
Go
CREATE PROC spKisi
AS
SELECT * FROM dbo.Kisi
GO
Oluşturduğumuz “spKisi” isimli stored procedure’ü CREATE ENDPOINT ile IIS kullanmadan Web Servis olarak dış ortama aktaralım.
CREATE ENDPOINT sql_Adres
STATE = STARTED
AS HTTP(
PATH = '/Adres/Kisi',
AUTHENTICATION = (INTEGRATED),
PORTS = ( CLEAR ))
FOR SOAP(
WEBMETHOD 'spKisi'
(name='Adres.dbo.spKisi',
FORMAT=ROWSETS_ONLY),
WSDL = DEFAULT,
DATABASE = 'Adres',
NAMESPACE = 'http://localhost/Adres/'
)
GO
Oluşturduğumuz web servisine http://localhost/Adres/Kisi?WSDL adresinden erişebilirsiniz.
Şimdi bu web servisine oluşturacağımız yeni bir Windows Application ile erişelim.
Oluşturduğumuz projenin “Solution Explorer” penceresindeki proje ismi üzerinde farenin sağ tuşu tıklanır. Açılan kısayol menüsünden “Add Web Reference” komutu seçilir.
Açılan “Add Web Reference” penceresinin URL isimli metin kutusuna http://localhost/Adres/Kisi?WSDL değerini, Web reference name isimli metin kutusuna “AdresWebServis” değerini yazın ve “Add Reference” butonunu tıklayın.
Form1 nesnesinin üzerine btnListele isimli bir Button ve lstKisi isimli ListBox ekleyin. Formun görüntüsü aşağıdaki gibi olacaktır.
btnListele butonunun Click olayına aşağıdaki kodu ekleyin.
Private Sub btnListele_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnListele.Click
Dim proxy As New AdresWebServis.sql_Adres
proxy.Credentials = _
System.Net.CredentialCache.DefaultCredentials
Dim ds As System.Data.DataSet = proxy.Adres
For Each r As System.Data.DataRow In ds.Tables(0).Rows
lstKisi.Items.Add(r("ad").ToString() & " " & _
r("soyad").ToString())
Next
End Sub
Sonuç aşağıdaki gibi olacaktır.
Başka bir makalede görüşmek üzere...
Tamer ŞAHİNER
Tamer.sahiner@bilgeadam.com