2017-02-10 108 views
0

似乎有大量的文檔圍繞創建泰坦頂點索引:什麼時候在Titan圖中使用邊緣索引?

mgmt.buildIndex('byNameAndLabel', Vertex.class).addKey(name) 

我無法找到有關添加邊緣指標多文檔,如:

mgmt.buildIndex('byNameAndLabel', Edge.class).addKey(name) 

我的問題:

  1. 何時適合向圖表添加邊緣索引?
  2. 如果邊緣索引在遍歷的任何/所有部分中可用,或者僅在遇到第一次時才使用,是否會使用邊緣索引?

我猜的第二個問題與底層存儲(在我的情況下是Cassandra)將如何使用索引有關。所以問題是,「圖表是否會回溯到遍歷的每個部分的底層存儲,以及它如何影響它對索引的使用?」

回答

3

邊緣索引應該只有vertex centric indexes,而不是全局索引。我不再有泰坦的測試環境,但我真的很驚訝,這是:

mgmt.buildIndex('byNameAndLabel', Edge.class).addKey(name) 

...仍然有效。我認爲這是自0.5.x以來被阻止的,因爲這些索引從來沒有像用戶期望的那樣行事。

g.E().has("indexedProperty", value) 

...實際上可能導致長時間運行的掃描操作。如果我正確地記得,這樣的邊索引存儲邊的外頂點的id和邊id。所以前面提到的查詢將首先加載out-vertex,然後掃描它的邊緣,直到找到帶有索引id的邊緣。

+0

感謝丹尼爾 - 我實際上沒有嘗試使用Edge.class的索引構建器 - 這是我讀過的一些(我猜老)文檔。 – Guy

0

在我的情況,我有每個關係唯一的自定義ID。因此,我添加了一個全局關係索引,而g.E()。has('KEY',value)確實使用了從Titan 1.0.0開始的邊索引, 。其他情況未經測試。

Titan使用索引id和索引屬性值作爲rowkey,內部關係id作爲列和外部關係id,例如1g9ocn9jk-1g9ocnaf4-6c5-1g9ocndkw作爲值。

相關問題