SQL 在 3 次跳转时失败,而图数据库则不会。 想象一下,找到与可疑交易相距 3 次跳转的所有账户。或者通过共享的电子邮件和电话号码在系统之间链接碎片化的客户记录。 这些都是图遍历查询。SQL 可以处理关系,但无法处理深度。 当然,你可以编写递归 CTE 和自连接。这在 1-2 次跳转时有效。但深入后会发生两件事: - 查询变得难以阅读 - 性能下降 每次跳转都会增加另一个自连接。到达第 5-6 次跳转时,你会看到运行几分钟并在负载下崩溃的查询。 在 Cypher 中的相同查询: 𝗠𝗔𝗧𝗖𝗛 (𝘁:𝗧𝗿𝗮𝗻𝘀𝗮𝗰𝘁𝗶𝗼𝗻 {𝗶𝗱: '𝗧𝗫𝗡-𝟬𝟬𝟭'})-[:𝗜𝗡𝗩𝗢𝗟𝗩𝗘𝗦*𝟭..𝟯]-(𝗮:𝗔𝗰𝗰𝗼𝘂𝗻𝘁) 𝗥𝗘𝗧𝗨𝗥𝗡 𝗗𝗜𝗦𝗧𝗜𝗡𝗖𝗧 𝗮.𝗻𝗮𝗺𝗲, 𝗮.𝗽𝗵𝗼𝗻𝗲 3 行。读起来就像你在问的问题。可以扩展到任何深度。 这就是图数据库的构建目的。 FalkorDB 是一个值得了解的数据库。它是开源的。与大多数图数据库相比,它采用了不同的架构方法。 大多数图数据库在遍历时从节点到节点追踪指针。FalkorDB 不这样做。它基于 GraphBLAS,一个将图操作表示为稀疏矩阵计算的线性代数框架。每次跳转变成一个优化的矩阵操作。 结果: - 更好的缓存行为 - 跨跳转的并行计算...