簡體   English   中英

何時在Titan圖形中使用邊緣索引?

[英]When do you use Edge Indexes in a Titan Graph?

關於在Titan中創建Vertex索引的文檔似乎很多:

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

我找不到太多有關添加Edge索引的文檔,例如:

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

我的問題:

  1. 什么時候向圖表添加Edge索引合適?
  2. 如果遍歷的任何/所有部分都可用或僅在第一次遇到邊緣索引時,會使用邊緣索引嗎?

我猜第二個問題與基礎存儲(以我的情況為Cassandra)如何使用索引有關。 因此,問題實際上是“遍歷的每個部分,圖是否都返回到底層存儲,這對索引的使用有何影響?”

邊緣索引只能是以頂點為中心的索引 ,而不能是全局索引。 我不再有Titan的測試環境,但實際上,我對此感到驚訝:

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

...仍然有效 我認為從0.5.x開始就禁止這樣做,因為這些索引的行為從未像用戶期望的那樣。

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

...實際上可能導致長時間運行的掃描操作。 如果我沒記錯的話,這樣的邊緣索引會存儲邊緣的外頂點ID和邊緣ID。 因此,前面提到的查詢將首先加載出頂點,然后掃描其邊緣,直到找到具有索引ID的邊緣。

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

Titan將索引ID和索引屬性值用作行鍵,將內部關系ID用作列,將外部關系ID(例如1g9ocn9jk-1g9ocnaf4-6c5-1g9ocndkw)用作值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM