2015-11-02 4 views
6

session.load()を使用して深さ2を問い合せる際にタイムアウトが発生します.Neo4j OGM 1.1.3(Spring Data Neo4j 3.4から移行しようとしています) 。私のノードに接続されているカテゴリは非常に人気(2万のノードが同じカテゴリを持っている)とするとき私が使用session.load(Node.class, 1L, 2)要求時間を使い果たしているNeo4j OGM 1.1.3 ogmの深さが2のオブジェクトを非常に遅くロードする

class Node { 
    Long id; 
    String name; 

    @Relationship(type="NodeToCategory") 
    Category category; 

    @Realtionship(type="NodeToChildNode") 
    Node node 
} 

class Category { 
    Long id; 
    String name; 
    String color; 
    Date createdAt; 
} 

をNodeオブジェクトをロードしようとしています。カテゴリのすべてのリレーションシップを照会しようとしている可能性がありますか(Javaの私のモデルカテゴリではこの関係は無視されます)。私はそれをロードするために期待するものを

は単純です:。非常に重い要求ではなく、それが不要な関係をロードしている場合を除き(タイムアウトべきではありません

|My Node 
| |category 
| |child node 
| | | category 
| | | child node 

が指示する方法はあります

たとえば、私はツリーの10レベルをロードしたいが、ツリー上の他の情報(実際にはツリーノードではなく単に情報を表すカテゴリなど)をロードしたいと思う。ただ欲しいそれらを関係なくロードする。だから私はすべてのノードオブジェクトをロードし、その関係なく途中で他のオブジェクトをロードするだけです。

https://github.com/neo4j/neo4j-ogm/issues/55

https://github.com/neo4j/neo4j-ogm/issues/70

答えて

0

この問題は、スキーマ・ベースのロードとOGM 3.0で解決されています:

UPDATEは

は、これらの問題に対処するように見える二つの開放問題が見つかりました。

スキーマベースの読み込みとは、OGMがオブジェクトドメインモデルを参照すると、指定された深さまでのすべてではなく、モデルに実際に存在するものを取り出します。

CategoryNodeにリンクしていないため、新しいバージョンでは不要な多くのノードが読み込まれず、パフォーマンスが大幅に向上します。

関連する問題