グラフ データベース Neo4J を使用して有向木構造をモデル化しました。だから私はこのようなものを持っています: http://ouwarovite.net/YAPC/220px-Binary_tree.svg.png (必須のバイナリではありません)
私のデータベースのユーザーは、既存のノードの子ノードを自由に追加できるため、ツリーの高さと単一ノードの次数は不明です。
ここで、ツリーを次のようにクエリしたいと思います。ノード x から始めて、葉 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" }
}
(私の葉にはプロパティ 'leave' があり、私の端にはタイプがありません -> だから _default)
おそらくパフォーマンスが向上する、これを行うためのより簡単な/より良い方法はありますか?