Windows Azure'da veritabanı olarak SQL Azure

0 dakikada yazıldı

36074 defa okundu

Düzenle

[Aşağıdaki makalenin SDK2.5 ile beraber yeni Azure özelliklerine uygun
şekilde güncellenmiş halini
burada
bulabilirsiniz.]

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 "Databases"ı
seçerseniz veritabanı sunucuları yönetimine geçiş yapmış olursunuz.
Yukarıdaki ekran görüntüsünden de görebileceğiniz üzere uygun bir
subscription'ı seçtikten sonra ribbon'dan "Create" diyerek yeni bir SQL
Azure sunucusu yaratabilirsiniz. Sunucuyu yaratırken ilk olarak
sunucunun yer alacağı datacenter bölgesini seçmeniz, sonrasında da
administrator için kullanıcı adı ve şifre vermeniz gerekecektir. 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. Burada kesinlikle unutmamamız
gereken bir checkbox var :) Sanırım yukarıdaki ekran görüntüsünden hangi
Checkbox'tan bahsettiğim belli oluyorlar. Eğer o CheckBox işaretlenmez
ise.... durum vahim :) Yönetim paneli dahil kimse sunucuya bağlanamaz. O
nedenle o Checkbox işaretlenmeli :) Sonrasında tabi ki eğer kendi
development makinenizden de bağlanacaksanız bu sunucuya kendi IP'nizi
Firewall kurallarına eklemeniz gerek. Dikkat dikkat : ekran
görüntüsündeki gibi firewall kurallarını evde denemeyin :)

SQL Azure sunucusu ayakta.
SQL Azure sunucusu ayakta.

Artık sunucumuz ayakta, hemen ekranın sağ tarafında sunucunun tam yol
bilgisini de bulabilirsiniz. Artık bu bilgileri kullanarak isterseniz
sunucuya SQL Server Management Studio ile bağlanabilirsiniz ama dikkat
etmeniz gereken ufak bir nokta var. SQL Azure desteği Management
Studio'ya 2008 R2 sürümü ile beraber geldi. Yani SQL Server Management
Studio 2008 R2 :) indirmeniz şart, aksi halde kesinlikle SQL Azure'daki
bir sunucuya bağlanamazsınız. Nitekim R2'da da bağlanırsanız GUI'lerde
eksikler göreceksiniz maalesef şimdilik :(

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

Sunucumuz hazır olduğuna göre artık veritabanızımı da yaratabilirsiniz.
Ribbon'dan Create DB dediğinizde sizden veritabanı adı, çeşidi ve boyutu
istenecektir. Çeşitler arasındaki farklara şu anda girmeyeceğim :)
nitekim bu makalenin yazıldığı zamanda major farklar yok ama ileride
olacaktır. Boyut konusunda ise kabaca ihtiyacınızı tahmin ederek
ilerlemeniz gerek. Şu an için alabileceğiniz en büyük boyut 150GB,
ileride artarabilir. 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 "150GB 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 150GB'ı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ı.

Use yok! Evet, eğer her bağlantı zaten DB'ye özelse :) neden USE
olsun ki? Yok!

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!