1

是否有任何图形数据库具有内置功能以返回 2 人或更多人之间的共同朋友列表 - 就像在 Facebook 等社交网络中一样?结果应该尽可能快地返回,而不需要执行复杂的计算或遍历数据库。如果没有,有哪些实现方法?OriendDB 呢?结合使用图数据库和 Redis 怎么样?

4

1 回答 1

0

不确定特定的图形数据库(我是通过在 redis 之上构建自己的图形数据库来实现这一点的),但假设朋友意味着直接连接,找到共同的朋友相当简单 - 只需从每个朋友中获取完整的朋友列表并计算交集.

Redis 有一个命令可以本机且非常快速地执行此操作。它的 SQL 查询也相当简单。获取单个节点的所有连接应该在任何图形数据库上都可用,即使您需要检索完整列表并计算应用程序代码中的交集,只要您不必与人打交道,性能可能就足够了谁有成千上万的朋友。

它变得更复杂的是处理间接关系 - 交集操作是相同的,但是如果不遍历图,集合不会以所需的形式存在,因此在计算交集之前,您需要构建一组所有二级连接对于每个用户。您可以将此作为查询的第一步,也可以在连接更改时更新永久集 - 适当的方法取决于您是否需要针对数据使用和写入性能或读取性能进行优化。

于 2011-08-30T22:35:17.587 回答