問題タブ [neo4j-java-api]
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.
java - Java API を使用して、Neo4J のトランザクションに「ノード」があるかどうかを判断することは可能ですか?
Node
がトランザクション内にあるかどうかを判断することは可能ですか? GraphDatabaseService
の方法で取得できNode.getGraphDatabase
ます。
私はこのようなことをしたいと思います:
Neo4JHelper
これを行う理由は、トランザクションの外部でクラスを使用しようとしたときに、ユーザーにカスタム エラーを与えたいからです。
別の解決策は、メソッド/クラスを使用するためにトランザクションが必要であることを何らかの形でコンパイラに伝え、そうでなければコンパイルエラーを発生させることができる場合です。
path - 有向エッジを持つ Neo4j でパスを見つける
これは Neo4j での私の最初の試みです。非常に些細なことを見逃している場合はご容赦ください。これが私の問題です:
次の Neo4j コンソールの例で作成されたグラフを検討してください: http://console.neo4j.org/?id=y13kbv
この例では、次のノードがあります。
(人 {memberId、memberName、membershipDate})
(電子メール {値, badFlag})
(AccountNumber {値, badFlag})
creditCard、billAddress、shipAddress など、Person に関連する機能をキャプチャするノードが増える可能性があります。これらのノードはすべて、Email および AccountNumber ノードと同じになります: (creditCard {value, badFlag})、(billAddress {value, badFlag })、等。
Neo4j コンソールの例に見られるようにグラフにデータが入力された状態で、次のようにグラフにもう 1 人人物を追加するとします。
この新しい人物をシステムに追加する場合、新しい人物の機能 (「email6」および「a2」ノード) からシステム内の他のノードへのパスが存在するかどうかを確認する必要があります。 badFlag=true"、この場合はノード (a1 {値:1234, badFlag:true})。
ここで、結果のパスは次のようになります(email6)-[BELONGS_TO]->(p7)<-[BELONGS_TO]-(a2)-[BELONGS_TO]->(p6)<-[BELONGS_TO]-(email5)-[BELONGS_TO]->(p5)<-[BELONGS_TO]-(a1:{badFlag:true})
私はこのようなことを試しました:
チェーンが 1 レベルしかない場合は機能するようですが、Neo4j コンソールの例のようにパスが長くなる可能性がある場合は機能しません。
この問題の解決に役立つ Cypher クエリのヘルプが必要です。最終的には、アプリケーションを使用して Neo4j の Java API を使用してこの操作を行う予定です。Java API を使用してこれを行う正しい方法は何でしょうか?
neo4j - 複数のデータベース クエリを 1 つのトランザクションにラップする
Java アプリケーションで組み込みモードで Neo4j を使用しています。
Neo4j 2.x にアップグレードする前は、複数のデータベース操作を 1 つのトランザクションにラップしていました。2.x にアップグレードした後、各 db 操作を 1 つの個別のトランザクションで明示的に実行しています (ドキュメントにも示されているように、これは正規の方法です)。ただし、データベースの作成速度は大幅に低下しました。
複数のデータベース操作 (挿入とクエリの両方) を 1 つのトランザクションでラップする方法はありますか? ロールバックの場合、失われた CRUD 操作に対処する必要があることを理解しています。
また、最終的に 6 億を超えるノードと関係、および 20 億を超えるアノテーションを持つデータベースをスケーリングするための一般的な推奨事項も記入してください。
neo4j - neo4j-jdbc で cypher を実行すると結果セットが一致しない
neo4j-jdbc jar を使用してリモートで cypher ステートメントを実行したい。
以下のサイファーを実行すると、neo4j Web コンソールで 25 行の結果セットが得られます。
neo4j-jdbc をリモートで使用して同じプログラムを実行すると、0 の結果が得られます。
サイズをゼロとして印刷しています。
正確には何が間違いなのかわかりません。
neo4j - Neo4j スタンドアロン サーバー: サーバーの起動時に Java API を使用して一意の制約を適用する
私は Neo4j Server 2.3.2 バージョンを使用しており、Unmanaged プラグインを使用して非構造化データを解析し、グラフにロードしています。
それをしている間、ノードが重複し、シーケンシャル処理のスループットが遅い(バッチ処理でも)という状況に陥りました。繰り返しのデータ ロードのユース ケースを考慮して、次のいずれかを使用して (サーバー プラグインを使用して) 並列データ処理を求めます。
ファイルを分割する
分割加工・ねじ切り
現在、並列の日付読み込みで、私が予測できる最大の課題は、重複するノードの作成を回避する方法など、データの整合性の問題に対処することです。Neo4j の参考資料を読んでいると、独自のノードを作成する次のオプションが見つかりました。
オプション:
[推奨] Cypher と一意の制約を使用して一意のノードを取得または作成する
[その他] Java API からの悲観的ロック
[その他] 従来のインデックスを使用して一意のノードを取得または作成する
さて、問題は、Java API を使用してこの一意の制約をどこから適用できるかです。キャプチャして制約を適用できるイベント情報を探しています。いくつかのイベント/メソッドをロード/呼び出すための最良の方法を教えてください。そこに制約を適用するためのコードを挿入します。
また、任意のエンティティが作成される前に、Cipher を使用してこの独自の施行を定義する方法はありますか。
前もって感謝します
参考文献:
neo4j - Neo4j - org.neo4j.io.pagecache.impl.SingleFilePageSwapperFactory
Java で GraphDB オブジェクトを作成しているときに、この奇妙なエラーに直面しています。私のneo4jバージョン:2.2.5
私のコード:
ただし、次のエラーがスローされます。
以前の私のコードはうまくいきました。理由がわかりません。ありがとうございました