我最近刚开始尝试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只下降了一个级别。
我们目前的规格如下:
对不起我的错误,如果我正在制作,并希望得到帮助!
答案 0 :(得分:1)
我假设name属性已经编入索引。 copySplit
将不会使用该索引,请尝试以下方法:
g.V().has('name', T.in, ['user_1', 'user_2']).out('user_posts_relationship')