NoSQL Kavramı ve Yapısı

nosql

NoSQL, klasik olarak bildiğimiz ve kullandığımız ilişkisel veritabanı yönetim sitemlerinden (RDBMS) farklı ve alternatif bir yaklaşım olarak meydana çıkmıştır. Meydana çıkış sebebi; temelde internet üzerinde her gün artan büyük verinin hızlı bir şekilde işlenmesi ihtiyacıdır.

NoSQL sistemlerde veriler SQL sistemlerde olduğu gibi tablolar şeklinde değil, doküman tabanlı (JSON) olarak saklanmaktadır. Bu yöntem, hem maliyet hem de verilerin sistemlerde daha az kaynak tüketimi ile tutulmasına olanak sağlamaktadır.

Big Table ve DynamoDB yıllardır Google ve Amazon tarafından kullanılmaktadır. Google sakladığı binlerce TB’lık veriyi RDBMS’de değil, Big Table üzerinde tutuyor. Üstelik bu verilere RDBMS üzerinden erişebileceğinden çok daha hızlı ve belki en önemlisi, çok daha ucuza erişebiliyor.

NoSQL’in İlişkisel Veritabanı Yönetim Sistemlerinden Farkı Nelerdir?

NoSQL sistemlerde yatayda büyüme vardır. Bunu bir örnek ile açıklamak gerekirse; diyelim ki bir firmada her yıl binlerce personel içerisinden 10 kişiye 1’er adet ödül vereceksiniz. Bu ödül alanları veri tabanında nasıl tutulacaklar? Her sene 10 kişi için binlerce alana “NULL” değer girmek zorunda kalacaksınız.Bunu bir tabloyla anlamak daha kolay olacaktır.

 

Adı Soyadı Departman Ödül2012 Ödül2013
İsim Soyisim X 1 1
İsim Soyisim Y NULL NULL
İsim Soyisim Z NUL 1

*SQL veri tabanından örnek bir tablo.

Aynı tabloyu bir de JSON şeklinde doküman olarak oluşturduğumuzu düşünelim;

{ “adi“:” İsim “,”soyadi“:” Soyisim “,” Departman X,”Odul2012“:1 }

{ “adi“:” İsim “,”soyadi“:” Soyisim “,” Departman “:Y,”Odul13“:1 }

{ “adi“:” İsim “,”soyadi“:” Soyisim “,” Departman “:Z,”Odul2013“:1 }

 

Gördüğünüz gibi koca bir tabloda gereksiz yere boş alanlar oluşturmaktansa 3 satırda verilerimizi tutmuş olduk. Bunun yanı sıra daha sonradan ekleyeceğimiz ve çıkaracağımız alanlar gibi özel durumlar oluştuğunda değişiklik yapmak daha kolay olacaktır.

Şemalara olan bağımlılık bu sayede çözülmüş oluyor. Ancak bu sefer de, bu verinin nasıl işleneceği, filtreleneceği, sorgulanacağı problemi ortaya çıkıyor. Bu sorunu da ilerleyen makalelerde anlatacağım “MapReduce” kavramı ile çözeceğiz.

NoSQL sistemlerin de kendi aralarında farklılıkları vardır;

  • ·   Doküman Tabanlı Sistemler: Bu sistemde veriler doküman olarak saklanır. Dökümanlar genelde JSON veya XML formatındadır. Pek tabi bu dökümanlar içerisinde sınırsız alan oluşturulabilir. MongoDB, HBase, Cassandra bunlara örnektir.
  • ·   Anahtar/Değer Tabanlı Sistemler: Bu sistemlerde anahtara karşı gelen tek bir bilgi bulunur, yani sütün kavramı yoktur. MemcacheDB ve BerkeleyDB bunlara örnektir.

NoSQL Sistemler Ne Zaman Kullanılmalıdır?

Örneğin hepsiburada.com’u düşünelim. Binlerce çeşit ürün, her bir ürünün özellikleri, kategoriler, alt kategoriler… Üstelik bunların tamamı zaman içinde değişiyor. Yeni bir kategori ekleniyor, var olan kategorinin özellikleri değişiyor vs. Bu gibi durumlar, veri tabanını yönetmeyi oldukça zorlaştırır. İşte burada akla gelen yöntem verileri JSON veya XML belgesi olarak saklamaktır. NoSQL veri tabanları ise bu cümlenin daha gelişmiş ve gerçek hayata uyarlanmış halleridir. Kısaca üç ana unsurdan/eksiklikten söz edebiliriz: hızişlevsellik ve ölçeklendirilme..

NoSQL Sistemlerin Artıları Nelerdir?

  • ·   Yüksek erişilebilirlik ve ölçekledirilebilirlik sunarlar.
  • ·   Okuma/yazma performansları RDBMS’lerden daha performanslıdır.
  • ·   Yukarıda basettiğimiz gibi yatay olarak genişlerler. Binlerce sunucu birarada küme olarak çalışabilir ve çok büyük veri üzerinde işlem yapabilirler.
  • ·   Çoğunluğu açık kaynaklıdır.

NoSQL Sistemlerin Eksileri Nelerdir?

NoSQL’in en büyük eksisi olarak çalışma prensibini sayabiliriz. NoSQL sistemler “Fire And Forget” prensibi ile çalışırlar. Yani NoSQL sistemler RAM üzerinde çalışır. İşte bu yüzden paranın döndüğü, yani anlık olayların önemli olduğu projelerde NoSQL sistemlerde güven sıkıntısı oluşuyor.

Sonuç olarak

İnternet işiyle uğraşanlar için RDBMS sistemlerde bir tıkanma noktası oluşacağı aşikar. Bu noktaya ulaştığımızda NoSQL çözümlerini kullanmak hem performans, hem maliyet açısından bizim için önemli olacaktır. Fakat bankacılık gibi sistemlerde veri kaybı ve bozulmasının garantisi verilmediği için bu sistemleri kullanmak oldukça risklidir.

3 comments

  1. Enver Durmuş   •  

    İlk kez duyduğum ve ufkumu patlatan bir konu. Zengin anlatımız için teşekkür ederim.

  2. mustafa sahin   •  

    Batuhan bey tebrik ederim bu makale için, elinize sağlık herhalde daha iyi anlatılamazdı.

    • Batuhan Tozun   •     Yazar

      Teşekkür ederim, umarım faydalı olmuştur.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir