我目前正在为neo4j使用嵌入式python绑定。我目前没有任何问题,因为我的图表非常小(稀疏和高达100个节点)。我正在开发的算法在图上涉及相当多的遍历,更具体地说是图上的DFS以及不同的子图。 在未来,我打算在大型图形上运行算法(假设稀疏且具有数百万个节点)。
阅读了与python / neo4j绑定here,here的性能相关的不同线程,我想知道我是否应该切换到Python的某些REST API客户端(如bulbflow,py2neo,neo4jrestclient)直到我太远而无法更改所有代码。
不幸的是,我没有找到任何全面的信息来源来比较不同的方法。
有人能提供一些有关此问题的进一步见解吗?选择其中一个选项时,我应该考虑哪些标准?
答案 0 :(得分:8)
Django是一个MVC Web框架,所以如果你是一个Web应用程序,你可能会感兴趣。
从py2neo(我是作者)的角度来看,我试图通过在适当的时候自动使用批处理执行机制以及提供强大的Cypher支持来专注于性能。我最近也做了很多工作,为索引中的唯一性管理提供了很好的选择 - 特别是get_or_create
和add_if_none
方法。
答案 1 :(得分:3)
从Python运行算法的最简单方法是使用Gremlin(https://github.com/tinkerpop/gremlin/wiki)。
使用Gremlin,您可以将所有内容捆绑到一个HTTP请求中,以减少往返开销。
以下是如何从灯泡(http://bulbflow.com)执行Gremlin脚本:
>>> from bulbs.neo4jserver import Graph
>>> g = Graph()
>>> script = "g.v(id).out('knows').out('knows')"
>>> params = dict(id=3)
>>> g.gremlin.execute(script, params)
Bulbs Gremlin API文档位于:http://bulbflow.com/docs/api/bulbs/gremlin/
答案 2 :(得分:0)
不太确定,我不是专家,但我认为这也取决于您对Django的期望,以及您需要多少框架。 Py2neo非常务实和纤薄,Bulbflow似乎构建了一个完整的映射堆栈等,neo4jrestclient专注于Django(这可能是错误的)?