Project Voldemort

Üniversitede bilgisayar mühendisliği okuyup da veritabanları dersini almayan yoktur. Veritabanı dersinde bize ilk öğretilen şey "normalization" oldu, dediler ki :

  • Aman tablolarda tekrar eden bilgiler olmasın. (Primary Keys, unique constraints)
  • Sakın farklı yapıdaki bilgileri getirip aynı tabloya koyma. Herbir farklı yapı için ayrı bir tablo oluşturmaya özen göster.
  • Müşterinin adres bilgilerini Adres tablosuna, sipariş bilgilerini Siparis tablosuna, kişisel bigilerini Musteri tablosuna koy. Denizli'den sipariş veren 30 yaşından küçük müşterileri bulmak için Adres, Sirapis ve Musteri tablolarını çarp (join dediğimiz olay da sonuçta tabloların bir çarpımıdır), işte sana istediğin bilgi.

Bu yöntem yıllarca bilişim sektörünü idare etti. Hala birçok alanda idare etmeye devam ediyor. Bugün Oracle olmasaydı ne yapardık :D Artan ihtiyaçları karşılamak için günümüzde uyguladığımız yöntem, eğer bütçe yeterli ise Oracle'ı çalıştıracak daha güçlü bir makina satın almak oluyor. İşlemci gücünü artırmak için her ihtiyaçta daha güçlü bir makinaya taşınmak gün gelir çözüm olmaktan çıkar. Bu tür durumlarda iş gücünü birden fazla sunucuya dağıtmak gereklidir. İlişkisel veritabanları dağıtık ortamlarda (distributed) beklenen performansı veremeyebilirler, çünkü network üzerinde farklı makinalarda olan sunucular arasında basit bir SQL join'i çalıştırmak çok güçtür.

Web 2.0 ile beraber internet kullanıcılarının içerik paylaşması internet sitelerinin işlemesi gereken bilgiyi inanılmaz derecede artırdı. Bunun en çarpıcı örneği Twitter. Twitter aracılığı ile gönderilen tweet sayısı günde 50 milyon'a ulaşmış durumda. (Saniyede yaklaşık 600 tweet) Depolanan veri miktarı arttıkça bu verileri bölümleyip (partition) birden fazla yerde saklama ihtiyacı ortaya çıkıyor. Milyonlarca kayıt barındırıdan ve farklı disklerde olan tablolar ile yapılan join işlemleri uygulamaların okuma (read) performansını olumsuz etkilediği için NoSQL depolama sistemleri geliştirilmiştir. NoSQL sistemler, RDBMS'lere göre veriyi daha hızlı işlerler, okuma ve yazma performansları RMDBMS'lere göre çok daha iyidir. Bunun diğer bir sebebi de RDBMS'lerin ACID (atomicity, consistency, isolation, durability) kısıtlarını yerine getirmek zorunda olmaları ve bunun için ekstra işlemler yapmak zorunda kalmalarıdır. NoSQL depolama sistemleri RDBMS'leri ortadan kaldırmayacak fakat bazı uygun projelerde RDBMS'lerin yerini alacak gibi gözüküyor.

Bu yazıda LinkedIn'in kullandığı ve duyurduğu bir proje olan Project Voldemort'tan bahsedeceğim. LinkedIn, iş dünyasının facebook'u olarak biliniyor. SSS sayfasında söyledikleri doğruysa 8 Nisan 2010 itibari ile 65 milyon üyesi varmış. 65 milyon üyenin birbirleri ile olan bağlantılarını, iş tecrüblerini, oluşturdukları profesyonel grupları hesaba katınca ortaya inanılmaz boyutlarda bir veri çıkıyor. LinkedIn mühendisleri (eminin onların bizlerden bir farkı yok :D ) bu kadar çok veriyi saklamak ve işlemek için Amazon'un Dynamo'sundan ve memcached'den esinlenerek Voldemort'u yazmaya karar vermişler. Böyle güzel bir projenin ismi neden Voldemort olur onu da anlamış değilim. Bknz : Lord Voldemort

