2013-06-17 5 views
6

Titan with Cassandra v 0.3.1を使用して、Titan docsに記載されているように、createKeyIndexを介して頂点キーインデックスを作成しました。インデックス付きキーのタイタンルックアップは非常に遅いですか?

gremlin> g.createKeyIndex("my_key", Vertex.class) 
==>null 

私は今、グラフにAPPX 50Kノードと186kエッジを持っている、と私はmy_keyを使用してルックアップの間に有意なパフォーマンスの違いを見つけることです。このクエリの実行には約5秒かかります:

gremlin> g.V.has("my_key", "abc") 
==>v[12345] 

インデックスIDを使用すると、1秒未満を要するのに対し:

gremlin> g.v(12345) 
==>v[12345] 

my_keyは、固有の制約を(私はしたくない)持っていません、私は何がそのようなパフォーマンスの違いを引き起こしているのだろうかと思っています。一意でないインデックス付き頂点キーのルックアップのパフォーマンスを向上させるにはどうすればよいですか?

答えて

5

ここで問題となるのは、フィルタ機能でインデックスを使用しない.hasの使用です。 GremlinDocsから:

それはhasの構文はキーインデックスの検索と な速く実行されますようであることの違いを有し、g.V("name", "marko")に似ていることは注目に値します。対照的に、この行、g.V.has("name", "marko")は、一致するために の各頂点のnameプロパティをチェックするすべての頂点に対して反復処理を行い、 インデックスアプローチよりも大幅に遅くなります。上記例えば

、このインデックスを使用し、非常に迅速に(< 1秒)のルックアップを実行し

gremlin> g.V("my_key", "abc") 
==>v[12345] 
+2

これはタイタン0.5.0のように正確ではない: 'gVhas(」 my_key "、" abc ")'は 'my_key'キーで利用可能なインデックスを使います。 Titanの[index docs](http://s3.thinkaurelius.com/docs/titan/current/indexes.html)を参照してください。 – AliOli