問題タブ [neo4j-spatial]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neo4j - Neo4j Spatial で最も近いノードを見つけるパフォーマンスを改善
私の目標は、指定された経度と経度で最も近いノードを見つけることです。Simple Point Layer を作成しfindClosestGeometies
、クエリを使用していますが、比較的小規模なデータベースであっても、応答時間がかなり不十分です。以下の操作を実行して、レイヤーを作成します。
次に、単純な Java プログラムを使用して、レイヤーに ~70k ノードを追加し、サンプル クエリを実行しました。
動作していますが、各応答には 8 秒ほどかかります。物事をスピードアップする方法はありますか?何を使用すればよいですか?
php - Neo4j Spatial 3.0.2: インデックス プロバイダ 'spatial' が見つかりません
neo4j 3.0.2 と neo4j-spatial for 3.0.2 で空間データベースを作成しようとしています。プラグインをインストールし、プラグインがcurl -v http://neo4j:neo4j@localhost:7474/db/data/
以下を出力する cURL で実行されていることを確認しました。
これで、新しい simplePointLayer を作成できます。
これにより、rTree を使用して空間ルート ノードが作成されます。しかし、次のように空間インデックスを作成したい場合:
エラーメッセージに直面しています:
私は何を間違っていますか?私は多くのフォーラムなどをチェックしましたが、答えは常に私が持っている空間プラグインをインストールすることであり、最初の出力に従って動作しているようです。
編集 15.06.2016
奇妙なのは、rTree にノードを追加できることです。
そして、REST を介してノードにクエリを実行できます。
しかし、インデックスを作成できないのはなぜですか? それとも自動的にインデックスを作成しますか? もしそうなら、どのように CYPHER を使用して (たとえば、Web コンソールで) クエリを実行できますか?
どんな助けでも大歓迎です!乾杯
maven - Neo4j 空間サーバー プラグイン 3.0.2 は Neo4j 3.0.3 コミュニティで動作しますか?
Web で見つけたいくつかの方法を使用して、Neo4j 空間をインストールするのにかなり長い間苦労してきました。
私は neo4j-community-3.0.3 を使用していますが、入手したリンクを覚えていません。これは、ftp サイトから事前にコンパイルされたバージョンでした (neo4j の Web サイトのどこかにある /archives フォルダーだったと思いますが、私の人生ではグーグルで見つけることができません)。誰かがneo4jのコンパイル済みバージョンをダウンロードするためのリンクを持っていれば、それは大歓迎です. neo4j のその他のリリースの Web ページでは、最近のバージョンのみを提供しています: https://neo4j.com/download/other-releases/
独自のバージョンの neo4j を github からコンパイルしようとしましたが、ディレクトリ ツリーが非常に密集しているため、正直言って非常に混乱します。コミュニティ バージョンとエンタープライズ バージョンの両方が README なしで同じレポに含まれているように見えるので、どこから始めればよいかさえわかりません。
プラグインに関する限り、プリコンパイルされたバージョンと自分でコンパイルしたバージョンの両方を試しました。プリコンパイル済みについては、git ページの指示に従ってティーを作成しました。
https://github.com/neo4j-contrib/spatial#using-the-neo4j-spatial-server-plugin
jar ファイルをダウンロードして $NEO4J_HOME/plugins/ にコピーし、neo4j サーバーを再起動しました。最後に、プラグインがロードされているかどうかを確認するために残りの呼び出しを行いますが、表示されません。
コンパイルされたバージョンでも同じ結果が得られましたが、達成するのに時間がかかりました。バージョン 3.0.2 の git リポジトリのクローンを作成し、次を実行します。
注: この mvn コマンドは、ある時点で実際に失敗しましたが、グーグルで調べた後、このコマンドが機能することがわかりました
最後に私は走ります
そしてほら、以前とまったく同じ結果です(プラグインのリストはありません)。
何かをインストールするのにこれほど苦労したことはありません。バージョン 2.* に戻りたくありません。Python で新しいボルト ドライバーを利用して、最新かつ最高のパフォーマンスを得たいからです。どうぞ、どんな助けでも大歓迎です。(neo4jのプリコンパイル済みバージョンへの直接リンクのアーカイブを見つけるだけでも役立ちます)。
java - Neo4J 空間で SimplePointLayer を作成するにはどうすればよいですか?
simplePointLayer の作成方法を示すスタックに関するいくつかの投稿を見てきました。ただし、プロセスは失敗しています。Neo4J バージョン 3.0.2 と空間プラグイン バージョン 3.0.2 を使用しています。
これらの各ページには、以下に示すように、SimplePointLayer を作成するための同じ一連の手順が含まれています。
このステップは私にとってはうまくいきます:
レイヤーのリストがどこにあるのかわかりませんが、応答が 200 であるため、ここではすべてが期待どおりに機能すると想定しています。
次のステップは私が立ち往生している場所です:
上記のjsonをファイルtmp.jsonに入れ、実行します
これにより、次のメッセージが生成されます。
ここからどこへ行けばいいのかわからない。「プロバイダー」がプラグインであると想定しています。私は Java に詳しくないので、クラスパスの扱い方がわかりません。この問題に対処する方法を知る前に、\ このエラーに遭遇した人はいますか?
neo4j - データモデルは、CYPHER を使用した neo4j の書き込みパフォーマンスにどのように影響しますか?
Neo4J 3.0.3 を使用して、自分のアプリケーションで許容できるパフォーマンスを達成するのに本当に苦労しています。ここにいくつかの背景があります:
パフォーマンスを維持または向上させながら、アプリケーションの機能を拡張するために、Apache Solr を Neo4j に置き換えようとしています。
Solr には、基本的に次のようなドキュメントがあります。
Solr はキーと値のデータ ストアであるため、Neo4J への最初の変換は簡単になり、API の使用感をつかむことができました。
私の方法は基本的に、各 Solr レコードを Neo4J ノードと同等にすることでした。そこでは、すべてのキー値がノード プロパティになります。
明らかに、いくつかの調整が必要でした (None を 'None' に変更する (python)、ISO 時間をエポック時間に変更する (neo4j は日時のインデックス作成をサポートしていません)、ポイントを lat/lon に変更する (neo4j 空間インデックス作成) など)。
私の目標は、このモデルを使用して Neo4J をロードすることでした。
これは、単一のレコードをロードするときに作成するレスト コールの例です (http:localhost:7474/db/data/cypher をエンドポイントとして使用)。
neo4j をテストするために、かなりの数のパラメーターを実際に削除したことに注意してください。
現在、深刻なパフォーマンスの問題があります。このようなドキュメントを Solr に読み込むには、約 2 秒かかります。Neo4J の場合:
REST API を使用して約 20 秒
BOLTを使用して約45秒
py2neo を使用して約 70 秒
読み込む必要があるレコードが 50,000,000 件まであります。Solr でこれを行うには通常 24 時間かかるため、Neo4J ではほぼ 1 か月かかります!!
「メタ」属性に一意性制約を使用せず、各ノードを空間インデックスに追加せずに、これらの時間を記録しました。このシナリオでの時間の結果は非常にひどいものでした。
この問題が発生したため、オンラインでパフォーマンスの調整を検索してみました。次のことは私の状況を改善しませんでした:
- 開いているファイルの制限を 1024 から 40000 に増やします
- ext4 を使用し、ここに記載されているように微調整します
-ページキャッシュサイズを 16 GB に増やします (私のシステムには 32 あります)
これまでのところ、ロード時間についてのみ説明してきました。一晩で約 50,000 個のノードを読み込んだ後、次のように空間インデックスに対してクエリを試行しました。
私のタイムインデックスと同様に:
これらの単純なクエリは、おそらく数個のノードを返すだけで文字通り数分かかります。
Apache Solr では、空間インデックスは非常に高速で、5 秒以内に応答します (50000000 個のドキュメントがすべて読み込まれた場合でも)。
この時点で、このパフォーマンスの遅れがデータ モデルの性質やサーバーの構成などによるものかどうかが気になります。
私の目標は、このモデルから外挿し、いくつかの測定タイプをノードの独自のクラスに移動し、ベース レコード ノードからこれらへの関係を作成することでした。
Neo4j を悪用している可能性はありますか?関係といくつかの異なるノード タイプを使用するためにこのモデルを再作成する必要がありますか? 劇的な改善が期待できますか?
補足として、私は当初、このデータを格納するためにトリプル ストア (具体的には議会) を使用することを計画していました。RDF に戻る価値はありますか?
アドバイス、ヒント、コメントは大歓迎です。前もって感謝します。
編集:
コメントで示唆されているように、読み込みスクリプトの動作を変更しました。
以前は、この方法で python を使用していました。
このアプローチでは、実際の .run() ステートメントはほとんどすぐに実行されます。.close() ステートメントは、すべての実行時間が発生する場所でした。
私の修正されたアプローチ:
これの動作はほとんど同じであるため、少し混乱しています。.close() は、コミットしないことを除いて、まだ約 45 秒かかります。各ステートメント (CREATE (r:record {...}) .... CREATE (r:record {...}) ...) で同じ識別子を再利用しているため、これに関する CypherError が発生します。行動。現時点では、この問題を回避する方法がよくわかりません。さらに、実行時間はまったく改善されていないようです (エラーが発生すると、実際にはこれがはるかに速く終了すると予想されます)。
neo4j - neo4j-spatial cypher クエリを使用した SDN4 リポジトリとの統合テスト
一部のコードで neo4j-spatial を使用し始めています。私のプロジェクトにmavenの依存関係として空間サーバーlibを含めることで、neo4j-spatialコードの統合テストができると思いました。しかし、これは私にとってはうまくいきませんでした。これに関するドキュメントはどこにも見つかりません。
統合テストを機能させるにはどうすればよいですか?
ヒントはありますか?:)
私が何をしているのかを理解するために、コントローラー、サービス、およびリポジトリ コードの一部を以下に貼り付けました。最後のコード投稿は、組み込みの TestServer に対して機能しない私のテストです。
リポジトリ
サービス
コントローラ
サービステスト
(組み込み TestServer に対する標準ビルドの一部として機能しないのは、ここでの私のテストです)