Cassandra で Rexster/TITAN 0.4 を使用しています。頂点キーは、以下の標準インデックスを使用してインデックス付けされます。g.makeKey("ドメイン").dataType(String.class).indexed("standard", Vertex.class).make(); パフォーマンスとスケーラビリティのために一意性を使用していません。グラフには約 10M の頂点があります。
私の要件は、各頂点を反復処理し、重複があるかどうかを特定してから削除することです。既に存在するインデックスから直接、ソートされた頂点のリストを取得する方法はありますか? 「ダイレクト インデックス クエリ」に似たインデックス (標準の TITAN インデックス) に対する直接クエリ。頂点全体を小さなバッチに分割し、個別に処理できるようにします。
不可能な場合、これを達成するための最良の方法は何ですか。グラフ内の重複を見つけて削除するためだけに、Titan-Hadoop または同様のソリューションを使用したくありません。
以下のクエリを実行して、ソートされた順序で 1000 個の頂点を取得したいと考えています。
gremlin> g.V.has('domain').domain.order[0..1000]
WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertice
s [(domain <> null)]. For better performance, use indexes
しかし、このクエリは 'domain'で作成された標準のインデックスを使用しておらず、実行に失敗し、メモリ不足の例外が発生します。グラフには最大 10M の頂点があります。
この特定のケースでグレムリンにインデックスを使用させるにはどうすればよいですか?