PyxisVeri tabanlarına erişimi daha serileştiren yeni bir sistem, büyük boyutlu web uygulamalarını 3 kata daha hızlı hale getirebilir.

Bugün pek çok web sitesinde büyük boyutlu veri tabanları kullanılıyor: alış veriş siteleri, seyahat siteleri, sosyal paylaşım siteleri, vs. Bu sitelerde gerçekleştirilen herhangi bir işlem pek çok veri tabanı sorgulamasının aynı anda çalışması, dolayısıyla da tepki süresinin artması demek. 

Bu hafta, 38. Uluslararası Büyük Boyutlu Veri Tabanları Konferansı’nda , MIT Bilgisayar Bilimi ve Yapay Zeka Laboratuarı, we sitelerinin ver tabanlarına erişimini 3 kat daha serileştiren yeni bir sistem sunumu yaptı. Aynı konferansta sunulan ve benzeri bir hızlanma iddiasında olan diğer sistemler farklı programlama dilleri bilgisi gerektirirken, MIT’nin geliştirdiği Pyxis adındaki sistem, web uygulamacılarının yaygınlıkla kullandıkları dillerde çalışıyor.

Bir web hizmeti ile ilgili işlemlerde, diyelim ki belli bir rota üzerindeki uçuşlardaki müsaitlik durumu sorgulandığında, pek çok veri sorgulama ve hesaplama işlemi gerçekleşir. Tipik olarak veriler bir sunucuda saklanır ve hesaplama ya da uygulama mantığı başka bir sunucu üzerinde çalışır. Uygulama ve veri tabanı sunucuları, işlemi tamamlamak için bir kaç kez alışverişte bulunurlar. Ancak, uygulamanın sık kullanılan bölümleri veri tabanı sunucusunda çalışabilir ve bu şekilde sunucular arası iletişime gerek kalmayacağı iin zaman ve bant genişliği tasarrufu sağlanır. Öte yandan mantık uygulamaları ve veri tanaı sorgulamaları genelde farklı dillerde yazılır ve bu şekilde de farklı tipte operasyonlar optimize edilir. Uygulama sunucusundaki kodu veri tabanı sunucusuna atmak, bu kodun yeniden yazılması, hatta yeniden düşünülmesini gerektirir. Bir uygulamanın da bug olmadan hangi sunucunun hangi durumda hangi bilgiyi değerlendireceğini hesaplayarak ikiye bölünmesi oldukça zordur. Diyelim ki bu başarıldı, bu sfer de veri tabanı sunucusuna gelen taleplerin sürekli değişmesi ve trafiğin artması durumunda da CPU üzerine gelen fazla yükün, sunucunun kapasitesinin üzerinde zorlanmasına neden olması, dolayısıyla daha fazla zaman kaybı ihtimali yüksektir. 

 

Pyxis, bu üç problemi bir arada çözüyor. Otomatik olarak bir programı uygulama ve veri tabanı sunucusu arasında bölüştürüyor ve matematik olarak ispatlanmış şekilde programın operasyonunda bir problem yaratmıyor. Veri tabanı sunucusu üzerindeki CPU yükünü de sürekli takip ederek bu sunucunun üzerindeki uygulama yükünü arttırıyor ya da azaltıyor.

Bunu yaparken Pyxis, bir programı grafiğe, düğüm ve bunları bağlayan kenarlardan oluşan bir veri yapısına dönüştürerek işe başlıyor. Bunun en yakın örneği belki de düğümlerin bilgisayarları betimlemek üzere dairelerle ve bu bilgisayarları birbirine bağlayan hatların betimlendiği kenarların belirtildiği bir ağ diagramı. Ancak, Pyxis’de düğümler bireysel emirleri, kenarlar ise bu emirlerin gerektirdiği veri miktarını betimliyor.

Alvin Cheung, Elektrik Mühendisliği ve Bilgisayar Bilimleri’nde (EECS) lisans üstü öğrencisi ve bu konuda hazırlanan makalenin başyazarı. Danışmanı, EECS profesörü Sam Madden ve CornelL Universitesi Bilgisayar Bilimleri’nden Owen Arden’ın da katılımıyla hazırlanan çalışmayı açıklarken Madden, “Bir emri yerine getirmek için yürütülmesi gereken komutlar arasındaki ilişkiye ve veri alış verişine göre bağımlılığın belirlendiğini ve bu bağımlılığın da değişkenin boyutunu belirlediğini” söylüyor. Eğer bütün program tek bir bilgisayarda çalışırsa, değişken ana hafızada saklanacak ve her bir komut bu hafızaya doğrudan ulaşacakken, ardışık komutlar farklı bilgisayarlarda ise verinin iki bilgisayar arasında aktarılması gerekiyor. Bilgisayarlar arasında veri aktarmanın da bir maliyeti var. Madden, “Dolayısıyla, bu düğümlerin farklı iki sunucuda yerleştirirlerek bu veri aktarım yükünden kurtulmak istedik” diyor. Cheung’un eklediği Pyxis’in bu düğümleri yerleştirirken veri tabanı sunucusuna dinamik olarak bazen daha fazla hesaplama yüklediği, bazen de bu yükü azalttığı. 

Testler sırasında standart bir set veri tabanı alış verişi kullanılmış ve Pyxis, tipik uygulamalara göre kullanılan bant genişiliğini yarı yaruya azaltırken, 3 kat daha hızlı sonuç vermiş.

Pyxis, şu anda pek çok ticari web uygulamasında tercih edilen dil Java’da yazılan programlarla çalışıyor. Diğer popüler dillere adaptasyonu ise yalnızca programı grafik modele çeviren kodun revizyonu ile, sistemin geri kalan kısmı aynen korunarak, mümkün.

Devam eden çalışmada, Pyxis makalesinin dört araştırmacısı, MIT Elektrik mühendisliği ve bilgisayar bilimi yardım doçenti Armand Solar-Lezama ile işbirliği yaparak, veri tabanı bağımlı web uygulamalarının akışını daha da kolay hale getirmeye çalışıyorlar. Veri tabanı uygulamalarının çoğu SQL gibi bildirimli dillerde yazılmış ve bu da yazılımcılara bir hesaplama yöntemi belirlemeden bir değişkenin en yüksek değerini hesaplama gibi yüksek seviyeli komutları kullanma imkanı sağlıyor. Veri tabanı sistemi ise bu komuta cevap vermek üzere veri karakteristiğine göre en verimli algoritmayı seçiyor.  

Javayı daha rahat kullanan web programcıları ise, SQL ile bazı işlemler daha kolay şekilde yapılabilecek olsa da, veri tabanı sunucusundan daha fazla veriyi uygulama sunucusuna almayı ve uygulama sunucusundan işlemleri gerçekleştirmeyi tercih ediyorlar. Araştırmacılar, Pyxis üzerinde geliştireckeleri sistemle statükoyu yıkarak bu tip programlama verimsizliklerini de belirlemeyi ve uygulama kodunu SQL sorgularına çevirerek, en verimli uygulamada çözmeyi planlıyorlar.

Adaptasyon: http://web.mit.edu/newsoffice/2012/making-web-applications-more-efficient-0831.html