Mongodb Temelleri
Mongodb document based bir nosql veritabanıdır ve open source’dur. Verileri JSON formatına çok yakın olan BSON formatında ve flexible schema özelliği ile depolar. Büyük ölçekli verinin depolanması konusunda başarılı olan mongodb veriyi klasik depolama yaklaşımı olan table – row yapısı ile saklamak yerine key – value formatında saklamaktadır. Mongodb nedir bahsettikten sonra, şimdi de mongodb temelleri, özellikleri ve kullanım senaryolarına yakından bakalım.
Mongodb Temel Özellikler
MongoDB’de data dökümanlar halinde depolanır.
Bu dökümanlar ise collectionlarda tutulur.
Document kavramı ise field-value olarak eşleştirilmiş datanın tutulduğu yapılardır.
Field – unique identifier olarak tanımlanabilir, tutulacak datanın tanımlanmasını yapar(column name olarak düşünülebilir).
Value – Datanın tutulduğu alan da value’dur. (Row olarak düşünülebilir).
Collection – Genelde benzer fieldlere sahip dökümanların bir arada tutulduğu yapıdır. Bir collection altında birden cok döküman tutulabilir ve bir database altında birden çok collection tutulabilir.
Replica Set – Aynı datayı tutan birden çok ilişkili makinenin oluşturduğu set’e verilen isimdir. Burda amaç makinelerden bir tanesi erişilemez duruma geldiğinde dataya erişimin devam etmesidir.
Instance – Veri tabanı servisleri başlatıldığında bir mongodb instance’ı oluşur (Memory + background process).
Cluster – Data tutan ve organize eden birden çok makinenin oluşturduğu yapıya verilen isimdir.
Mongodb dökümanları internal olarak BSON formatında tutar ancak JSON olarak görüntülenir. JSON formatı üzerinden işlemler user tarafından gerçekleştirilebilir. BSON binary olduğundan son kullanıcı tarafından okunamaz. BSON JSON formatına göre daha hızlıdır. Fieldlar ” ” arasına yazılır, : ile field value eşleşmesi yapılır ve value yazılır. JSON dökümanlar { ile başlar } ile biter.
Mongodb’de tutulan dökümanların field sayıları aynı olmayabilir. Collection’ı kullanmaya başladıktan sonra dökümana yeni field’lar eklenebilir. Mongodb bu esnekliğe sahiptir, dolayısı ile Relational DB’lerde gördüğümüz kolon’ların her kayıt için mevcut olması gerekliliği mongodb’de yoktur. Yani ad ve soyad fieldları olan dökümanları tuttuğunuz bir collection’a hiçbir ek operasyon yapmadan ad-soyad’a ek olarak adres field’ını içeren dökümanı da insert edebiliriz.
Insert edilen her dökümana unique değere sahip bir _id filed’ı internal olarak eklenir.
Indexing işlemleri sayesinde performans ve search işlemlerinde optimizasyonu kolaylaştırırken, in-memory özelliği sayesinde read hızını da arttırır.
Mongo Shell üzerinden bir mongodb instance’ına bağlanarak operasyonel işlemler gerçekleştirilebilir. Mongodb’nin default portu 27017’dir.
Mongodb Scaling
Mongodb günümüzde aşağı yukarı bütün veri tabanlarında olduğu gibi, cluster yapısında ve dağıtık mimaride hizmet verebilen bir nosql veritabanıdır. Use case’e göre vertical scaling veya horizontal scaling seçenekleri sunmakta olup, yük artışına karşın kapasite artışını kolaylıkla mümkün kılmaktadır. Bunun yanında daha sonra detaylı şekilde bahsedeceğim sharding özelliği sayesinde de veriyi clusterda yer alan node’lar üzerinde dağıtabilmektedir. Bu dağıtma işlemini yaparken de her shard’ın bir veya daha çok yedeğini saklayabilmek için replicaset yapısını kullanmaktadır. Eğer sharding ihtiyacı yok ise mongodb cluster’ı sadece replicaset olarak da kullanabiliriz. Sharding ihtiyacı daha çok yoğun write yükü alınan durumlarda performansı arttırmak için kullanılır.
MongoDB Atlas
Mongodb atlas servisi sayesinde mongo veri tabanını tercih edilen bir cloud altyapısı üzerinde kullanabilirsiniz. Atlas servisi cluster ve veritabanı yönetimi için gelişmiş bir arayüze sahip olan ve cloud özellikleri sayesinde kolay ölçeklenebilirliği vadeden bir altyapıdır. Ancak ülkemizde regülatif sebepler yüzünden cloud hizmetlerini kullanırken derinlemesine araştırmakta fayda var.
Privacy And Security
Authentication : Ldap, Windows AD Kerberos entegrasyonlarını destekler.
Authorization : Role based Access (RBAC) sayesinde user ve applicationların görev ayrımları kolaylıkla gerçekleştirilir.
Audit : Mongodb’nin kendi auditing mekanizması ile tüm Db değişiklik ve aktiviteleri kayıt altına alınabilir.
Encyrption : Mongodb’de data network katmanından başlayarak db’de, diskte veya backup içerisinde bile şifrelenebilir.
Mongodb Use Cases
Büyük ölçekli veri depolama ihtiyacı mongodb kullanımını öne çıkaran en önemli ihtiyaçlardan biridir. Büyük ölçekli verilerin yüksek performansla yazılmasını sağlarken ölçeklendirilebilirlik ve replikasyon özelliklerinin kolaylıkla sağlanmasını da sağlar.
Web uygulamalarında sıklıkla mongodb kullanılır. Özellikle document based veri saklama ihtiyacı bulunan uygulamalarda tercih edilir. Uygulamanın türünden çok tutulacak verinin unstructured yapıda olması mongodb’yi tercih etme sebeplerinden bir tanesi olabilir.
In memory özelliği sayesinde real gerçek zamanlı analiz gerektiren projelerde mongodb tercih edilebilir.
Mobil uygulamalarda, CMS’lerde, IOT uygulamalarında fazlası ile tercih edilmektedir.
Veri yapısı ilişkisele daha yakın olan, kompleks join query’lerine ihtiyaç olan durumlarda mongodb tercih edilmemelidir.
Bu yazı ile mongodb hakkında genel bilgileri vermiş olduk, gelecek yazılarımızda sharded cluster, replicaset kurulumu dahil olmak üzere yönetimsel işlemlerden bahsedeceğim. Veritabanları ile ilgili video derslerine https://youtube.com/@veritabaniegitimleri youtube kanalımdan erişebilirsiniz. İyi Çalışmalar.
- AWS nedir? – Cloud 101 - Mayıs 16, 2024
- Vector Databases - Mayıs 15, 2024
- Data Dünyası Nereye Gidiyor? - Mayıs 8, 2024