MongoDB gibi veritabanları genellikle verilerinizin nerede olduğunu bildiğiniz zaman harikadır (birkaç karmaşık sorgu yazmak yerine). Mongo ile "ilgili" veriler ana verinin içine yerleştirilir veya birincil / yabancı anahtarlara sahiptir. Örneğin, Gönderiler ve Yorumlarınız varsa bu harika; Genel olarak yorumları bir gönderi bağlamı dışında görüntülemeyeceksiniz, bu nedenle bir gönderi içinde yorumların yer alması mantıklı geliyor (bu şekilde yazının tüm yorumlarını ayrı bir tabloyu sorgulamaya gerek kalmadan alabilirsiniz).
MongoDB şemadır. Bu, attığınız verinin yapısını büyük oranda alacağı anlamına gelir.
Öte yandan, toplu işlevleri kullanmanız ve verileri Mongo'daki katıştırmalar ya da basit ilişkiler yoluyla elde edilemeyecek karmaşık yollarla sorgulamanız gerektiğine inanıyorsanız, o zaman MySQL ya da PostgreSQL gibi bir RDBMS kullanma zamanı geldiğini biliyorsunuzdur.
MongoDB, SQL'in yerini almaz. Basitçe farklı ihtiyaçları karşılar ve MongoDB ve RDBMS birlikte kullanılabilir. Bana göre, verilerinizin esnek olmasına veya bir ana belgeye gömülü olmasına ihtiyacınız yoksa, MongoDB gerekli değildir. MongoDB ile geliştirme çok eğlenceli, çünkü bir projenin (Rails'te) çalışmaya başlaması için çok daha az adım var. Bir değişiklik yapmanız mı gerekiyor? Sorun değil. Modelinize bir özellik ekleyin. Bitti.
Diğer birçok NoSQL veritabanı için konuşamıyorum, ancak genellikle benzer şekilde bir RDBMS tarafından karşılanamayan belirli bir ihtiyacı karşılamak üzere tasarlandıklarını biliyorum. Bazıları tamamen bellekte bulunur veya çok kolay bir şekilde paylaştırılabilir veya ölçeklenebilir. Bir düğüm düştüğünde Cassandra'nın veri kaybı olmadan çalışmaya devam etmek üzere tasarlandığından eminim. Redis, temel olarak bellekte bulunan (kalıcılık için yazılan periyodik disklerle yazılan) önemli bir değer deposudur, ancak aynı zamanda setler gibi veri tiplerini saklama ve bunları sıralama özelliğine de sahiptir.