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_createandadd_if_noneメソッドです。

于 2012-05-23T17:38:41.710 に答える
3

Python からアルゴリズムを実行する最も簡単な方法は、Gremlin ( https://github.com/tinkerpop/gremlin/wiki)を使用することです。

Gremlin を使用すると、すべてを 1 つの 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 に答える