17 Mayıs 2017 Çarşamba

NoSQL Nedir?



NoSQL; ilişkisel veritabanlarına alternatif olması amacıyla ortaya atılmıştır. Bu kavramın ve buna bağlı olarak bu alternatif yaklaşımla geliştirilmiş veritabanlarının ortaya çıkış sebebi, temelde internet üzerinde boyutu her gün artak verinin, yüksek trafiğe sahip sistemlerin ihtiyacına cevap verebilecek hızda okunması/yazılması ihtiyacıdır.
İlişkisel veritabanlarında verilerimizi tabloların altında yer alan sütunlarda satır satır saklıyoruz. Bunları diğer tablolarla ilişkilendirip tanımlamalarımızı yapıyoruz. NoSQL'de ise tablo yok, ilişki yok desek yeridir. Verilerimizi ise Json ya da XML formatında döküman olarak saklıyoruz. Bir kolon açma ihtiyacınız olduğunda ise json ya da xml'e yeni bir alan eklemek yeterli oluyor. ID mi? O da ne? ID kavramı NoSQL'de var olsa da bizim için ID diye bir şey yok diyebiliriz. Var olan ID ler veritabanının motorları için. Join? O da yok. Büyük sorgular mı? Karmaşık sorgular mı? Hayır, NoSQL'de hiçbiri yok. Ne zaman ihtiyaç duyacağız? Bu konuyu bir örnekle açıklamak istersek bir haber sitesini düşünelim. Onlarca kategori, yüzlerce alt kategori, onbinlerce haber, yüzbinlerce tag mevcut. Bu bilgilerin sürekli güncellendiğini ve yenilerinin eklendiğini düşünürsek bu veritabanını yönetmenin ne kadar güç olduğunu az çok tahmin edebilirsiniz. NoSQL ise bu durumda bize fayda sağlıyor. Kısaca üç unsuru mevcut: Hız, işlevsellik ve ölçeklendirilme (scalability).

İlişkisel veritabanlarında yapıyı önceden çok iyi planlamak gerekir. Aksi takdirde ilişkissel veritabanlarınddaki hiyerarşiden dolayı (tablo, sütun, satır, ilişkiler) herhangibir ekleme ya da yapıdaki değişikliğin maliyeti büyük olabilmektedir. Fakat NoSQL veritabanlarında yeni eklemeler herhangi bir maliyete sebep olmamaktadır veya düşük maliyetli olmaktadır. Nedeni ise NoSQL sistemlerde tablo ve sütun kavramının olmamasıdır. NoSQL sistemlerde yeni bir alana ihtiyacınız olduğu durumlarda kaydı direk eklemeniz yeterli olmaktadır. NoSQL sizin yerinize alanı oluşturur ve değeri kaydeder. Kayıtların maliyetsizce gerçekleşmesinin nedeni ise verilerin tablo ve sütunlarda saklanması yerine JSON ve XML formatına benzer yapıda saklanmasıdır. NoSQL sistemlerde SQL sorgu dili kullanılmaz.

NoSQL veritabanları, ilişkisel veritabanlarından çokdaha iyidir” gibi bir sonucu çıkarmamamız gerekmektedir. Çünkü ikisini de yerine göre kullanmakta fayda bulunmaktadır.Örneğin: ilişkisel olayların çok yoğun gerçekleştiği bir bankacılık uygulamasında NoSQL bir veritabanı kullanmamız uygun değildir. NoSQL, Fire and Forget prensibi ile çalıştığı için bankacılık, alışveriş gibi para üzerinden işlem yapılan kritik uygulamalarda kullanılmamalıdır.  Aksine verinin %100 önem arz etmediği durumlarda kullanımı daha uygundur.

NoSQL Veritabanlarının Doğmasını Sağlayan Temel Sorun Nedir?
NoSQL sistemlerinin ortaya çıkmasındaki en büyük sebep internetin hızlanması ile büyümekte olan ve yapısal olmayan internetteki verinin İlişkisel Veritabanı Yönetim Sistemlerinde performanslı bir şekilde işlenememesidir. Veri büyüklüğü ve trafik olarak belirli büyüklüğe gelen ve hali hazırda açık kaynaklı veritabanı sistemleri kullanan firmalar bir noktada bu veritabanlarının kısıtlarına takılmaktadırlar. Dikey büyüme maliyetli olduğundan, yatayda büyüyebilmek için daha fazla önbellek (cache) kullanımı, verinin programatik olarak dağıtılması (sharding) gibi teknikleri denemektedirler. Bu uygulamaların da yetmediği durumda NoSQL sistemleri ortaya çıkmaya başlamıştır.

Google bu gereksinimi Big Table adını verdiği NoSQL veritabanı sistemi ile Amazon ise DynamoDB ismini verdiği NoSQL veritabanı sistemi ile çözmektedir. İnternetteki en büyük veri hacmine sahip olduğu bilinen Google firması, internet verisini İlişkisel Veritabanları yerine BigTable’da tutmayı tercih etmektedir. Google firmasının bu tercihi yapma sebebi ise veriye ilişkisel veritabanı sistemlerine nazaran daha hızlı ve daha ucuza erişebiliyor olmasıdır. Daha ucuza erişebilmesini sağlayan önemli bir faktör de dikey büyüme yerine yatayda büyüme ile gereksiz ek maliyetten kurtulmalarıdır.

NoSQL Sistemlerin Avantajları Nelerdir?
NoSQL veritabanı sistemleri ilişkisel veritabanlarına göre yüksek erişilebilirlik imkanı sunarlar.

NoSQL veritabanı sistemleri okuma ve yazma performansları olarak göreceli olarak ilişkisel veritabanı sistemlerine göre daha performanslı olabilirler.

NoSQL veritabanı sistemleri yatay olarak genişletilebilirler. Binlerce sunucu birarada küme olarak çalışabilir ve çok büyük veri üzerinde işlem yapabilirler.

NoSQL veritabanı sistemleri esnek yapılarından dolayı programlama ve bakım anlamında kolaylık sağlarlar.

NoSQL veritabanı sistemlerinde farklı özelliklere sahip birçok implementasyon arasından seçim yapma şansınız vardır.

NoSQL veritabanı sistemleri birçok açık kaynak kodlu projelere ve bulut bilişim teknolojilerine uygun olduğu için maliyet olarak ilişkisel veritabanı yönetim sistemlerine göre daha avantajlıdır.

NoSQL Sistemlerin Dezavantajları Nelerdir?

İlişkisel veritabanı yönetim sistemlerini kullanan uygulamaların NoSQL sistemlere taşınması başlangıçta zor olacaktır. Veri başarılı bir şekilde taşınsa bile bağlantıyı (join) kullanan kodlarda düzenlemelerin yapılması gerekecektir.

İlişkisel veritabanı yönetim sistemlerindeki sorgu tabanlı veri erişimi yerine NoSQL sistemlerdeki anahtar tabanlı veri erişimi sağlamak gerekmektedir. Buna göre bir yapılandırmaya gidilmesi zaman alabilmektedir.

İlişkisel veritabanı yönetim sistemlerindeki  işlem hareketleri (transaction) kavramı, NoSQL veritabanı sistemlerinde bulunmadığı için veri kaybı söz konusu olabilmektedir.


NoSQL veritabanı sistemleri veri güvenliği konusunda ilişkisel veritabanı yönetim sistemleri kadar gelişmiş özelliklere henüz sahip değiller. BazıNoSQL projelerin dökümantasyon ve profesyonel destek konusunda eksikleri vardır.

Hiç yorum yok:

Yorum Gönder