Hangi NoSql Veritabanı? MongoDB, Apache Cassandra

Beytullah Gurpinar
Teknasyon Engineering

--

Hangi NoSql Veritabanı? MongoDB, Apache Cassandra

İnternetin ilk yıllarında be etkileşimli web siteleri daha yeni yeni ortaya çıktığında geliştiricilerin en büyük problemi insanları web sitelerine çekmekti. O yüzden o yıllarda performans, altyapı gibi durumlar belki de en son düşünülen durumlardan birisiydi. Çünkü henüz internet kavramı yeni yeni oturmaya başlamış, 52K model ile internete bağlananlar şanslı bir kesimi oluşturmaktaydı. O yıllarda ve yakın zamana kadar veritabanları için yatay büyüme çok ta düşünülmeyen, tek bir sunucuda ve teb bir instance üzerinde çalışan, genelde SQL tabanlı veritabanları kullanılmaktaydı.

2019 Sql — NoSQL Kullanım Oranı

Sonra bir anda hızlanan ve daha fazla kişiye ulaşan internet ile birlikte günlük sadece bir projede GB’larca data birikmeye başladı. Artık en büyük problem kullanıcıları projelere çekmek değil, o kullanıcılara daha hızlı cevap vermek ve yeni gelecek kullanıcıları da kaybetmemek oldu. Burada da en büyük problem SQL tabanlı projelerin yatayda büyütmek çok zor ya da çok maliyetli olmasıydı. İşte tam da bu nokta da kendisine NoSql database denilen db çeşitleri ortaya çıkmaya başladı. Böylece yatada çok hızlı büyüyen, çok büyük datalarda çok hızlı cevap veren, çok kolay yönetilebilen veritabanları ile insanların projelerine daha fazla trafik çekme kaygısı biraz olsun azalmış oldu.

Ben size kendi tecrübelerime dayanarak MongoDB mi Apache Cassandra mı sorusuna bir cevap vermeye çalışacağım.

2019 Veritabanı Kullanım Oranları

MongoDB

MongoDb veritabanını yazılım işi ile uğraşan kişiler mutlaka duymuştur. O yüzden ne zaman ortaya çıktı, ne dir vs gibi konularda çok fazla açıklama yapmayacağım. Merak edenler https://www.mongodb.com/company adresinden ürün geçmişini inceleyebilir.

MongoDb json olarak dökümanlarınızı saklayabileceğiniz, json içerisinde istediğiniz şekilde subarray ile datalarınızı saklayabileceğiniz bir NoSql veritabanı türüdür. Database dizaynı düzgün şekilde kurgulandığı vakit anlık 10 binlerce kullanıcının olduğu projelerde sağlıklı şekilde cevap vermektedir. Json base bir veritabanı olduğundan SQL veritabanlarındaki gibi relational veritabanı değildir. O yüzden projeye başlamadan önce veritabanı dizaynının çok iyi kurgulanması gereklidir.

MongoDB veritabanları, sharding ve replica set olmak üzere 2 kurguda yatayda büyütülebilmektedir. ben replica set mimarisini bir çok projede kullandığım için onu anlatmaya çalışacağım.

Mongodb Replicaset

Replica Set mimarisi ile 1 master ve istenilen sayıda slave sunucu oluşturularak write isteklerinin master sunucusuna, read isteklerinin de slave sunucularına düşürülmesi sağlanabilmektedir. Böylece yazma isteklerinin okuma isteklerini ya da tam tersi işlemlerin önlenmesi sağlanmıştır. Replica Set mimarisinde eğer master sunucusunda bir sorun olursa bir sonraki slave sunucu master olacak ve yazma istekleriniz kesintiye uğramayacaktır.

Eğer projenize daha fazla trafik geliyor ya da geleceğini düşünüyorsanız veritabanı servislerin hiç durdurmadan yeni sunucular ekleyebilir ve onları da Replica Set içerisine dahil edebilirsiniz.

Örnek vermem gerekirse 200GB’lık bir data ya yeni bir sunucu eklediğinizde data eşitleme ve o sunucunun da devreye girmesi ortalama 2–3 saat arası sürmektedir. Bu Sql tabanları veritabanlarında bazen günler sürmektedir.

Eğer çok fazla ülkede değil, local bir projeniz var ise, write isteklerinden çok read sizin için önemli ise MongoDb’yi projenizde hiç korkmadan kullanabilirsiniz. Çok hızlı şekilde yatayda büyültebilir, kullanım olmadığı için küçültebilir ve maliyet kontrollerinizi yapabilirsiniz.

Ancak çok fazla ülkede birden kullanılan ve write en az read kadar sizin için önemli ise MongoDB veritabanında problemler yaşayabilirsiniz. Bu gibi durumlarda da Cassandra kullanabilirsiniz.

Cassandra

Cassandra, Java ile geliştirilmiş, açık kaynak kodlu, dağıtık bir NoSQL veritabanıdır. Facebook tarafından geliştirilmiştir. 2009 yılında Apache’ye devredilmiştir. İlk çıkış amacı Mysql üzerinde datanın hızlıca aktarılabileceği ve sql sorgularının da çalışabileceği bir NoSql veritabanı oluşturmaktır.

Bu yüzden Cassandra diğer NoSql veritabanlarının aksine json olarak değil, sql tabanlı veritabanları gibi sütun bazında verileri saklamaktadır. Cassandra’da sql tabanlı dbler gibi tabloları ve tablodaki sütunları tanımlamanız ve o sütunlara kayıt eklemeniz gerekmektedir.

Cassnadra sorgulamalarda SQl diline çok yakın CQL dilinde sorgular kullanmaktadır. O yüzden SQL ile yazılım projelerinizi çok kolay transfer ederek Cassandra üzerinde sorgular yapabilirsiniz. Ancak tüm NoSql veritabanlarında olduğu gibi Cassandra da relational bir db değildir.

Cassandra’nın büyük projelerde MongoDB yerine tercih nedeni cassandradaki her node master olabileceği gibi istediğiniz sayıda master, slave çalışabilmektedir.

Ayrıca cassandra birden fazla farklı lokasyondaki datacenterlarda çalışacak ve tüm bu datacenterlar birbirisi ile replica şekilde çalışabilecek mimaridedir. Bu mimariye göre en yoğun trafiğinizin olduğu lokasyonda daha fazla node tutarak ve bu node’ları birden fazla master ve slave ile yapılandırdığınızda o lokasyona daha fazla kaynak ayırıp, az trafiğinizin olduğu lokasyonda daha az kaynak ayırarak daha az maliyetle daha çok trafiğe cevap verebilirsiniz.

Sonuç

Sonuç olarak hangi nosql veritabanının daha iyi olduğu sizin hangisine ihtiyacınız olduğu ile ilgilidir. buradaki örneklere göre daha çok tek bir lokasyonda bir projeniz var ve read sizin için daha önemli ise MongoDB, birden fazla lokasyonda olan ya da write da en az read kadar önemli ise Cassandra’yı inceleyebilirsiniz.

Buraya kadar okuduğunuz için teşekkürler.

2019- Birlikte en çok kullanılan veritabanı türleri.

--

--

FinTech, Startup, Payment Gateway, Payment Orchestration, Subscription Management