Мой проект (в Ruby on Rails 3) заключается в разработке сайта "социальной сети" со следующими функциями:
- Пользователи могут быть друзьями. Это взаимная дружба; не асимметричный, как Twitter.
- Пользователи могут публиковать ссылки, делиться ими. Друзья пользователя могут видеть, чем он поделился.
- Друзья могут комментировать эти общие ссылки.
Таким образом, в основном у нас есть пользователи, ссылки и комментарии, и все, что связано. В социальных сетях интересно то, что таблица User имеет отношение типа "многие ко многим".
Я думаю, что справлюсь с этим уровнем сложности с помощью SQL и RoR.
Мой вопрос: будет ли хорошей идеей использовать MongoDB (или CouchDB) для такого сайта?
Если честно, я думаю, что ответ - нет. MongoDB, похоже, не совсем подходит для отношений "многие ко многим". Я не могу придумать хороший способ MongoDB реализовать дружеские отношения. И я читал, что диаспора начинала с MongoDB, но затем переключилась на классический SQL.
Но некоторые статьи в Интернете защищают MongoDB для социальных сетей, и, прежде всего, я хочу принять взвешенное решение и не пропустить действительно крутой аспект MongoDB, который изменит мою жизнь.
Кроме того, я слышал о графе DB, который, вероятно, великолепен, но мне он действительно кажется слишком молодым, и я не знаю, как бы они подходили для RoR (не говоря уже о heroku).
Итак, я что-то упустил?