내 그래프에 점과 선이라고 불리는 노드가 있습니다.spring-data-neo4j의 데이터 모델링
"NEXT"라는 두 가지 점을 연결하고 lineID
(길이가 긴) 속성이있는 관계 유형이 있습니다. 라인 노드는 단순히 ID와 "루트"포인트에 대한 참조로 구성됩니다. 행을 탐색하려면 해당 루트 노드로 시작하여 NEXT 관계를 따르고 그 행의 행 ID는 lineID
과 일치해야합니다. 우리는 누구의 루트 지점 ID (321)가 ID (123)와 선을 통과하는 경우 명확히하기 위해, 사이퍼 탐색은 다음과 같습니다
START n = node(321)
MATCH (n)-[rel:NEXT*{lineID:123}]->(x)
RETURN collect(rel)
라인, 다음, 기본적으로 lineID
일치하는 다음의 관계의 연결리스트입니다 속성. 즉,이 목록을 선의 속성으로 유지하고 싶지는 않습니다. 선이로드 될 때 목록을 가로 지르는 방식으로 구성하려고합니다.
spring-data-neo4j에서 이것을 구현하기위한 나의 옵션은 무엇입니까? 특히, "lines"은 NodeEntity
으로 존재해야하며, 그렇다면 무엇을 포함해야합니까? 라인이 항목에 다음 관계를 통해 관련되지 않기 때문에
@NodeEntity
class Line {
@RelatedTo(type="ROOT")
Point root;
@RelatedToVia(type="NEXT")
Iterable<Item> list;
가 매우 적합하지 않습니다 루트 지점입니다. 또한 NEXT 관계가 라인의 ID와 일치하는 lineID 속성을 가져야한다는 사실을 언급하지 못했습니다. 이는 몇몇 포인트가 여러 라인에 존재하기 때문에 중요합니다. 즉, 서로 다른 라인 ID로 여러 NEXT 관계를가집니다. 나는 그 솔루션이 @GraphTraversal로리스트에 주석을다는 것을 포함하는 직감을 가지고 있지만 그것이 어떻게 작동하는지 이해하지 못한다.
SDN의 데이터 모델링에 대해 머리를 감싸는 연습으로, 일반적으로 Neo4j 및 그래프 데이터베이스 주위에서 머리를 감싸는 컨텍스트에서이 작업을 주로 수행하고 있습니다. 내가 묻고있는 질문이 이러한 것들에 대한 나의 이해의 결함을 드러내는 경우 누군가가 지적 할 수 있다면 매우 감사하게 여길 것이다.
샘플 그래프 다이어그램을 첨부 할 수 있습니까? 시각화하는 것이 더 낫습니다. –