2016-12-06 2 views
2

私はタイタンを使用しています。Tinkerpopからg.V()を使用すると、TitanDBがメモリに完全なグラフをロードしますか?

タイタンアプリケーションでTinkerpopでサポートされている "g.V()。values()"を使用して、グラフのトラバーサルを実現します。

私の見解では、Tinkerpopはこのイテレータを使用しているときにグローバルグラフをメモリに読み込みます.Titanはこのメソッドを直接呼び出してオーバーライドしないようです。

g.V()を実行するとTitanはメモリに完全なグラフをロードしますか?

答えがtrueの場合。グラフが十分大きい場合はメモリサイズが心配です。

答えて

4

私の見解では、このイテレータを使用するとTinkerpopはグローバルグラフをメモリに読み込みます。

あなたはその結論をどこから集めたのか分かりませんが、TinkerPopのインターフェースの意図とは逆です。 TinkerPopのインターフェイスを実装するグラフデータベースは、のメモリ節約機能を利用し、データの読み込み方法について精通している必要があります。私はTinkerPopが本当にその要件を実施する方法がないので、イタリック体で「should」と書いています。 g.V()が呼び出されたときに、グラフプロバイダがデータベース内のすべてのデータをメモリに取り込まないようにすることはできません。

私は、Titanを含むTinkerPopの実装では、永続的な(すなわち、メモリ内に既にグラフが存在するメモリではない)ことを認識していません。そうであれば、Titanは非常にうまくスケールすることができませんでした。もちろん、それはg.V()のOLTPスタイルのトラバーサルで10億のエッジグラフ内のすべての頂点のグローバル検索を実行することは良い結果が得られることを意味します。そのトラバーサルがまったく返ってきたら(つまり、タイムアウトやその他の環境問題)、トラバーサルが完了するまでに長い時間待つでしょう。グローバルグラフのクエリでは、これらのケースでは、titan-hadoopとOLAPスタイルのトラバーサルを使用します。

関連する問題