Бази даних на зразок MongoDB чудові, коли ви зазвичай знаєте, де ваші дані (на відміну від необхідності писати кілька складних запитів). У Монго "пов'язані" дані або вкладені в батьківські дані, або вони мають первинні / зовнішні ключі. Це чудово, якщо, наприклад, у вас є повідомлення та коментарі; як правило, ви не збираєтеся показувати коментарі поза контекстом публікації, тому має сенс, що коментарі містяться в публікації (таким чином ви отримуєте всі коментарі до публікації, не вимагаючи запиту в окрему таблицю).
MongoDB не є схемою. Це означає, що вона буде займати будь-яку структуру даних, яку ви кидаєте на неї, здебільшого.
З іншого боку, якщо вам потрібно використовувати сукупні функції і відчуваєте необхідність запитувати дані складними способами, яких неможливо досягти за допомогою вбудовування або простих відносин у Монго, тоді ви знаєте, що прийшов час використовувати RDBMS на зразок MySQL або PostgreSQL.
MongoDB не призначений для заміни SQL. Він просто відповідає різним потребам, і MongoDB та RDBMS можуть використовуватися спільно. На мою думку, MongoDB не все є таким необхідним, якщо вам не потрібні ваші дані, щоб бути гнучкими або вбудованими в батьківський документ. Розвиток за допомогою MongoDB - це дуже цікаво, тому що для запуску та запуску проекту (скажімо, у Rails), набагато менше кроків. Потрібно внести зміни? Нема проблем. Просто додайте атрибут до вашої моделі. Зроблено.
Я не можу говорити про багато інших баз даних NoSQL, хоча я знаю, що вони зазвичай аналогічно розроблені для задоволення конкретної потреби, яку RDBMS не може задовольнити. Деякі повністю мешкають у пам'яті або їх можна легко зрубати або змінити. Я майже впевнений, що Кассандра призначена для продовження роботи без втрати даних, якщо вузол знизиться. Redis - це в основному сховище значень, яке знаходиться в пам'яті (з періодичними записами на диск для постійності), але також має можливість зберігати типи даних, як набори, і сортувати їх.