朋友之友使用案例 - Redis vs Graph Databse

时间:2016-04-15 10:52:48

标签: redis graph-databases database nosql

我建立了一个小型社交网络,作为学校的一部分。我们的下一个任务是在项目中实现一个使用非关系数据库的功能。我们被建议去Redis或ElasticSearch。

我很清楚,我可以使用ElasticSearch根据他们的名字等来查找人和组。

但目前我更感兴趣的是建立一个潜在的朋友发现者,根据两个用户的共同朋友以及他们所属的团体建议朋友。

我的问题是:这对Redis来说是一个很好的用例吗?或者将Graph数据库用于这样的事情会好得多吗?

这就是我想象的:

  • 我有一组名为"用户"存储在redis中

  • 对于每个用户,我都有一个跟踪他们的朋友的Set,例如 "用户:1:朋友"

  • 我还为每个用户存储了一个潜在朋友的SortedSet 例如"用户:1:潜在"

让我们说我不是朋友的用户会将我的一个朋友添加到他们的朋友列表中。当发生这种情况时,我会带走我朋友的所有朋友,并检查我的朋友新朋友是否属于每一组。如果没有,那么我会在朋友朋友的潜在朋友中增加分配给他的ID的分数,这些朋友不是新朋友的朋友。

总而言之,在我看来,这似乎是很多工作,这就是为什么我不确定这是一个好主意。 再说一次 - 图表数据库对于这样的人来说会好得多吗?

1 个答案:

答案 0 :(得分:1)

考虑到你有任何要实现的东西(包括设置no sql db)我肯定会使用graphDBs。 朋友之友(以及更普遍的建议)是这种类型的DB的基本用例。这是他们充分发挥潜力。 我建议您看看Neo4J:http://neo4j.com 他们的社交网络用例:http://neo4j.com/use-cases/social-network/