代码之家  ›  专栏  ›  技术社区  ›  Chirantan

实现LinkedIn“如何连接”功能的有效方法?

  •  9
  • Chirantan  · 技术社区  · 15 年前

    假设访问者和概要文件所有者是图中的两个节点,其中节点表示用户,边表示友谊,一个简单的解决方案可以是bfs,从两个节点开始,直到某个级别,并查看是否存在任何交点。交叉点将是网络链路节点。

    2 回复  |  直到 9 年前
        1
  •  5
  •   Community CDub    8 年前

    您可以在本文中看到如何做到这一点 Graphs in the database: SQL meets social networks 洛伦佐·艾伯顿。示例代码是使用CTE为PostgreSQL编写的。然而,我怀疑使用 RDBMS 因为这将表现良好。在本例中,我写了一篇关于如何使用本机图形数据库完成与上述文章相同的工作的文章 Neo4j Social networks in the database: using a graph database . 除了性能上的差异之外,图形数据库还通过提供图形API简化了任务,该API可以轻松处理用SQL编写(或使用存储过程)非常复杂的遍历。我写了更多关于图形数据库的文章 this thread 看看 this one

        2
  •  1
  •   Chris    15 年前

    如果没有某种递归存储过程(SQLServer2005+中的CTE),随着级别的加深,您将需要多次往返。然而,一个好的缓存基础设施确实可以提高性能,因为最流行/活跃用户的连接列表将保持缓存状态。通过缓存的读/写机制将使事情变得更好(缓存更新级联到db更新,缓存读取级联到db读取)