文档在目录中创建图表声称在使用 Native Projection 而不是 Cypher Projection 时具有这种性能优势,但没有给出太多解释。
原生投影
提供最佳性能...Cypher 投影
更灵活、更具表现力的方法,较少关注性能。
据我了解,所有预测都将结束:
图形投影完全存储在内存中,使用针对拓扑和属性查找操作优化的压缩数据结构。
那么为什么性能增益呢?
此外,假设获得的性能是用于加载(具体化)投影图或稍后进行处理,例如使用 PageRank 算法?
文档在目录中创建图表声称在使用 Native Projection 而不是 Cypher Projection 时具有这种性能优势,但没有给出太多解释。
原生投影
提供最佳性能...Cypher 投影
更灵活、更具表现力的方法,较少关注性能。
据我了解,所有预测都将结束:
图形投影完全存储在内存中,使用针对拓扑和属性查找操作优化的压缩数据结构。
那么为什么性能增益呢?
此外,假设获得的性能是用于加载(具体化)投影图或稍后进行处理,例如使用 PageRank 算法?
你是对的,所有的预测最终都完全存储在内存中。密码投影和原生投影之间的区别在于我们可以多快存储或实现投影图。据我所知,原生投影使用内部 Neo4j API,这使得加载图形更快,但仅限于指定节点标签和关系类型。另一方面,Cypher 投影支持 cypher 的所有功能,可以非常灵活地用于过滤我们想要投影的子图。我们还可以投影一个虚拟图。虚拟图的一个非常常见的投影是仅使用密码投影将二分图投影为单分图。您必须意识到,密码查询越复杂,图形投影的速度就越慢。即使只是投影单个节点标签和关系类型,使用密码投影也会比使用原生投影更慢。但在你的图表超过千万个节点和关系之前,我不会太担心
一旦图形在内存中具体化,算法的执行时间应该是相同的,无论算法是使用密码投影还是原生投影进行投影。