グラフデータベースを使用する必要があるユースケースがあります。
10000ノードと1000000エッジ(約)。
今、私はこのようにクエリする必要があります。任意の2つの頂点について、それらの間のすべての可能なパスを見つけます。
origntDbにかかる時間はどれくらいですか?取得時間を最小限に抑えたいのですが、これはorientDBでサポートされていますか?
2つの頂点の距離は約20になりますが、各頂点には約10の出力エッジがある場合があります。
OrientDBにバンドルされているshortestPath()関数を使用します。
select shortestPath(#8:32, #8:10)
ここで、2つのRIDは2つのノードのレコードIDです。
グレムリンの頂点1と2の間のすべてのパスについて、次のようにします。
g.v(1).out.loop(1){true}{it.object.id==2}.path
もちろん、サイクルがある場合、可能なすべてのパスは無限であるため、おそらくこれを実行する必要があります。
g.v(1).out.loop(1){true}{it.object.id==2}.path[0..100]
...最大100個のパスを取得します。これを実行して、循環パスを削除することもできます。
g.v(1).out.simplePath.loop(2){true}{it.object.id==2}.path[0..100]
マルコ。