![](/img/trans.png)
[英]Titan cassandra does not use defined indexes for custom gremlin steps
[英]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)
我的問題:
我猜第二個問題與基礎存儲(以我的情況為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.