是否有任何图形数据库具有内置功能,可以返回2个或更多人之间的常见朋友列表 - 就像在像Facebook这样的社交网络中?应尽可能快地返回结果,而无需执行复杂的计算或遍历数据库。如果没有,实施它的方法是什么? OriendDB怎么样?如何使用图形数据库和Redis的组合?
答案 0 :(得分:0)
不确定特定的图形数据库(我是通过在redis上构建我自己的图形数据库来实现的),但假设朋友意味着直接连接,找到常见的朋友相当简单 - 只需从每个数据库中获取完整的朋友列表计算交点。
Redis有一个本地和非常快速地执行此操作的命令。它的SQL查询也很简单。获取单个节点的所有连接应该可以在任何图形数据库上使用,即使您需要检索完整列表并计算应用程序代码中的交集,只要您不必处理人员,性能可能就足够了谁拥有数千/数百万的朋友。
处理间接关系变得越来越复杂 - 交叉操作是相同的,但是在不遍历图形的情况下,集合不存在于所需的形式中,因此在计算交集之前,您需要构建一组所有每个用户的二级连接。您可以将此作为查询的第一步,或者在连接更改时维护永久集更新 - 适当的方法取决于您是否需要优化数据使用和写性能或读性能。