По моему мнению, формат ваших данных должен быть основным приоритетом при выборе хранилища данных. У вас есть данные, которые носят реляционный характер? Если да, то может ли это быть хорошей идеей для моделирования данных в документах? Моделирование данных так же важно в базе данных документов, как и в реляционной базе данных, оно просто выполняется по-другому. Сколько типов объектов у вас есть и как они связаны? Может ли DBrefs в Mongodb справиться с задачей или вы пропустите внешние ключи настолько, что это будет больно? Каковы ваши шаблоны доступа к данным? Вы просто выбираете данные одного типа, отфильтрованные по значению поля, или у вас есть сложные режимы выборки?
Вам нужна ACID целостность транзакций? Применяет ли домен множество ограничений к данным? Вам нужен коэффициент масштабируемости базы данных документов или это просто "крутая" вещь, которую нужно иметь?
Каковы ваши требования к согласованности и целостности данных? Некоторые решения NoSQL и, в частности, MongoDB, не обеспечивают согласованности записи для достижения производительности. NoSQL не имеет единого ландшафта и других продуктов, например CouchDB имеет другие характеристики в этом отделе. Некоторые тоже настраиваются.
Это все вопросы, которые должны входить в выбор хранилища.
Некоторые впечатления
- Делать подробные отчеты о сохраненных данных может быть сложнее при использовании MongoDB или любой базы данных документов, и в некоторых случаях для этой цели сочетаются СУБД и document-db.
- (Очень) Другая модель запроса. MongoDB также отличается от других document-dbs.
- Гибкость для изменения формата данных / схемы во время разработки
- Неизвестная территория
- различной степени зрелости в драйверах и каркасах
- Fast
- Более простые (во многих отношениях) продукты и инструменты управления (по сравнению со многими продуктами СУБД)
- Нет больше несоответствия импеданса. Хранилище подходит для данных, а не наоборот.
- Меньше трений и более прямой доступ к данным.
- Домен более привязан к постоянству (в зависимости от "уровня" ORM в NoRM, от того, насколько сильно он абстрагируется от внутреннего интерфейса. Я не использовал NoRM, поэтому не могу ответить на него.)