Basis data seperti MongoDB sangat bagus ketika Anda biasanya tahu di mana data Anda (tidak perlu menulis beberapa pertanyaan rumit). Dengan Mongo, "terkait" data bersarang di data induk atau memiliki kunci utama / asing. Ini bagus jika, misalnya, Anda memiliki Posting dan Komentar; umumnya, Anda tidak akan menampilkan komentar di luar konteks kiriman, jadi masuk akal jika komentar terkandung di dalam kiriman (dengan cara itu Anda mendapatkan semua komentar untuk kiriman tanpa perlu kueri tabel terpisah).
MongoDB adalah schemaless. Ini berarti bahwa ia akan mengambil struktur data apa pun yang Anda berikan padanya, untuk sebagian besar.
Di sisi lain, jika Anda perlu menggunakan fungsi agregat dan merasakan kebutuhan untuk meminta data dengan cara yang kompleks yang tidak dapat dicapai melalui embed atau hubungan sederhana di Mongo, saat itulah Anda tahu saatnya menggunakan RDBMS seperti MySQL atau PostgreSQL.
MongoDB tidak dimaksudkan untuk menggantikan SQL. Ini hanya memenuhi kebutuhan yang berbeda, dan MongoDB dan RDBMS dapat digunakan bersamaan. Menurut pendapat saya, MongoDB tidak terlalu penting jika Anda tidak membutuhkan data Anda untuk menjadi fleksibel atau tertanam dalam dokumen induk. Pengembangan dengan MongoDB sangat menyenangkan karena ada langkah-langkah yang jauh lebih sedikit terlibat dalam mendapatkan proyek (katakanlah dalam Rails) dan berjalan. Perlu melakukan perubahan? Tidak masalah. Cukup tambahkan atribut ke model Anda. Selesai.
Saya tidak dapat berbicara untuk banyak basis data NoSQL lainnya, meskipun saya tahu bahwa mereka biasanya dirancang serupa untuk memenuhi kebutuhan spesifik yang tidak dapat dipenuhi oleh RDBMS. Beberapa berada sepenuhnya dalam memori atau dapat dengan mudah di-shard atau diskalakan. Saya cukup yakin bahwa Cassandra dirancang untuk terus beroperasi tanpa kehilangan data jika sebuah simpul turun. Redis pada dasarnya adalah toko nilai kunci yang berada di memori (dengan disk periodik menulis untuk kegigihan), tetapi juga memiliki kemampuan untuk menyimpan tipe data seperti set dan mengurutkannya.