Azure'da veritabanı olarak SQL Database (SDK2.5)

0 dakikada yazıldı

14626 defa okundu

Düzenle

Azure ortamına bir ASP.NET sitesini web role olarak atmayı gördük, hatta
örnek bir "Hello World" de yaptık :) Peki ya veritabanı? İşte güzel
haber! Veritabanı kısmı Azure dünyasında belki de en az değişen yer :)
SQL Azure doğrudan bildiğimiz MSSQL ile uyumlu. Tabi minik farklılıklar
var, onlara göz atacağız ama önemli olan şu ana kadar kullandığınız
Entity Framework, LINQ2SQL, ADO.NET, NHibernate... hepsi SQL Azure ile
de birebir çalışabilir durumdalar. Güzel haberleri paylaştıktan sonra
gelin detaylara bakalım ;)

İlk SQL Azure veritabanımız....

SQL Azure ortamında bir veritabanı yaratmak için önce kendimize özel bir
SQL Azure sunucumuz olması gerekiyor. Azure'daki her serviste olduğu
gibi SQL Azure'da da tabi ki sanal bir sunucudan bahsediyoruz. SQL
Azure'un arkaplanındaki mimariye sonra hızlı bir göz atarız. Şimdilik
aksyon peşinde koşalım ;)

İlk SQL Azure sunucumuz yolda...
İlk SQL Azure sunucumuz yolda...

Azure web yönetim paneline gittikten sonra sol altta "SQL Databases"ı
seçerseniz veritabanı sunucuları yönetimine geçiş yapmış olursunuz.
Yukarıdaki ekran görüntüsünden de görebileceğiniz üzere sağ alt düğmedeki artıya basarak gelen ekranda hızlıca tüm ayarları yapıp yeni bir sunucuda yeni bir veritabanı isteyebiliyoruz. Eğer hali hazırda daha önce yarattığınız bir SQL sunucusu varsa o sunucuyu seçerek aynı sanal sunucu içerisinde de yeni veritabanları yaratma şansınız var. Bu süreçte tabi ki sunucunuzun yer alacağı veri merkezini (datacenter) seçmeniz gerekecek. Eğer bu sunucuyu ve içerisindeki veritabanınızı Azure ortamındaki bir uygulama kullanacaksa uygulama ile veritabanı sunucunuzun aynı veri merkezinde olmasında da dikkat etmenizde fayda var. Son olarak
administrator için kullanıcı adı ve şifre vermeniz gerekecek. Bu
noktada SQL Azure'un Windows Authentication desteklemediği (doğal
olarak) dikkatinizi çekecektir :)

SQL Azure'umuzun Firewall ayarları.
SQL Azure'umuzun Firewall ayarları.

Kullanıcı adı ve şifre detaylarını geçtikten sonra sıra geliyor SQL
sunucunun önündeki Firewall'un ayarlarına. Bu ayarlara sunucunuzu seçtikten sonra "Configure" tabından ulaşabilirsiniz. Sizin o an için kullandığınız IP doğrudan karşınıza gelecektir. İsterseniz o IP'yi doğrudan Firewall kurallarına ekleyebilirsiniz. Böylece hali hazırda kullandığınız IP ile veritabanına bağlanabilirsiniz. IP'niz değiştiğinde gelip yeni IP'yi buraya yazmanız gerekecek. Bunu engellemenin bir yöntemi de IP-Range vermek ama bu da güvenlik açısından süper bir hareket sayılmaz. Bu noktada karar sizin :) Ekran görüntüsünde de görebileceğiniz üzere eğer alt taraftaki "Windows Azure Services" iznini vermezseniz Azure servisleri dahi veritabanına ve sunucuya ulaşamayacaktır.

SQL Azure sunucusu ayakta.
SQL Azure sunucusu ayakta.

Artık sunucumuz ayakta. İçinde de hazır bir veritabanı var. Eğer yeni veritabanları eklemek isterseniz hemen veritabanı listesinin bulunduğu sayfada, bu sefer de alt barda orta kısımdaki artı düğmesine tıklayabilirsiniz.

Veritabanımızı yaratalım.
Veritabanımızı yaratalım.

