【发布时间】:2011-06-30 23:37:13
【问题描述】:
我的项目(在 Ruby on Rails 3 中)是开发一个具有以下功能的“社交网络”网站:
- 用户可以成为朋友。这是相互的友谊;不像 Twitter 那样不对称。
- 用户可以发布链接,进行分享。用户的朋友可以看到该用户分享的内容。
- 朋友可以对这些共享链接发表评论。
所以基本上我们有用户、链接和评论,以及所有相关的东西。社交网络中一个有趣的事情是 User 表与其自身具有一种多对多的关系。
我认为我可以使用 SQL 和 RoR 处理这种复杂程度。
我的问题是:在这样的网站上使用 MongoDB(或 CouchDB)是个好主意吗?
说实话,我认为答案是否定的。 MongoDB 似乎不太适合多对多关系。我想不出一个好的 MongoDB 方式来实现友谊关系。而且我读过 Diaspora 从 MongoDB 开始,但后来又切换回经典 SQL。
但网络上的一些文章为 MongoDB 为社交网络辩护,最重要的是,我想做出一个明智的决定,不要错过 MongoDB 的一个非常酷的方面,它会改变我的生活。
另外,我听说过 graph DB,它可能很棒,但它们对我来说似乎太年轻了,我不知道它们如何适应 RoR(更不用说 heroku)了。
那么,我错过了什么吗?
【问题讨论】:
-
@JimmyCuadra :我必须说我并没有真正理解架构。我想我对数据库的了解还不够,无法真正了解该三角形 3 边的利害关系。不过还是谢谢你!
标签: sql ruby-on-rails mongodb social-networking nosql