問題タブ [dependency-graph]
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.
python - pythonを使ってneo4jで依存関係グラフを効果的に構築する方法は?
データはnpm public registryにあります. JavaScript Package
nameを指定して、https://registry.npmjs.org/nameにアクセスすると、依存関係を含む情報を取得できます。この情報を neo4j データベースにインポートして、パッケージの依存関係グラフを作成します。パッケージ名
expressがキューに追加された場合、次の手順を実行します。- https://registry.npmjs.org/pkg_nameで返されるキューでフロント パッケージの JSON ファイルを取得します 。
- Neo4j Python Driver
expressを使用して、ファイルを解析し、neo4jの基本情報と依存関係を保存します。 - 依存関係ごとに、 を使用してキューに追加されているかどうかを確認します
set。そうでない場合は、その依存関係グラフが neo4j で構築されているかどうかを確認してください。そうでない場合は、キューに追加します。 queueが空になるまで繰り返します。次に、 の依存関係グラフexpressが作成されます。
結果は次のようになります: Expressの JavaScript パッケージに対する依存関係グラフ。問題は、単一のパッケージのプロセス全体が私のマシンで約 50 秒かかることです。これは長すぎます。 npmのすべてのパッケージは言うまでもなく、約 100 万です。
私が考えることができるいくつかの理由:
- a を使用し
setてすべての pkgs を検索すると、O(nlogn) のコストがかかります。 - ノードのクエリにかかる時間 (パッケージの依存関係グラフが neo4j にあるかどうかを確認します)。
- ノードとリレーションシップの作成にかかる時間 (バッチ挿入を使用していないように見えるため)。
- a を使用し
依存関係グラフの構築を高速化するためのアドバイスを誰かに教えてもらえますか?
心から感謝します!