IHS Blog

İyi, Kötü ve Çirkin Yönleriyle MongoDB

MongoDB-Nedir

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ı.

Exit mobile version