在titandb中插入数据时获取重复条目

时间:2016-07-06 21:42:12

标签: scala titan

下面是我用来将数据插入到titan中的Scala代码。

for(n <- nodes){
   stringNodes = stringNodes.concat("v"+n.letter+" = graph.addVertex('"+n.label+"');") 
   for(a <- n.attributes){
     stringNodes = stringNodes.concat("v"+n.letter+".property('"+a.name+"','"+row(row.fieldIndex(a.name))+"');") 
   }
 }

我们面临的挑战是每次我们获得一个节点的多个条目。 http://i.stack.imgur.com/cQ7wN.png

您能帮助并建议在titan db中插入唯一记录的最佳方法吗?

1 个答案:

答案 0 :(得分:2)

我不确定如何在Scala中执行此操作,但根据某些属性确保顶点是唯一的一种好方法是将该属性索引为唯一。

如概述here,您可以在顶点myId上创建一个属性,并告诉架构它是唯一的。这样你就可以通过id进行快速查找,更重要的是让Titan确保该属性的顶点是唯一的。例如:

//Open up managment interface
graph = TitanFactory.open(config);
mgmt = graph.openManagement();

//Create the property key
propKey = management.makePropertyKey("myId").dataType(String.class)).make();

//Tell Titan it should be unique
mgmt.buildIndex("byMyIdUnique", Vertex.class).addKey(propKey).unique().buildCompositeIndex();
mgmt.commit();

以上代码将告诉Titan您有一个名为myId的属性,该属性应该是唯一的。这样,如果您执行以下操作:

graph.addVertex().property("myId", 1); 
graph.addVertex().property("myId", 1);

Titan会失败,并警告你重复。