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