그래프 데이터베이스 Neo4J를 사용하여 지시 트리 구조를 모델링했습니다. 그래서 저는 다음과 같은 것을 가지고 있습니다 : http://ouwarovite.net/YAPC/220px-Binary_tree.svg.png (필수 이진수는 아닙니다)Neo4J를 사용한 지시 트리의 일반 탐색
내 데이터베이스의 사용자는 기존 노드의 자식 노드를 자유롭게 추가 할 수 있으므로 트리의 높이와 단일 노드의 정도는 알 수 없습니다.
이제 다음과 같이 트리를 쿼리하고 싶습니다. 노드 x로 시작하여 leave x의 자손 인 모든 잎을 제공하십시오.
Gremlin 또는 Cypher에서 이와 같은 종류의 쿼리를 수행 할 수 있습니까? 그렇다면 최대한의 성능을 얻는 방법은 무엇입니까? (나는 당신이 항상 최대 깊이를 지정해야하기 때문에 '일반'트리에 대한 쿼리를 수행 할 수있는 가능성을 발견하지 못했습니다.)
저는 REST/JSON 프레임 워크와 JAVA API를 사용하면 다음과 같이 표현할 수 있습니다.
이 더 나은 성능 어쩌면이 할 수있는 간단한/더 나은 방법이 있나요 -
POST /db/data/node/51/traverse/node
{
"return_filter" :
{
"body" : "position.endNode().hasProperty('leave')" ,
"language" : "javascript"
},
"relationships" : [ { "type" : "_default", "direction" : "out" } ] ,
"prune_evaluator" : { "name" : "none" , "language" : "builtin" }
}
(> 그래서 _default 내 잎 내 가장자리가 어떤 유형이 없다 '휴가'속성을 가지고)?