Project Voldemort'un ne olduğunu kısaca şöyle açıklayabiliriz:

  • Dağıtık (distributed) bir sistemdir. Veriler birden fazla lokasyona dağıtılmış saklanabilir.
  • Verilere erişim aynı bir Hashtable'a erişim gibi key'ler ile yapılır. SQL gibi bir sorgulama dili desteklemez.
  • Verileri diske yazar. Sistemin kapatılıp açılması verilerin kaybolmasına sebeb olmaz.

Projesinin ana sayfasında yazan Voldemort'un ne olduğunu anlatan maddeler ise şöyle:

  1. Veriler otomatik olarak sunucu grubundaki diğer makinalara kopyalanır(replicated)
  2. Veriler otomatik olarak bölümlenir (partitioned). İstediğin bir veriyi bulmak için bütün makinalar aranmaz, sadece tek bir makinaya bakarak veriler bulunabilir.
  3. Sunucu grubu içindeki bir sunucunun kapanmasından uygulama etkilenmez.
  4. Veri bütünlüğünü sağlamak için veriler versiyonlanır.
  5. Her bir sunucu diğer sunuculardan bağımsızdır. Single Point Of Failure (bunun türkçe karşılığını bulamadım. Kendim birşey uydurayım dedim beceremedim) SPOF yoktur.
  6. Basit bir arayüzü vardır. SQL desteklemez. Join'leri kod içinde sizin yapmanız gerekir.
    value = store.get(key)
    store.put(key, value)
    store.delete(key)
  7. Verileri diskte depolarken ön belliğinden, disk okuması yapmadan, verilere erişim sağlar. Ayrıca bir caching katmanı kullanmaya gerek kalmaz.
  8. Bu çok hoşuma gitti : Verileri depolama katmanı taklit edilebilir(mockable). Unit testler sadece hafızada çalışan bir Voldemort instance ile yapılabilir.

Bu projeyi deneme fırsatım olmadı. En kısa zamanda kurup örnek bir projede kullanıp, izlenimlerimi bu sayfalarda paylaşacağım. Buraya kadar okuduklarınız ilginizi çektiyse projenin sayfasına gidip daha detaylı bilgiye erişebilirsiniz.

7 Haziran 2010

Posted In: Gezegen, nosql, voldemort

Oracle’ın Linux stratejisi Ubuntu mu olmalı?

Bu adresteki haberin Türkçe çevirisini paylaşmak istiyorum. Elimden geldiğince cevirmeye çalıştım. Keyifli okumalar:



Oracle geçtiğimiz yıllarda yaptığı satın almalarla, pazarda önde gelen teknolojileri portföyünde topladı. Fakat tüm bu satın almalara rağmen, hala eksik kalan bir şey var: işletim sistemi. Her ne kadar, yıllardır Red Hat'ı satın alınacaklar listesinde tutsa da, işletim sistemi olarak Ubuntu'yu seçmek Oracle için daha iyi olabilir.

Evet, Oracle Sun'u satın alarak Solaris işletim sistemini de elde etmiş oldu, fakat Red Hat yönetim kurulu başkanı Jim Whitehurst'un Çarşamba günü, finansal raporları açıklarken belirttiği gibi, Solaris'ten Linux'e olan kullanıcı göçü hızla devam ediyor ve Sun'ın Linux'a olan eğilime karşı geliştirdiği OpenSolaris bu göçü durdurmak için etkisiz kaldı.

Red Hat'ın en büyük 25 anlaşmasını, Oracle'a kaptırmadan yenilemesi ile birlikte, bir Red Hat Enterprice (Kurumsal) Linux (RHEL) klonu olan Oracle Enterprise Linux (OEL), Red Hat'ın egemenliğine son vermek yolunda büyük darbe aldı. RHEL'nin piyasadaki egemenliği Oracle'ın herşeyi içinde olan bir kurumsal yazılım paketine sahip olma hedefinin önünde büyük bir engel olarak durmakta. Red Hat'in elinde böyle bir kurumsal yazılım paketinin olması Oracle için gerçek bir tehdit olarak görülüyor.

Oracle satış ekiplerinin Oracle uygulamalarını ve veritabanlarını RHEL platformu üzerinde OEL'e göre daha kolay satması, OEL'in zamanla yok olacağına bir işaret gibi gözüküyor.

