MongoDB hakkında yeterli fikri olmayanlar için söylemek gerekirse, MongoDB bir No-SQL belge veritabanıdır. Belgeler anahtar değer çiftlerini oluşturur ve MongoDB’deki temel veri birimidir.
MongoDB şu an en popüler NoSQL veritabanlarından biri durumunda. Oldukça yaygın bir şekilde kullanılmakta ve her kullanım için olmasa da çok sayıda kullanım için uygun bir platform.
Aşağıda MongoDB’nin iyi, kötü ve çirkin yanlarıyla ilgili değerlendirmeler bulunmakta.
İyi Yanları
MongoDB’nin iyi yanları kötü yanlarından bir hayli fazla. Zaten öyle olmasa geliştiricilerden böylesine geniş çaplı bir kabul görmezdi. MongoDB’nin iyi yanlarını şu şekilde sıralayabiliriz:
Esnek Veri Modeli
Günümüzün dinamik kullanım şartlarında ve uygulamaların sürekli değiştiği ortamda esnek bir veri modeline sahip olmak büyük bir lütuf. Esnek veri modeli, önceden belirlenmiş bir şema olmaması ve belgenin herhangi bir anahtara bağlı olarak oluşturulan tüm değer setlerini barındırabilmesi anlamına geliyor.
Anlamlı Sorgular
MongoDB’nin sorgulama dili anlaşılması bir hayli kolay bir dil. Çoğu kişi bu dilin SQL gibi olmadığını söylüyor. O halde ortada anlamlı ve basit bir dil varken neden SQL’e benzeyen bir dil kullanmaya devam edelim ki?
Öğrenmesi Kolay
MongoDB’yi öğrenmek bir hayli kolay. Temel kurulumu, ayarları ve çalıştırılması en fazla birkaç saat sürüyor. Bazı durumlarda daha teferruatlı bir ayarlama yapmak gerekebiliyor ama bu konuya daha sonra değineceğiz.
Her halukarda MongoDB veritabanını projelerinizde kolayca kullanabiliyorsunuz.
Performans
MongoDB’nin en güçlü yanlarından biri sorgulama performansı. MongoDB üzerinde çalışılabilir verinin büyük kısmını RAM’de saklıyor. Verinin tamamı hard diskte tutuluyor ama sorgulamalar esnasında hard diskten çok fazla veri çağırılmıyor. Veri yerel RAM’den alınıyor, dolayısıyla program çok daha hızlı çalışıyor. Burada MongoDB’nin performansından en iyi şekilde faydalanmak için doğru dizinlerin yapılması ve yeterli RAM olması önemli.
Ölçeklendirilebilir ve Güvenilir
MongoDB ölçeklendirme konusunda bir hayli başarılı. Çoğu NoSQL veritabanında yatay ölçeklendirme özelliği büyük bir avantajdır. Bu avantaj MongoDB için de geçerli.
MongoDB aynı zamanda verinin daha fazla sayıda devrede asenkronize olarak kopyalandığı kopya setleri nedeniyle de oldukça güvenilir.
Eşzamansız Sürücüler
Eşzamansız sürücüleri kullanan tıkanmasız IO’lar hız için üretilmiş tüm modern uygulamaların olmazsa olmazıdır. MongoDB’de de popüler dillerin çoğunu destekleyen eşzamansız sürücü desteği bulunmakta.
Belgelendirme
Belgelendirmenin iyi olması geliştiricilerin hayatını önemli ölçüde kolaylaştırır. Özellikle geliştirici belli bir teknolojiyi yeni kullanmaya başlamışsa. MongoDB’nin belgelendirme özelliği oldukça iyi.
Metin Arama
Eğer tüm veriniz içinde aramalar yapmanız gereken bir web sitesi hazırlıyorsanız, metin arama çok önemli bir özelliktir. Örneğin, metin arama özelliğinin açık olduğu bir veritabanına sahip bir e-ticaret sitesi kullanıcılar için büyük kolaylık olacaktır.
Sunucu Tarafı Betikleri
Eğer işlemlerinizi uygulamanızın içinde değil sunucu tarafında yapmanız gerekiyorsa, bu MongoDB’de mümkün. Mongo ifadeleri listenizi bir .js dosyasına koyun ve yourFile.js’yi çalıştırın.
Belgeler=Nesneler
Belge veritabanına sahip olmanın iyi yanlarından biri de nesnenizin MongoDB’de tek bir belge halinde saklanabiliyor olması. Burada bir ORM’ye gerek yok.
Kötü Yanları
MongoDB’nin iyi yanlarını gördük. Aşağıda bazı kötü özellikler bulunmakta. Bu kısmın daha dikkatle inceleneceği kesin. MongoDB yanlış şekillerde kullanılırsa bir hayli kötü bir platforma dönüşebiliyor.
İşlemler
Artık işlem gerektiren pek bir uygulama kalmamış durumda. Ama bazı uygulamalar hala buna gereksinim duyuyor. MongoDB ne yazık ki işlemleri desteklemiyor. Bu yüzden eğer kullanıcı talebi başına birden fazla belgeyi veya koleksiyonu güncellemeniz gerekiyorsa MongoDB kullanmayın. ACID garantisi olmadığı için verinin bozulmasına neden olabilirsiniz. Geri çağırmaların uygulamanız tarafından yapılması gerekiyor.
Tetik Olmaması
RDBM’lerde birçok durumda geliştiricilerin imdadına yetişen tetik özelliği vardır. Ne yazık ki bu özellik MongoDB’de bulunmamakta.
Bellek
MongoDB diğer popüler veritabanlarına kıyasla daha fazla belleğe ihtiyaç duyuyor. MongoDB 3.0’la birlikte WiredTiger’ın hizmete sunulması bellek sorununu çözmüş durumda ama WiredTiger birçok uygulama için henüz pek uygun değil.
DiskTemizleme
MongoDB disk alanını otomatik olarak temizlemiyor. Bu yüzden belgelerin yeniden yazılması veya silinmesi durumunda yeni disk alanı açılmıyor. Bu işlemin manuel olarak yapılması gerekiyor.
Çirkin Yanları
Bazen çirkin kötüden de kötü bir şey olabiliyor. Bu teknolojiyi kullanmaya başlamadan önce çirkin yanlarını bilmekte de fayda var. Bu çirkin yanların sizi bu ürünü kullanmaktan alıkoymaması gerekiyor ama hayatınızı zorlaştırabileceği de bir gerçek.
Hiyerarşi
Eğer bir nesnenin sürekli tekrarlanan çocuklarının olduğu bir veri modeliniz varsa (aynı nesne tipi, bir nesnenin çocuğudur ve bu çocuklar ‘n’ katına kadar artabilir) MongoDB belgeleri çok çirkin bir hal alabilir. Bu tekrarlanan gömülü belgelerin dizinlenmesi, aranması ve sınıflandırılması çok zor olabilir.
Birleştirmeler
MongoDB’de iki belgenin birleştirilmesi de pek kolay değil. MongoDB 3.2 sol dıştaki birleştirmeleri desteklese de, bu özellik henüz olgunlaşmış sayılmaz. Uygulamalarınızda tek bir sorgulama içindeki çoklu koleksiyonlardan veri alıp çıkartmanız gerekiyorsa, bunu yapmanız mümkün olmayabilir. Bu nedenle çok sayıda sorgulama yapmak zorundasınız ki bu da kodunuzun biraz dağınık görünmesine neden olabilir.
Dizinleme
Her ne kadar hız MongoDB’nin en büyük artılarından biri olarak gösterilse de, bu hıza yalnızca doğru dizinlemeyi yaparsanız ulaşabiliyorsunuz. Eğer kötü yapılmış veya birçok parçadan yapılmış ve yanlış bir düzende dizilmiş dizinleriniz varsa MongoDB dünyanın en yavaş veritabanlarından birine dönüşebiliyor.
Eğer çok sayıda ‘şuna göre filtrele’ veya ‘şuna göre diz’ alanlarınız varsa, bir koleksiyon içinde çok fazla dizininiz olabiliyor ki bu da elbette hiç iyi bir şey değil.
Mükerrer Veri
MongoDB iyi tanımlanmış ilişkileri desteklemediği için çok sayıda mükerrer veriniz olabiliyor. Bu mükerrer verileri güncellemek çok zor bir iş olabileceği gibi, ACID uyumunun olmaması nedeniyle bozuk veri durumuyla da karşı karşıya kalınabiliyor.
Sonuç
MongoDB genel olarak iyi bir veritabanı. Tabii önce sizin kullanım alanınıza uyması gerekiyor. Eğer uymuyorsa, bir anda çok çirkin bir hal alabiliyor.
MongoDB’yi iyi incelemeniz ve mutlaka bir uzmana danışmanız gerekir. Doğru kullanıldığı takdirde mutlaka çok memnun kalacağınız bir veritabanı.
2 yorumlar
Merhabalar,
Yararlı bir makale olmuş teşekkür ederim. Ancak sormak istediğim; IHS olarak mongoDB hosting gibi bir hizmetiniz var mı? Ya da vermeyi düşünüyor musunuz? Teşekkürler…
gayet açıklayıcı olmuş emeğinize sağlık