在TitanDB中插入数据

时间:2016-05-12 15:08:42

标签: titan gremlin

我使用TitanDB和Cassandra作为存储,而ElasticSearch作为索引。我发现每次在TitanDB中添加Vertex时,它都会生成一个唯一的标识符。

我添加到其中的所有元素都已有标识符,这已被添加为Vertex的属性。 我的问题是: 如果我再次添加一个具有相同ID的Vertex,TitanDB如何识别它是重复的? 有可能update element on duplicate key吗?或者你首先在TitanDB中进行查询?如果是这样的话,是不是浪费时间呢?

1 个答案:

答案 0 :(得分:3)

" upsert"没有直接的方法。如上所述,在comment on the question中," getOrCreate"方法是执行此操作的标准方法。所以,"是"您需要通过标识符属性的索引进行查找。

如果您使用唯一约束建立indexed property,Titan可以检测重复项:

mgmt = graph.openManagement()
name = mgmt.getPropertyKey('name')
mgmt.buildIndex('byNameUnique', Vertex.class).addKey(name).unique().buildCompositeIndex()
mgmt.commit()

如果现在两次应用相同的属性值,则会在提交事务时生成异常。明智地使用唯一索引,因为它们会影响性能,尤其是当您期望对应用唯一的属性进行大量争用时。