問題タブ [node-neo4j]
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.
modeling - neo4j - ラベル vs プロパティ vs 関係 + ノード
ラベル vs ノード プロパティ vs リレーションシップ + ノードをどこで使用するかについての経験則。
例を挙げてみましょう。私は店を持っていて、製品を neo4j に入れたいとします。それらの識別子は製品の SKU です。また、これは衣料品、食品、電化製品のように分類したいと考えています。ユーザーが何でも検索できるように、グラフで無料検索を行い、その検索文字列に関連するすべてのものを返します。
使用する方が良いでしょうか:
- のノードがあり
sku 001
、ラベルのタグを付けますFood
。 - のノードがあり
sku 001
、このノードにプロパティがありますcategory:"Food"
- とのノードが
sku 001
あり、 に対して別のノードを作成し、それらを関連付けるためFood
に " " の関係を作成しcategory
ます。
プロパティを検索する場合は、ノードのプロパティを検索するよりもトラバースの方がはるかに高速であるため、リレーションシップ + ノードの方が適していると読みました。
ティア
neo4j - Node-Neo4j ノードが存在するかどうかを確認する方法 (永続的に)?
データベースに Node-Neo4j クライアントを使用しています。独自のノードを作成したいのですが、Node-Neo4j のドキュメントでその方法が見つかりませんでした。以下のロジックを使用して、ノードが存在するかどうかを確認しました。
しかし、私が理解していることからcreateNode
、新しいノードを最初から作成し、exists
それを使用すると、新しく作成されたノードがデータベースに保存されているかどうかを確認するだけです。
指定されたプロパティを持つノードが db に既に存在するかどうかを確認するにはどうすればよいですか?
前もって感謝します。
node.js - node-neo4j がデータのみでノードを返す方法
neo4jグラフデータベースに接続するためにnode-neo4jを使用しています。すべてのノード (ユーザーなど) を取得しようとするたびに、json の結果の戻り値に必要のない情報が多すぎることに気付きました。
すべてのユーザー ノードを返すコードは次のとおりです。
そして、これらのjson応答が得られました。
サイファーからの結果の「データ」部分を返すだけの方法はありますか? または、結果をクライアントに返す前に、node.js サーバーの不要な部分を削除する必要がありますか?
ありがとう!
node.js - NodeJs - 名前付け関係に関する Neo4j パラメータの問題
params オブジェクトを使用して 2 つのノード間の関係に名前を付けることができません。
ここにコードがあります
ここにエラーがあります。パラメーターを使用して関係に名前を付ける方法
エラー: 無効な入力 '{': 予期される空白または rel タイプ名 (行 2、列 28) "CREATE UNIQUE (location)-[:{ country
}]->({name})"
neo4j - Neo4j 書き込みパフォーマンスの改善
以下のようなシナリオがあります。
現在、上記の暗号クエリは順次実行されています。書き込み操作のパフォーマンスを改善する必要があります。
p,b1,b2,b3 の作成は並行して行うことができると思います。これが完了すると、p と b1、b2、および b3 の間の接続が並行して発生する可能性があります。また、上記のクエリは、個別の書き込み操作ではなく、単一のバッチで実行できると思います。
私はneo4jphpとnode-neo4jを使用しています。
Transactional Cypher HTTP endpointとBatch operationsがあると思います。これらは書き込みパフォーマンスを向上させるかどうか? 上記の場合、どちらが適切ですか?
neo4jphp はバッチ トランザクションとサイファー トランザクションをサポートしているようです。しかし、node-neo4j でバッチ/サイファー トランザクションを実現できるかどうかはわかりません。
neo4j - Neo4J 書き込み: 書き込みが多い場合、CPU は 100% になります
約 1 分で約 3,000 の書き込みクエリを実行したところ、CPU は 100% に達しました。jstack のログは次のとおりです。 jstack when CPU at 100%。
書き込みを最適化できるように、jstack ログから何が起こっているのか教えてもらえますか?
Node.js Neo4J クライアント (m3.xlarge AWS インスタンスで実行) を使用して変更を書き込みます。
ありがとうございました。
performance - Neo4j スーパーノードの問題 - ファンアウト パターン
私はグラフ データベースのシーンに不慣れで、Neo4j を調べて Cypher を学習しています。グラフ データベースをモデル化しようとしています。これはかなり単純なものです。ユーザーがいて、ムービーがあり、ユーザーはムービーを表示したり、ムービーを評価したりできます。プレイリストを作成し、プレイリストにはムービーを含めることができます。
質問は、スーパー ノードのパフォーマンスの問題に関するものです。そして、私が現在読んでいる非常に優れた本 - Learning Neo4j by Rik Van Bruggenから何かを引用します。
グラフの一部がすべて同じノードに接続されているデータセットでは、非常に興味深い問題が発生します。高密度ノードまたはスーパーノードとも呼ばれるこのノードは、グラフ トラバーサルの実際の問題になります。これは、グラフ データベース管理システムが、そのノードに接続されているすべての関係を評価して、次のステップを決定する必要があるためです。グラフトラバーサル。
本で提案されているこの問題の解決策は、100 の接続を持つメタ ノードを作成し、101 番目の接続を以前のメタ ノードにリンクされた新しいメタ ノードにリンクすることです。
公式の Neo4j ブログのブログ記事で、この問題は今後修正されると書かれているのを見ました (ブログ記事は 2013 年 1 月のものです) - http://neo4j.com/blog/2013-whats-coming-next- in-neo4j/
より正確には、彼らは次のように言っています。
「より大きなデータ」に関して計画しているもう 1 つのプロジェクトは、非常に多数 (数百万) の関係を持つ密に接続されたノード間のトラバーサルを処理するための特定の最適化を追加することです。(この問題は「スーパーノード」問題と呼ばれることもあります。)
この問題についてどう思いますか。メタ ノードのファンアウト パターンを使用する必要がありますか?それとも、すべてのチュートリアルで使用されているように見える基本的な関係を使用する必要がありますか? 他の提案はありますか?
javascript - JS 機能オブジェクト コンストラクター - Neo4j データベースにはメソッド「クエリ」がありません
node.js、アンダースコア、プロトタイプとともにnode-neo4jライブラリを使用しています。
データベース アダプタを拡張するモデルを作成しようとしています。最初にコードします。
BaseModel.js:
Neo4jAdapter.js:
奇妙なことは、私が得ているエラーです。すべての node.js/express コードをここに投稿するわけではありませんが、挿入機能を URL で叩いています。私が得る応答は次のとおりです。
メッセージ: オブジェクト #
GraphDatabase にはメソッド 'query' がありません
エラー: TypeError: オブジェクト #
GraphDatabase にはメソッド 'query' がありません
私の質問は次query()
のとおりです。データベース オブジェクトに関数がないのはなぜですか。
考えられる原因:挿入メソッドを呼び出すときに、アダプターの db オブジェクトがまだ設定されていないに違いありませんが、どうすればよいですか?
ありがとう