Ответ 1
Это действительно вопрос "это зависит". Некоторые общие баллы:
- NoSQL, как правило, хорош для неструктурированных/"без схемы" данных - обычно вам не нужно явно определять свою схему заранее, и вы можете просто включать новые поля без всякой церемонии
- NoSQL обычно предпочитает денормализованную схему из-за отсутствия поддержки JOIN в мире RDBMS. Таким образом, у вас обычно будет плоское, денормализованное представление ваших данных.
- Использование NoSQL не означает, что вы можете потерять данные. Разные БД имеют разные стратегии. например MongoDB - вы можете выбрать уровень компромисса между производительностью и потенциалом потери данных - лучшая производительность = больше возможностей для потери данных.
- Часто очень легко масштабировать решения NoSQL. Добавление большего количества узлов для репликации данных - это один из способов а) обеспечения большей масштабируемости и б) обеспечения большей защиты от потери данных в случае отказа одного узла. Но опять же, зависит от БД/конфигурации NoSQL. NoSQL не обязательно означает потерю данных, как вы делаете вывод.
- ИМХО, сложные/динамические запросы/отчеты лучше всего обслуживать из РСУБД. Часто функциональность запросов для БД NoSQL ограничена.
- Это не должен быть 1 или другой выбор. Мой опыт использования RDBMS в сочетании с NoSQL для определенных случаев использования.
- БД NoSQL часто не имеют возможности выполнять элементарные операции над несколькими "таблицами".
Вам действительно нужно посмотреть и понять, что представляют собой различные типы хранилищ NoSQL, и как они обеспечивают масштабируемость/безопасность данных и т.д. Трудно дать общий ответ, поскольку все они на самом деле разные и по-разному решают проблемы..
Для MongoDb в качестве примера, посмотрите их Use Cases, чтобы увидеть, что они предлагают как "хорошо подходящие" и "менее подходящие" варианты использования MongoDb.