朋友的朋友用例 - Redis 与图形数据库
Friends of friends use case - Redis vs a Graph Databse
作为学校作业的一部分,我创建了一个小型社交网络。我们的下一个任务是在将使用非关系数据库的项目中实现一个功能。我们被建议使用 Redis 或 ElasticSearch。
我很清楚,我可以使用 ElasticSearch 根据姓名等来查找人员和组。
但目前我更感兴趣的是制作一个潜在的朋友查找器,它会根据两个用户的共同朋友以及他们所属的群组来推荐朋友。
我的问题是:这是 Redis 的一个很好的用例,还是使用图形数据库来处理这样的事情会好得多?
这是我想象的样子:
我在 redis
中存储了一组名为 "users" 的注册用户
对于每个用户,我都有一个 Set 来跟踪他们的朋友,例如
"user:1:friends"
- 我还为每个用户存储了一个潜在朋友的 SortedSet
例如"user:1:potential"
假设一个我不是朋友的用户将我的一个朋友添加到他们的朋友列表中。当发生这种情况时,我会拿走我朋友的所有朋友组,并检查我的朋友的新朋友是否在每个组中。如果不是,那么我会在我的朋友的潜在朋友集中增加分配给他的 id 的分数,这些朋友不是新人的朋友。
总而言之,这对我来说似乎需要大量工作,这就是为什么我不确定这是否是个好主意的原因。
那么再说一次 - 图形数据库对于这样的事情会更好吗?
考虑到您需要执行任何操作(包括设置无 sql 数据库),我肯定会选择 graphDB。
朋友之友(以及更普遍的建议)是此类数据库的基本用例。这是他们展示了他们的全部潜力。
我建议您看看 Neo4J:http://neo4j.com
他们的社交网络用例:http://neo4j.com/use-cases/social-network/
作为学校作业的一部分,我创建了一个小型社交网络。我们的下一个任务是在将使用非关系数据库的项目中实现一个功能。我们被建议使用 Redis 或 ElasticSearch。
我很清楚,我可以使用 ElasticSearch 根据姓名等来查找人员和组。
但目前我更感兴趣的是制作一个潜在的朋友查找器,它会根据两个用户的共同朋友以及他们所属的群组来推荐朋友。
我的问题是:这是 Redis 的一个很好的用例,还是使用图形数据库来处理这样的事情会好得多?
这是我想象的样子:
我在 redis
中存储了一组名为 "users" 的注册用户
对于每个用户,我都有一个 Set 来跟踪他们的朋友,例如 "user:1:friends"
- 我还为每个用户存储了一个潜在朋友的 SortedSet
例如"user:1:potential"
假设一个我不是朋友的用户将我的一个朋友添加到他们的朋友列表中。当发生这种情况时,我会拿走我朋友的所有朋友组,并检查我的朋友的新朋友是否在每个组中。如果不是,那么我会在我的朋友的潜在朋友集中增加分配给他的 id 的分数,这些朋友不是新人的朋友。
总而言之,这对我来说似乎需要大量工作,这就是为什么我不确定这是否是个好主意的原因。 那么再说一次 - 图形数据库对于这样的事情会更好吗?
考虑到您需要执行任何操作(包括设置无 sql 数据库),我肯定会选择 graphDB。 朋友之友(以及更普遍的建议)是此类数据库的基本用例。这是他们展示了他们的全部潜力。 我建议您看看 Neo4J:http://neo4j.com 他们的社交网络用例:http://neo4j.com/use-cases/social-network/