4

Spring Data Neo4j プロジェクトで、Neo4j の単純なマッピング モードと高度なマッピング モードの両方を使用しました。単純なマッピングから高度なマッピングに切り替えたので、プロジェクトのパフォーマンスは大幅に向上しました。つまり、以前よりもはるかに優れています。提示する正確な数はありませんが、確かに多数です。高度なマッピング モードが単純なマッピングより優れている理由を誰かが説明できますか?

SDN のドキュメントからプログラミング モデルのページを読みましたが、正確な理由を見つけることができませんでした。

記録として、Spring の @Transactional サポートを使用しています。

4

2 に答える 2

5

高度なマッピングは、ノードとリレーションシップの薄いラッパーであり、データベースに書き込みます (また、読み取りも行います)。単純なマッピングでは、データがコピーされます。パフォーマンス上の利点を維持するには、高度なマッピングをトランザクションでのみ使用してください。

トランザクション外でエンティティの変更を開始すると、ダーティ オブジェクト トラッキングが発生し、再びコピーが開始されます。

于 2013-03-05T10:48:45.733 に答える
0

単純なマッピングでは、不要なラベル フェッチが大量にあることに気付きました。@Fetch を使用しない場合でも、SDN は (何らかの理由で) 関連する Set 内のすべてのノードのラベルをフェッチし、場合によってはそれをさらにフェッチします。

たとえば、約 100 人のメンバーを持つ 2 つのチームがあり、チームも (親子として) 接続されていて、@Fetch はどこにも使用されていませんでしたが、パフォーマンスは依然としてひどいものでした。

そこで、高度なマッピングに切り替えて、不要なラベルのフェッチを取り除きました。私の意見では、単純なマッピングは、新しい Label ベースの TypeRepresentationStrategy とうまく機能しないため、もう使用できないはずです。ラベルに合わせて開発されていないようです。

于 2014-10-30T11:58:04.603 に答える