Я не достаточно опытен в обоих мирах, чтобы правильно и полностью ответить на ваш вопрос, однако я некоторое время пользуюсь базой данных документов, и вот некоторые личные подсказки.
Базы данных документов основаны на концепции ключа, значения и статических представлений и довольно полезны для поиска набора документов, имеющих определенное значение.
Они не понимают отношения между документами.
Таким образом, если ваше программное обеспечение должно предоставлять расширенные «запросы», когда критерии выбора действуют на несколько «типов документов», или если вам просто нужно выполнить выборку с использованием нескольких элементов, концепция [ключ, значение] не подходит.
Существует также ряд других случаев, когда базы данных документов неуместны: представление больших наборов данных в «разбитых на страницы» таблицах, сортируемых по нескольким столбцам, является одним из случаев, когда производительность низкая, а использование дискового пространства огромное .
Так что во многих случаях вам придется выполнять обработку на стороне сервера, чтобы собрать кусочки, и с помощью rails или любой другой среды на основе ruby вы можете столкнуться с проблемами производительности.
База данных графа основана на концепции tripplestore, что означает, что они также концептуализируют отношения между сущностями.
График может быть пройден с использованием отношений (и ролей сущностей) и может быть более удобным при выполнении поиска по данным, структурированным по отношениям.
Поскольку у меня нет опыта работы с базой данных графов, я не знаю, может ли база данных графов быть легко запрошена / прослежена по нескольким критериям, однако, если у рекомендованного читателя есть такая информация, я действительно ценю любые примеры таких запросов. /traversals.
В настоящее время я читаю о InfoGrid и пытаюсь выяснить, могут ли такие базы данных быть полезными для выполнения сложных запросов к очень большому набору данных, включая отношения ....
Из того, что я могу прочитать, InfoGrah следует рассматривать как «объединитель данных», способный искать / извлекать данные из нескольких источников (хранилищ), которые также могут быть базами данных NoSQL, такими как Mongo.
Это означает, что вы могли бы использовать хранилище Монго для обновлений и InfoGraph для поиска данных, а может сэкономить много ресурсов процессора и диска, когда дело доходит до сложных поисков внутри nosql базы данных.
Конечно, это может показаться немного «излишним», если ваше приложение просто хранит большой набор огромных двоичных файлов в базе данных, и все, что вам нужно, это выполнять простые ключевые запросы и получать результат. В этом случае может пригодиться база данных nosql, такая как mongo или couch.
Надеюсь, что это поможет;)