Instagram喜欢使用mongodb和节点js的社交网络

时间:2016-02-16 08:18:38

标签: node.js mongodb mongoose social-networking graph-databases

我在我的应用程序中使用mongodb和节点js。我们有用户收集和事件收集。

Users :-  "user":{
"name":[name],
"email":[email]

}

Events :-  "event":{
"title":[title],
"venue":[venue]

}

以前,用户只能关注活动,但现在无法互相关注我也在围绕用户进行社交网络,因此用户可以互相关注,他们的Feed会像Instagram一样进行相应的更改。

所以我的问题是因为我的主要数据库是Mongodb,所以我应该只使用Mongodb建立这个社交网络,还是应该使用一些Graph db并将我的所有用户数据从Mongo db放到Graph db并同时维护两个数据库< / p>

1 个答案:

答案 0 :(得分:0)

您可以这样做的一种方法是使用GraphQL在Mongo前面放置一台运行express-graphql的快速服务器。如果您定义用户类型和事件类型,则可以编写如下的graphql查询:

query {
   user(name: "Sally") {
     followed_users {
       name
     }
     followed_events {
       title
     }
   }
}

这实际上将您的数据显示为图形,但是graphql将触发一系列mongodb查询(查看解析函数here并想象幕后的Mongo查询而不是数据[args.id])获取所有信息,然后将其组合成单个JSON响应。

更具侵入性的选择是从MongoDB切换到ArangoDB。 它是一个像MongoDB这样的文档存储,所以它应该感觉很熟悉,但如果你添加一个额外的边集合(另一个带有_to:和_from:attributes的文档),那么你有一个实际的图形,可以做实际的连接,遍历和事务在DB。

虽然GraphQL只是将您的数据显示为图形,但ArangoDB实际上是full-on graph database。无论哪种方式,您都可以解决您的问题,而无需强迫自己处理多个数据存储的复杂性和成本。