2017-02-10 110 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作为值。

相关问题