埋め込まれたNeo4jからのいくぶん性能の低い結果を見ています。表面上は予想よりも桁違いに遅いので、私はそれをやっていると仮定しています間違っていますが、私は何もしません。Neo4j slow?私は間違ったことをしている必要があります、それは何か教えてください
私は(https://github.com/neo4j/python-embedded)のNeo4jの最新の組み込みPythonバインディングを使用してい
from neo4j import GraphDatabase
db = GraphDatabase('/tmp/neo4j')
私は、単純な属性で偽1500個の製品を作成しました:
今with db.transaction:
products = db.node()
db.reference_node.PRODUCTS(products)
for prod_def in fake_products:
product = db.node(name=prod_def['name'])
product.INSTANCE_OF(products)
:それらのうち
fake_products = [{'name':str(x)} for x in range(0,1500)]
...と作成したノードは、私がsubreferenceノードに接続されていること私はドキュメントで見てきたコードの見えるか、私には、ほぼ正確に同じ種類で:
PRODUCTS = db.getNodeById(1)
for x in PRODUCTS.INSTANCE_OF.incoming:
pass
...これらの1500個のノードを反復>取る私のMacBook Proの上で0.2秒。何。 (編集:私はもちろん、このクエリを複数回実行したので、少なくともPythonバインディングではコールドキャッシュの問題ではありません)
私は15kまでそれをアンペアし、2秒かかりました。私はグレムリンをダウンロードし、それがのNeo4jまたはPythonバインディングだかどうかを調査するために同等のクエリを発行:
g.v(1).in("INSTANCE_OF")
...ほとんどすぐに完了するように見えたセカンドランで、最初の試みで約2秒かかったようです。
なぜそれほど遅いのですか?私が得ている結果は、何らかの間違いであるはずです。
Peterさん、ありがとうございました。作成した方法とデータが正常に接続されたと仮定していますか? あなたの答えは、少なくとも私がPythonバインディングの結果で見たものではありません。上記のトラバーサルは、連続して複数回実行され、同じ時間がかかります。 – Wojtek
gremlin/groovy/java土地では速いですが、Pythonではありませんか? –
なんてこった、OSXライオンに成功せずJPypeをインストールしようと、それを再現したい:/ –