私は、上で回答した Brian Underwood とともに、Neo4j.rb の中心的なメンテナーの 1 人です。回答するにはシステムについてもっと知る必要があるため、これは完全な回答ではありませんが、1 つのコメントには多すぎるため、ここに投稿します。
私のお金は、あなたの DB またはシステムに問題があります。Windows を実行しているユーザーに対して、ローカルで作業しているときにクエリが遅く、原因を特定できないという同様の問題が報告されました。Neo4j.rb バージョン 3.0 の低パフォーマンス RoR、すべてのクエリで 1024 ミリ秒を参照してください。突き止めることができませんでした。ローカルでまったく同じクエリを実行すると、最初に実行したときは 13 ミリ秒、その後は毎回約 3 ミリ秒表示されます。それほど小さいDBでは、インデックスを作成しても違いはありません。
問題が発生する可能性を制限し、一般的にパフォーマンスを向上させる方法:
- Ruby MRI 2.2.0 を使用
- Neo4j 2.1.6 または 2.2.0 を使用
- Windows ではなく、Mac または Linux を使用する
- アプリで
oj
とoj_mimic_json
gem を必須にする
データベースとアプリ サーバーが 2 つの異なるネットワークにある場合、そのようなクエリの応答が長くなります。
この単純なクエリは MongoDB と PostgreSQL ではるかに高速であるというコメントについて: はい、そうなります。どちらも、以下の 2 つの理由により、Neo4j.rb よりも高速に単純なクエリを返します。
- これらの DB に接続するための Ruby gem は REST インターフェイスを使用せず、カスタム バイナリ プロトコルを使用します。
- どちらも単一のレコードをすばやく返すように最適化されており、Neo は大量のレコード グループをすばやく返すように最適化されています。
Neo4j.rb 4.0 をリリースする前に、Postgres と MongoDB に対して大量のベンチマークを実行しましたが、同じ結果が見つかりました。(PostgreSQL は驚くべき技術全般です。) ただし、関連するオブジェクトを探し始めるとすぐにバランスが取れ、複雑さが増すにつれて、違いはさらに大きくなります。残念ながら、共有できる数字はありませんが、時間があれば近いうちにブログに投稿します。