通过土卫六的缓慢遍历时间。如何根据具体用例提高性能?

时间:2014-12-04 13:50:48

标签: performance graph titan

我最近刚开始尝试Titan,如果可能的话,不知道如何提高性能。对于我们构建的简单基准用例,我们设置了用户,每个用户都有自己的帖子。目前,我们有20个用户,并在所有这些用户之间展开,基准数据中有580个帖子。我们的实际应用程序非常动态,因此某些配置可能不适用,我将在后面提到。

在实际插入之前,我在数据的唯一标识符(user / posts)上创建了一个属性索引,在这种情况下,它是键名“name”。同样,设置了自动键/标签创建,因此允许创建其他属性/标签。

g.makeKey('name').dataType(String.class).indexed(Vertex.class).unique().make()

创建索引后,我插入用户/帖子顶点,它们之间有边缘,表示所述用户创建了一个帖子。

现在实际调用遍历。我想要做的具体查询是用户名/用户顶点列表,找到我所有的帖子。例如,给定名称为“user_1”,“user_2”和边缘标签“user_posts_relationship”的用户。

g.V.copySplit(_().has('name', 'user_1'), _().has('name', 'user_2').exhaustMerge().out('user_posts_relationship')

现在,假设我们的假数据中有20个用户,这大概需要2秒钟。鉴于帖子的数量,这是不好的表现吗?这是我应该在给定起始顶点列表的情况下进行遍历的方式吗?我之所以不使用MultiVertexQuery助手,是因为由于我们的实际应用,我们不知道需要跳多少边,而且从我的研究来看,MultiVertexQuery只下降了一个级别。

我们目前的规格如下:

  • Titan 0.4.4
  • Cassandra 2.0.9
  • 1 CPU / 512 MB
  • Ubuntu的

对不起我的错误,如果我正在制作,并希望得到帮助!

1 个答案:

答案 0 :(得分:1)

我假设name属性已经编入索引。 copySplit将不会使用该索引,请尝试以下方法:

g.V().has('name', T.in, ['user_1', 'user_2']).out('user_posts_relationship')