Eylül 2015 ~ Yasin MÜFTÜLER - MS SQL Server
21:49 – by Yasin MÜFTÜLER 0
RAID (redundant array of independent disks) levels olarak bilinen bu yapı farklı seviyelerden oluşur.Bunlar: RAID Level 1, RAID Level 2, RAID Level 3, RAID LEVEL 4, RAID Level 5 ve RAID Level 10'dur.
Bu seviye disk striping olarak da bilinmektedir. Datalar bloklar haline bölünerek farklı fiziksel diskler üzerinde saklanırlar. Birden fazla fiziksel disk kullanımlarında RAID Level 0 iyi bir kullanım sunmaktadır. Bundan dolayı yüksek okuma ve yazma performansı sunar. Her ne kadar bu konuda organizasyonlara artı sağlasada oluşacak hata ve kusurlar söz konusu olduğu zaman bunları absorbe etme konusunda bu kadar başarılı bir yöntem olamamaktadır. Genellikle kurumlar SQL Server'ın data file'ları RAID LEVEL 0 düzeyinde saklama eğilimindedirler.
Raid Level 1 disk mirroring olarakta bilinmektedir. Dataların kopyaları farklı bir fiziksel disk'te daha tutulur. Bu açıdan RAID Level 1 oluşacak hatalar ve veri kayıplarını tolere etsede SQL Server'ın yazma performasını düşürecektir. Çünkü aşağıdaki resimde de gördüğünüz gibi ortada iki farklı fiziksel disc var ve bu iki farklı disc'ede aynı veriyi kayıt edecektir. Ama buna karşılık Raid Level 1 okuma performasını yükseltir. Raid Level 0 ' a göre daha pahalı bir seçenektir. Çünkü data'lar disc'lere iki kere yazıldığından dolayı daha fazla yer işgal etmekte bundan dolayıda daha fazla disc alanına ihtiyaç duymak zorunda kalabilirsiniz. Kurumlar genelde hatalara karşı toleransı daha yüksek olduğu için kullanmakta fakat kullanırken data file'ları saklamak yerine SQL SERVER Transaction log file'ları burada saklarlar.
Raid Level 2 data ve parity dataları çoklu fiziksel disk'lere böler. Raid Level 1 den biraz daha fazla okuma ve yazma perfromansı sunmaktadır. Parity dataları birden fazla fiziksel disc üzerinde saklar. Etkin şekilde disk alanı sunmamasından ve Raid Level 2 çok efektif bir yöntem olmamasından dolayı çok kullanılan ve tercih edilen bir yöntem değildir.
Data striping methodu açısından Raid Level 2 ye benzemektedir. Fakat bu yöntemde daha iyi bir performans için parity data'lar tek bir disc üzerinde saklanırlar. Raid Level 2 ye göre biraz daha fazla performans artışı göstermektedir.
Raid Level 4, Raid Level 2 ve Raid Level 3 ile data striping açsından aynı metadolojiye sahip olmasına rağmen daha büyük disc blokları söz konusu olduğu için daha yüksek performans sağlamaktadır. Raid Level 3'teki gibi parity datalar aynı diskte saklanırlar. Aslında bakarsak Raid Level 2 ve Raid Level 3 ile aynı ailedendir. Fakat transaction tabalı işlemlerde çok verimli olduğu söylenemez.
Bu level aslında en çok tercih edilen raid stratejisidir. Yapı olarak Raid 4' e benzemektedir. Çünkü burada da datalar dizi halindeki disklerde geniş bloklar içerisinde tutulurlar. Fakar Raid Level 5' te her bir fiziksel disk kendi içerisinde parity dataları saklar. Burada veri yedekleme stratejisi parity'ler tarafından sağlanmaktadır. Data ve parity bilgileri diskler içerisinde düzenlenmiştir. Bundan dolayı da paritiler farklı fiziksel diskler içerisnde saklanmaktadır. Bu yapıdan dolayı Raid Level 1' e göre performans açısından daha verimli çalışmaktadır. Fakat strip'lerden birisi bozulursa (disk'in fail olma durumu) okuma performansı düşecektir. Kurumlar genellikle bu stratejiyi SQL Server'ın data file'larını saklamak için kullanırlar.
Raid Level 1 ve Raid Level 0 'ın ortak kullanımıdır diyebiliriz. Disc strip'lerinden biri, bir diğerinin kopyasıdır. Raid Level 10 en yüksek okuma ve yazma performansı sağlayan yapıdır. Aynı zamanda fail durumlarına karşıda yüksek tolerans sağlar. Fakat çok daha fazla disk kullanımına ihtiyaç duyulduğu için aralarında ki uygulanması en pahalı strateji denilebilir.
Posted in: raid , raid level , raid level 0 , raid level 1 , raid level 10 , raid level 2 , raid level 3 , raid level 4 , raid level 5 , raid level nedir , sql server raid , sql server raid level | Read More »
Posted in: performance tuning , sql server Where , sql server where clause | Read More »
Attunity Kullanarak MS SQL Server'dan Oracle'a Migraiton
22:31 – by Yasin MÜFTÜLER 0
Veri transferinde kullanılan Attunity’i bu yazımda ele alacağım. Attunity'i tanıtırkende aynı zamanda MS SQL SERVER 2014 ve ORACLE arasında migration işlemi nasıl gerçekleşir bunu da resimleyerek anlatmaya çalıştım. Öncelikle Attunity'nin desteği sadece MS SQL Server ya da Oracle ile sınırlı kalmıyor; IBM Informix, MYSQL, Sybase gibi farklı firmalarında veritabanlarına destek vermekte.
Benim anlatacağım örnekte SQL Server'dan Oracle, Northwind database'ni Oracle'da tanımlamış olduğum yasin şemasının içerisine aktaracağım. Öncelikle bu işlemi yapabilmek için Attunity ' de task oluşturmanız gerekmektedir. Bunun için resim1.1 de sol üstte bulunan new task'i tıklıyoruz.
Karşımıza gelen bu ekranda aslında task'in ne amaçla oluşturduğumuzu belirtiyoruz. Gördüğünüz gibi 3 farklı seçeneğimiz mevcut:
Full load seçeneğinde aslında adında anlaşılacağı üzere kaynak tablodan verileri alıp hedefe tamamını göndermekte ve işlem bittiğinde de task kapanmaktadır.
Apply change'i seçerseniz bu noktada ise öncelikle full load'ı kullanmış olmanız gerekmektedir. Amaç kaynak tablonun birebir kopyasını hedef tarafta oluşturmak ve her yapılan değişiklikleri uygulayarak kaynak ile hedefin bire bir kalmasını sağlamak. Bundan dolayı arka planda Attunity çalışarak sürekli olarak kaynak ile hedefi eşitlemeye çalışır.
Store Changes ise apply changes den farklı olarak kaynak ile hedefin eşitlenmesine ihtiyaç duymaz. Sadece siz task'i oluşturduktan sonra kaynak tabloda yapılan değişiklikleri hedef tabloya yansıtmaya başlar, task çalıştırılmadan önceki veriler hedef tabloda bulunmaz.
Bu üç farklı seçenekten ihtiyacınıza uygun olanı belirledikten sonra task'e bir isim ve ihtiyaç duyarsanız description kısmına açıklama yazabilirisniz. Arından tamam diyerek task'i oluşturmuş oluyoruz.
Task oluştuktan sonra karşınıza resim 1.3'deki gibi bir ekran gelecektir. Bu noktada artık bizim veritabanlarımızı tanımlamamız gerekmektedir. Bunun içinde ekranın üst orta kısmında bulunan manage database'i tıklıyoruz.
Karşımıza gelen ekranda name kısmında tanımlamak istediğimiz databas’e istediğimiz herhangi bir isim verebiliriz. Description kısmında ise task'i bize daha sonra hatırlatacak bir açıklama yazabilirsiniz. ROLE kısmında seçeceğiniz database'in kaynak mı yoksa hedef database olduğunu belirtmeniz gerekmektedir. TYPE kısmında kullanacağınız database'i seçmeniz gerekmektedir. Ben yukarıda MS SQL Server'ı kaynak database olarak tanımladım tavsiye olarak SQL SERVER authentication olarak bağlanmanızı tavsiye ediyorum. Çünkü Windows Aut. bir kaç kez denememde hatalar aldım. Bundan sonra belirtmiş olduğunuz kullanıcının şifresini de yazarak hemen altında ilgili database'i (ki ben Northwind'i seçtim) belirterek bu kısımdaki işi en son olarak ekreanın sol alt köşesinde bulunan test butonu ile bağlantıyı kontrol ederek eğer başarılı yazısını alıyorsak noktalayabiliriz.
Resim1.5 de ise hedef veritabanını düzenliyoruz. Burada da aslında mantık yukarıda yaptığımız işlem ile tamamen aynı. Hedef olarak ben Oracle'ı seçtim Oracle' da yasin isimli şemamı ve şema şifresi ile birlikte yazarak tanımlamış oldum. Burada dikkat edilmesi gereken bir diğer husus ise şemanızın ilgili yetkilere sahip olmasına dikkat edin yoksa bağlantıyı test ettiğiniz zaman hata alacaksınızdır. Eğer ilgili yetkiler şemaya tanımlanmazsa Attunity'nin Oracle bağlanması mümkün olmayacaktır. Connect session ve resource yetkilerini vermek bağlanma tarafında herhangi bir sıkıntı çıkarmamaktadır. Ama daha sonra yapacağınız işlemler doğrultusunda vermeniz gereken yetkiler de bu doğrultuda değişiklik gösterecektir.
Resim1.6 da gördüğünüz gibi sol tarafta tanımladığımız iki database de gözükmekte. Bu noktada yapmamız gereken işlem ise hedef veritabanını ve kaynak veritabanını ortada bulunan alana sürükleyip bırakmak. Ekranın sağ bölümünde table selection kısmında tablo seçimini yapmak için tıklıyoruz.
Schema kısmında bu alana schema'nızın ismini yazıyoruz Northwind'in şema ismi dbo olduğu için ben bunu yazdım. Daha sonra eğer table kısmını herhangi bir şey yazmadan search'ü tıklarsanız database içinde bulunan tablolar listenecektir. Bu noktada istediğiniz tabloları seçip ekleyebilirsiniz. Ayrıca yukarıda include butonuna tıklayarak şemanızıda dâhil etmeniz gerekmektedir.
Resim 1.6 ekranın sağ üst köşesinde bulunan global transformations butonuna tıklayarak yukarıdaki ekrana ulaşırsınız burada schma, table ve kolonları tekrardan isimlendirebilir, kolon ekleyebilir yada silebilir veya veriler kaynaktan hedefe aktarılmadan önce veri tipleri üzerinde çeşitli manipülasyonlar uygulayabilirsiniz. Bu noktada Attunity oldukça işlevsel ve basit bir arayüzle kullanıcının işini oldukça kolaylaştırmakta ve çeşitli inisiyatifler sunarak kaynaktan tablolar gönderilmeden ihtiyaçlar doğrultusunda çeşitli değişikliklere uğratılmasını sağlamaktadır.
Resim 1.6 da ekranın sol üst köşede bulunan task butonuna basarak server'ı seçtiğmizde karşımıza gelen ekranda Notification bölümünde bildirim ayarlarını düzenleyebiliriz bu sayade task tamamlandığı zaman ya da çalışmadığı zaman mail yolu ile bilgilendirilirmiş oluruz. Bu ekrandan lisans ayarlamaları, hata düzenlemeleri log'lanma seçenekleri ve zamanlama ile ilgili ayarlamalar yapılabilir..
Yukarıdaki resimdeki seçeneklerde task çalıştırma, task'i durdurma ya da tekrardan hedef tabloya yönlendirme yaptırılabilinir. Aşağıda görüldüğü gibi aslında Sql Server'da job'lara alışkın olan kişilerin yabancılık çekmiyeceği bir yapı var çeşitli zaman aralıkları tanımlayarak zamanlama yapılabilmekte.
Not: Attunity çalışırken MS SQL Server (diğer database lerde de bu durum söz konusu olabilir.) log kayıtlarını yapmamaktadır. Çünkü Attunity kayıtları log dosyasına erişip buradan almakta ve bundan dolayı log'lanma durumunda kesintiye sebebiyet vermektedir. Eğer veri kaybı tahammülünün hiç olmadığı bir sistem üzerinde çalışıyorsanız dikkatli olmanız gerekmektedir. Konu ile ilgili daha ayrıntılı çalışma yaptığım zaman buradan sizinle paylaşıyor olacağım.
Posted in: Attunity nedir , migration , Sql server 'dan oracle migration , Sql server oracle , What is Attunity | Read More »