2012-05-22 9 views
10

私は現在、neo4j用の埋め込みPythonバインディングを使用しています。私のグラフは非常に小さい(疎で100ノードまで)ので、現在問題はありません。私が開発しようとしているアルゴリズムでは、グラフ上のかなり多くのトラバーサル、より詳細には一般的なグラフ上のDFSと、異なるサブグラフ上のDFSが含まれます。 将来、私は大規模なグラフ(おそらく疎で、何百万というノード)でアルゴリズムを実行しようと考えています。PythonでNeo4jを使用する適切な方法を選択する

のpython /のNeo4jバインディングhereのパフォーマンスに関連する複数のスレッドを読んだ、here私は変化にすぎ午前まで、私は(bulbflow、py2neo、neo4jrestclientのように)私はすでにPythonのためのいくつかのREST APIクライアントに切り替える必要があるかどうかを疑問に思いますすべてのコード。

残念ながら、さまざまなアプローチを比較するための包括的な情報源は見つかりませんでした。

誰でもこの問題を理解することができますか?オプションの1つを選択する際に、どの基準を考慮に入れる必要がありますか?

答えて

0

私は専門家ではありませんが、あなたのDjangoの期待や必要なフレームワークの量にもよると思います。 Py2neoは非常に実用的でスリムで、Bulbflowはマッピングスタック全体を構築するようですが、neo4jrestclientはDjangoに集中しています(間違っているかもしれません)。

+0

私はジャンゴを知りませんでした。 Webアプリケーションに関連するものではありませんか?私は現在、1台のマシンですべての作業を行っています。私はそれをまだチェックする必要がありますか? – npobedina

+0

わからない、試してみる。 –

8

DjangoはMVC Webフレームワークなので、Webアプリケーションであれば興味があります。

py2neoの観点から(私は著者です)、私は適切な場所で自動的にバッチ実行メカニズムを使用し、強力なCypherサポートを提供することで、パフォーマンスに重点を置いています。私は最近、インデックス内の一意性管理のための良いオプション、具体的にはget_or_createadd_if_noneメソッドを提供するために多くの作業を行っています。パイソンからのアルゴリズムを実行するための

3

最も簡単な方法は、グレムリン(https://github.com/tinkerpop/gremlin/wiki)を使用することです。グレムリンで

あなたは往復のオーバーヘッドを減らすために1つのHTTPリクエストにすべてをバンドルすることができます。

ここグレムリンスクリプトを実行する方法を説明します球根(http://bulbflow.com)から:

>>> from bulbs.neo4jserver import Graph 
>>> g = Graph() 
>>> script = "g.v(id).out('knows').out('knows')" 
>>> params = dict(id=3) 
>>> g.gremlin.execute(script, params) 

球根グレムリンのAPIドキュメントはここにある:http://bulbflow.com/docs/api/bulbs/gremlin/

+1

お勧めします。私はすでにGremlin vs Cypherの比較を読んでいます。だから、どちらのケースが私のユースケースではより適切かを判断するために両方を試しなければならないと思います。電球のウェブサイトに問題があるようです。あなたはすぐにそれが上になるかどうか知っていますか? – npobedina

+1

更新中のDNSの問題がありました。今のところここにアクセスできます:http://bulbflow.herokuapp.com – espeed

+0

bulbflowを使ってneo4jに対してCypherのクエリを実行することは可能ですか?この問題に関する文書は不明瞭です。電球で作業するとき、グレムリンに固執する方が実際には(より速く)良いですか? – npobedina

関連する問題