Azure Üzerinde Cross Database’den Sorgu Çekme

Selamlar,

Bu makalede, Azure üzerinde 2 farklı database üzerinde bulunan tablolardan, tek bir sorgu çekilecektir. (Cross DB Query)

1-) Öncelikle gelin Azure üzerinde 2 farklı Sql DB yaratalım:

Aşağıda görüldüğü gibi Database sekmesinden, Sql Database seçilir.

Aşağıda görüldüğü gibi, Person adında bir Database yaratılır.

Aşağıda görüldüğü gibi, Structure Sql Database’i de benzer şekilde oluşturulur.

Person DB’si üstünde Student Tablosu, aşağıdaki gibi oluşturulur:

Structure DB’sinde de Scholl Tablosu,aşağıdaki gibi oluşturulur:

Not: “Az önce oluşturulan Scholl ve Student Tablolarına, Dummy Data atma işini size bırakıyorum :)”

Şimdi sıra geldi, bu 2 farklı database üzerindeki tabloları Joinleyip Sorguyu çekmeye.

Bunun için, öncelikle veritabanın bir Master Key’i olması gerekmektedir.

1-)MASTER KEY oluşturulur: 

2-) EXTERNAL DATA SOURCE CREDENTIAL: Şimdi sıra geldi harici veritabanına erişim için gerekli bilgilerin tanımlanmasına. Burada girilen bilgilerin, diğer database’e erişmek için kullanılan SQL Kimlik Doğrulaması ile tamamen aynı olması gerekmektedir. 

NOT: Login olunan user’ın, DB’de erişilecek tüm kaynaklara yetkisinin olması gerektiğini unutmayın. Örneğin bu makalede Structure Server’ına, Person Server’ından erişilebilmesi için Credential tanımlanmıştır.

3-) EXTERNAL DATA SOURCE : Şimdi sıra geldi, bulunulan DB’den(Person) ==> dışardaki bir DB’ye(Structure) erişmeye. Kısaca Person DB’si üzerinden, Structure DB’sine erişecek bir Kaynak oluşturulur.

ExternalAccessCredential: Yukarıda tanımlanan DB’nin erişim bilgileridir.

4-) EXTERNAL TABLE : Son adım olarak, diğer DB’den erişilecek tablonun eşleniğinin, bulunulan yani sorgu yapılan DB’de de yaratılmasına geldi. Bu örnekde “Structure” DB’sindeki “Scholl” tablosunun eşleniği, “Person” DB’sinde de yaratılmıştır. İlgili tablonun adı, datanın çekileceği kolonların adları ve türleri birbirleri ile eşleşmelidir. En sona konan WITH ile, erişilecek veri kaynağı belirtilir.

NOT: Burada yaratılan tablo, bir çeşit Adaptor görevi görmektedir. Kısaca datanın çekileceği tablonun, tüm kolonlarının tanımlanmasına gerek yoktur. Sadece istenen kolonların ad ve tiplerinin, birbirleri ile eşleşmesi şartı ile tanımlanması yeterlidir.

5-) SONUÇ TEST: İki farklı Database’deki (Student, Scholl) tablolarından (Cross Database) sorgu aşağıdaki gibi çekilmiştir. Sorgunun hemen altında, dönen kümülatif result ekrana basılmıştır.

Bu makalede, bussines gereği farklı DB’lerden çekilen “Cross Database Sorgusunun” nasıl olması gerektiğini, 5 adımda inceledik. İlk sorgu çekildiği anda, farklı bir DB’den de  credentiallar ile izin alması gerekmesinden dolayı, ilk çalışma süresi normalin biraz üzerinde olabilir. Yoğun, anlık yükün çok olduğu performansın önemli olduğu projelerde,  aynı network üzerinde olmayan DB’lerden data çekilmesi, özellikle oluşabilecek yavaşlıklardan dolayı tercih edilmemelidir.

Geldik bir makalenin daha sonuna. Yeni bir makalede görüşmek üzere hepinize hoşçakalın.

Source:

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Erdinc dedi ki:

    Hocam teşekkürler makale için. Linked server dan farkı db lerin azure üzerinde çalışması mı?

    • borsoft dedi ki:

      Selam Erdinç,

      Hayır. Bu direk Sql üzerinde çalışan bir yapı. Bu makalede sadece DBler Azure üzerinde o kadar. Linked’in de tüm DB birbiri ile bağlantılı. Bu örnekde sadece ilgili tabloları External Data Source olarak tanımlıyorsun. Bu da demek oluyor ki performance.

      İyi çalışmalar.

  2. özer dedi ki:

    makale için teşekkürler, scholl değil school olacaktı gözden kaçmış sanırım :)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.