Teknolojinin hızla gelişmesiyle birlikte yeni ihtiyaçlar, yeni sorunlar da gün yüzüne çıkmaya başladı. İnternete bağlanma hızlarımızın artmasıyla birlikte ürettiğimiz veri miktarı inanılmaz oranda artış gösterdi. Bu baş döndürücü değişimlerden veri tabanı sistemleri de fazlasıyla nasibini aldı.
Daha önce Oracle, MySQL, MS Sql Server gibi veritabanları tüm piyasayı domine ederken gelişen farklılaşan ihtiyaçlarla yeni ürünler boy gösterdi. Bu bağlamda NoSQL dediğimiz, açılımı "Not only SQL", Türkçeye, "sql'in yeterli gelmediği nokta" gibi çevrilebilecek yeni bir kavram hayatımıza girdi. Oracle, MySQL gibi ilişkisel(RDBMS) sistemlerinin yetersiz kalmaya başladığı noktalarda NoSQL veritabanları imdada yetişti. HBase, Cassandra, MongoDB, Couchbase ve diğerleri...
Yakın döneme kadar MS SQL 2014 veritabanımız ile mutlu mesut yaşarken artan veri miktarımız, lisanslama maliyetleri, sistem bakım maliyetleri gibi nedenlerden ötürü bazı arayışlara girmek durumunda kaldık. Söz buraya gelmişken çoğu teknolojik gelişme son dönemde İnternet devlerinin mevcut çözümlerin yetersiz kaldığı noktada kendi iç kaynaklarıyla ihtiyaçlarına uygun farklı çözümler geliştirmeleriyle ortaya çıktı ve çıkmaya devam ediyor. Google'da geliştirilen Hadoop HDFS, Linkedin'de geliştirilip yayılan Apache Kafka gibi. Kendi hikayemize dönersek, SQL Server'da tuttuğumuz bir kaç tablomuz aşırı derecede büyüdü ve yaptığımız projeksiyonlarda yakın dönemde 2-3 katına çıkmasını öngörüyorduk. Tablo büyüklüğü 500M kayıt ve yaklaşık 600GB'lık bir veritabanı manasına geliyordu. Bu durum bize:
- Çok uzun süren backup süreleri
- Bakım çok zaman alan tablo bakım işlemleri (index rebuild, organize vs.)
- Artan olası lisanslama maliyetleri
gibi sorunlar ortaya çıkarmaya başladı.
Geldiğimiz noktada yaptığımız araştırma ve incelemeler ile aşağıdaki özelliklere sahip bir veri tabanı sistemi ile sorunlarımızı aşabileceğimizi fark ettik.
- Açık lisanslı
- Dağıtık sistem olarak birden fazla sunucu üzerinde çalışabilecek
- Her hangi bir sunucu down olduğunda hizmet vermeye devam edecek (No Single Point of Failure)
- Çok pahalı olmayan ve eşit donanım özelliklerine sahip olmayan sunuculara üzerinde çalışabilecek
- Çok hızlı sorgulama ve insert etme özelliklerine sahip
- Yatay olarak çok rahat genişleyebilir
- Farklı programlama dilleri noktasında yardımcı kütüphanelere sahip olması
Bu özelliklerin yanında RDBMS sistemlerden alıştığımız bazı özelliklerden de feragat etmemiz gerekiyordu. NoSQL söz konusu olduğunda göz önüne almamız gereken bir noktada da RDBMS sistemlerin sağladığı aşağıdaki noktalardan kısmen yada tamamen vaz geçmeniz gerekliliği. Yoksa her şeyi halleden bir sistem olsa farklı ihtiyaçlara girmezdik değil mi :)
- ACID dediğimiz prensipleri desteklememeleri
- Tablolar arası ilişkileri RDBMS sistemlerdeki gibi tanımlayamamız. (join yapamamız)
- Transaction yapısının olmaması.
Yukarıdaki özellikleri ve eksiklikleri göz önüne aldığımızda ihtiyaçlarımıza uygun olabilecek en uygun NoSQL çözümünün Apache Cassandra olduğu ortaya çıktı. Tüm dünyada daha fazla kabul görmeye başlamış, binlerce büyük internet şirketinin kullandığı bu sistem sağladığı özellikler ile övgüyü hak ediyor. Başka yazılarda genel özelliklerini ve geçiş sürecimizi biraz daha detaylı anlatmaya çalışacağız.

Hiç yorum yok:
Yorum Gönder