2016-04-15 116 views
3

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

这我很清楚,我可以使用ElasticSearch,以查找他们的名字等

人群组,但此刻我更感兴趣的是一个潜在的朋友查找这表明基于朋友两个用户的共同朋友,也许他们是他们的一部分。

我的问题是:这是Redis的一个很好的用例吗?还是使用Graph数据库来处理这样的事情会好很多?

这是我想象的那样:

  • 我有一组注册用户称为“用户”内部存储的Redis

  • 对于每一个用户我有一组这使他们的朋友轨道例如 “用户:1:朋友”

  • 我也有一个为每个用户储存的潜在朋友的排序集,例如
    “user:1:potential”

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

总而言之,这在我看来很像很多工作,这就是为什么我不确定这是否是一个好主意。 所以再说一次 - 图形数据库会比这更好吗?

回答

1

考虑到你有什么可以实现的(包括设置no sql db),我肯定会使用graphDBs。 朋友的朋友(和更一般的建议)是这种类型的数据库的基本用例。这是他们展示了他们的全部潜力。 我建议你看看Neo4J:http://neo4j.com 而他们的社交网络用例:http://neo4j.com/use-cases/social-network/