11

我目前正在为 neo4j 使用嵌入式 python 绑定。我目前没有任何问题,因为我的图非常小(稀疏且最多 100 个节点)。我正在开发的算法涉及图上的大量遍历,更具体地说,通常是图上的 DFS 以及不同的子图上的遍历。将来我打算在大型图上运行该算法(据说稀疏且具有数百万个节点)。

在这里阅读了与 python/neo4j 绑定性能相关的不同线程后,我想知道我是否应该已经切换到 Python 的一些 REST API 客户端(如bulbflow、py2neo、neo4jrestclient),直到我无法更改所有代码。

不幸的是,我没有找到任何全面的信息来源来比较不同的方法。

任何人都可以提供有关此问题的进一步见解吗?在选择其中一个选项时,我应该考虑哪些标准?

4

3 回答 3

8

Django 是一个 MVC Web 框架,所以如果你的框架是一个 Web 应用程序,你可能会对它感兴趣。

从 py2neo(我是它的作者)的角度来看,我试图通过在适当的情况下自动使用批处理执行机制以及提供强大的 Cypher 支持来专注于性能。我最近还投入了大量工作来为索引内的唯一性管理提供良好的选项 - 特别是get_or_createadd_if_none方法。

于 2012-05-23T17:38:41.710 回答
3

从 Python 运行算法的最简单方法是使用 Gremlin ( https://github.com/tinkerpop/gremlin/wiki)

使用 Gremlin,您可以将所有内容捆绑到一个 HTTP 请求中,以减少往返开销。

以下是从 Bulbs ( 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/

于 2012-05-24T19:26:54.227 回答
0

不太确定,我不是专家,但我认为这也取决于您对 Django 的期望,以及您需要多少框架。Py2neo 非常务实和苗条,Bulbflow 似乎建立了一个完整的映射堆栈等,而 neo4jrestclient 专注于 Django(这可能是错误的)?

于 2012-05-23T08:50:32.337 回答