Yeni bir veritabanı yaratırken normalden farklı olarak karşılaştığınız seçenekler Azure'un size sağlayacağı performans ve boyut ile ilgili. Basic Tier olarak adlandırılan en düşük seviyeli fiyatlandırmada 5DTU performans ile 2GB'a kadar yükselebiliyorsunuz. Standard'da 1-50 DTU arasında 250GB, Premium'da ise 100-800 DTU ile 500GB'a kadar çıkabilirsiniz. Tüm bunlar arasından bir veritabanı boyutu ve performans seçeneği seçerken hemen ekranın altında seçtiğiniz sunucunuzun bulunduğu makineden "Available DTU" miktarına da göz atın derim. Seçtiğiniz tier doğal olarak oradaki var olan performans miktarının üstünde olmamalı. Eğer durum öyleyse yeni bir SQL Azure sunucusu almanın vakti gelmiş demektir. Eğer daha büyük veritabanı alanına ihtiyacınız
varsa SQL Federation desteği, horizontal / vertical partitioning gibi
konular girecektir işin içine. Bu noktada hafif hayal kırıklığına
uğrayanlar ve "500GB/800DTU neyime yeter?" diyenler varsa hızlı bir cevap
veriyim :) "Blogu takip etmeye devam edin" :) Şaka bir yana, evet
ileride paylaşacağım bazı konular size farklı bir perspektif
kazandıracaktır ve aslında 500GB'ın yetmeme ihtimalinin ne kadar da az
olduğunu alternatifleri görünce eminim ki siz de kabul edeceksiniz ;)
Yine de tekrar ediyim :) h/v partitioning uygulanabilir teknikler
arasında.

ConnectionString'lerde pek bir değişiklik yok gibi :)
ConnectionString'lerde pek bir değişiklik yok gibi :)

Yukarıdaki görüntüyü özellikle Azure yönetim panelinden bir screenshot
olarak almak istedim. Gördüğünüz üzere connection stringlerde bir
değişiklik yok. Zaten daha önce de bahsettiğimiz gibi erişim için aynı
araçları kullanıyor olacağız, connection string'de de uygun sunucu
adresini, kullanıcı adını ve şifreyi vermek yeterli. Birkaç ufak
farklılıktan biri Encrypt=True'nun zorunlu olması ve kullanıcı adının
sonuna @ işareti ile beraber sunucu adının eklenmesi gerektiği.

Peki hiç mi kötü haber yok?

Olmaz olur mu :) ama bu haberlerin ne kadar kötü olup olmayacağı biraz
da size bağlı :) Projelerinize ve MSSQL'de kullandığınız özelliklere
bağlı.

Database'ler arası cross-query yok! Her connection stringde database
adı bulunmak zorunda ve her connection bağlantı kurduğu DB'ye özel. Bir
connection üzerinden birden çok DB'ye ulaşma şansınız yok, bunlar aynı
SQL Azure sunucusunda olsa da birşey değişmiyor. O nedenle cross db
çalışan querylerinizi değiştirip DAL katmanına almanız gerekecek bu
mantıkları.

Backup Database yok! :) Sakin! Veritabanınızın yedeğini tabi ki
alabiliyorsunuz fakat eski yöntemlerle değil. Nasıl olabileceğine dair
bir ipucu olsun diye aşağıdaki ekran görüntüsü paylaşıyorum. Bir başka
günde, makalede bu konuyu ayrıca inceliyor oluruz.

Backup senaryosu için ipucu...
Backup senaryosu için ipucu...

Global Temp Tables yok! Doğal olarak...

CLR Stored Procedure yok. Bu özellik ileride gelebilir. Şimdilik
yok. Ama normal SP'lerle ilgili bir sorun yok aman diyim yanlış
anlaşılma olmasın :) CLR SP'lerden bahsediyoruz.

Tüm bunlarla beraber SQL Azure bir migration senaryosunda uygulamanızı
Azure ortamına alırken size en arkadaşça davranacak olan servistir :)
Yukarıda bahsettiğimiz birkaç nokta haricinde herşey aynı ve herhangi
bir sorun yaşamanız söz konusu değil.

Kolay gelsin!