我在我的应用程序中使用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>
答案 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。无论哪种方式,您都可以解决您的问题,而无需强迫自己处理多个数据存储的复杂性和成本。