The Register'in da belirttiği gibi Oracle, Red Hat'i alabilir fakat sabit ve yüksek gelirleriyle Red Hat, Oracle için pahalı bir satın alma hedefi olarak görülüyor. Bununla birlikte, Red Hat, Redwood Shores'daki (California'da Oracle'in merkezinin bulunduğu yer) ortağı ve rakibi olan Oracle'ın kollarına atlamak için can atmıyor.

Tüm bu bilgiler ışığında, Red Hat ile devam etmek yerine Canonical, ticari Ubuntu sponsoru, ile güçlü bir ortaklık Oracle için doğru bir Linux stratejisi olacaktır.

Açık şekilde görülüyor ki, Masaüstünde egemenliği elinde tutan ve ticari sunucularda da güçlü bir yeri olduğunu iddia eden Ubuntu, Linux dağıtımları içinde en çok tercih edilen dağıtım. OEL, Oracle satış ekibi için pazarlaması zor olan bir ürün olduğu için Ubuntu'yu Oracle teknolojilerini tamamlayan bir ürün olarak pazarlamak daha kolay olacaktır.

OEL'i satmak için istek var fakat derman yok.

Sahibi olduğum, açık kaynak kodlu içerik yönetimi uygulamarı satan şirketin, Alfresco, verilerine bakılacak olursa Ubuntu Kurumsal ürünlerdeki yüzde 37'lik payıyla, yüzde 28 pay alan RHEL ve Fedorayı geride bırakmış durumda.

Bir yıl önce Ubuntu ciddi bir ilerleme içindeydi, bugün ise gerçek kurumsal kurulumlarda tercih edilen dağıtım Ubuntu olmuş gözüküyor.

Özetle, Ubuntu arkasına camianın desteğini almış durumda. Tek eksiğinin bir yazılım devinin desteği olduğunu düşünüyorum. Hala aklına gelmemesine rağmen, Oracle, Ubuntu'yu kurumsal bir marka yapabilecek güçte.

Oracle'ın yıllar önce Red Hat'a elini uzatması tesadüfi değildi. Oracle'ın Red Hat Kurumsal Linux dağıtımına (RHEL) verdiği destek olmasaydı, bugün RHEL'in olduğu yerde Novell'in SUSE'sini ya da diğer Linux dağıtımlarını görebilirdik.

Oracle'ın elinde Ubuntu'yu başlıca tercih edilen kurumsal sunucu yapma gücü var. Fakat akıllardaki soru, Oracle bunu istiyor mu?

"The 451 Group" ile çalışan analist Matt Aslett'in bana dediği gibi, "Oracle'ın Linux stratejisi mevcut müşterilerine hizmet vermek." Ve Oracle RHEL kullanan Oracle müşterileri Ubuntu kullanan müşterilerden fazla. Sean Michael Kerner'in belittiği gibi Oracle ürünlerini Ubuntu üzerinde çalıştırmadan önce hepsinin Ubuntu üzerinde problemsiz çalıştığını belgelendirmek zorunda. Bu yüzden RHEL (ve onun klonu OEL) Oracle için daha güvenli bir seçim gibi gözüküyor.

Pazar RHEL (parasını veren kurumsal müşteriler) ve Ubuntu'dan (para ödemeyen Linux camiası) yanayken, Oracle'ın OEL için neden bir sürü kaynak ayırdığını anlamak zor. Ya git OEL yerine RHEL üzerine yoğunlaş ya da Ubuntu'ya bir fırsat ver.

Oracle Ubuntu'yu seçerek hem bir işletim sistemi sahibine sahip olur hem de Ubuntu'nun populerliğini kazanç kapısına çevirebilir.

Siz ne düşünüyorsunuz? Ubuntu, Oracle için iyi bir hamle olabilir mi? Yoksa Oracle'ın sonradan aklına gelen Linux pazarında, RedHat ile devam etmek Oracle için daha mı iyi olur?

28 Temmuz 2009

Posted In: Gezegen, linux, ubuntu

Twitter Auto Publish Powered By : XYZScripts.com