25 Mayıs 2015 Pazartesi

NoSql Veritabanlarının Karşılaştırılması

     S.a. Arkadaşlar,
     Aslında bu yazıyı diğer iki yazımdan önce yazmak gerekirdi bu. Fakat heyecanımızı yenemedik. Öncesinde bu ve bu yazılarını yayımladık. Neyse konuyu uzatmaya gerek yok. Bu konuyla ilk yazımızda NoSql üzerinde biraz durmuştuk. Sql ile arasındaki farkı incelemeye çalışmıştık ve daha sonra veritabanı olarak MongoDB'yi kullanmıştık. Fakat şimdi NoSql veri tabanları arasında nasıl farklar var diye bir araştırma yaptık. Şimdi gelin bunlara bir göz atalım. Bu yazının çoğunu Buğra Çakır Bey'in sunumda anlattığı konular üzerinden gidilmiştir, fakat tabii ki değişiklik eklemeler çıkarmalar oldu. Kendimiz düzenleyip, kendi anladıklarımızı paylaşmaya çalıştık.



      NoSql veritabanları 4e ayrılıyor öncelikle. 4 başlık altında toplanmıştır. Bunlar Document, Key-Value, Graph ve Column Family. Şimdi Bunları önce tek tek sonra içerdikleri veri tabanlarını açıklayalım.

      Document (Döküman):  Bu sistemlerde bir kayit döküman olarak isimlendirilir. Dökümanlar genelde JSON formatinda tutulur. Bu dökümanlarin içerisinde sinirsiz alan oluşturulabilir. MongoDB, CouchDB, HBase, Cassandra ve Amazon SimpleDB bunlara örnektir. Loglama, blog platformları, e-ticaret sitelerinde kullanılır.

MongoDB:C++ gelistirildi. Sqle benzer sorgulama yapılır. Master-Slave Replikasyonu mevcuttur. Performans ön planda ise kullanılır.
CouchDB: Erlang ile gelistirildi. Kolay kullanim ve veri bütünlügü vardır. Master Master Replikasyonu mevcuttur.
HBase: Javada gelistirildi. Güvenilir okuma/yazma mevcut, otomatik sharding özelliği barındırır, Çoklu veride kullanilir.
Cassandra: Javada gelistirildi. Trade off yapisina sahip. Kolona göre arama yapar. Yazmak okumaktan daha hizli. Map Reduce mevcuttur.

      Anahtar / Deger (Key / Value) tabanli: Bu sistemlerde anahtara karsilik gelen tek bir bilgi bulunur. Yani kolon kavrami yoktur.Oturun Bilgieri tutulur. Alışveriş kart bilgilerinin tutulması gibi işlemlerde kullanılır. Azure Table Storage, MemcacheDB ve Berkeley DB bunlara örnektir.

Riak: Erlang ile gelistirildi. Map-Reduce veri kümesi mevcuttur, Full Text arama, indexleme mevcut
Redis: Tüm veri tabani RAM. Hızlı. Küçük uygulamalar için. Arama motorları için kullanılır.
BerkeleyDB: Gömülü veri tabanıdır.

         Grafik--Graph: Diğerlerinden farklı olarak verilerin arasındaki ilişkiyi de tutan, Graph theory modelindeki sistemlerdir.  Sosyal ağlar, lokasyon tabanlı servisler ve  öneri sistemlerinde kullanılır. Neo4J, FlockDB bunlara örnektir.

Neo4j: Javada geliştirildi. Nesneler arasını veri yoluyla ifade eder. Insan takip uygulamalarinda kullanılır

     Column Family: Dökümen benzeri olup, blog ve  analtik uygulamalarında kullanılır.

DB             Okuma/Güncelleme MapReducePerformansi
Cassandra     Iyi                         Çok Iyi
Hbase Kötü                       Ortalama
MongoDB    Iyi                          Zayif
Riak Zayif                     Ortalama

      Kullanılan bazı kavramlar:
Sharding: Bilgilerin hangi makineye yazilip okundugunu belirten yöntemdir.
Map-Reduce: Veri islemek için kullanilan yöntemdir. Büyük verileri paralel isler.
Master-Master R: 2adet sunucunun veri tabanlarindan her hangi birinde sorun çikmasi sonucu
ekleme,güncelleme gibi islemler diger veri tabanina da yansir. Karmasik bir yapiya 
sahip olduğundan isletim sistemi hatalarini barindirir.
Master-Slave R: Master islemleri yapar ve daha sonra slave  yansıtır. Aktarım tek yönlüdür.

      Yazımızı burada sonlandırıyoruz. İyi çalışmalar dileriz

Hiç yorum yok:

Yorum Gönder