在 titandb 中插入数据时获取重复条目
Getting duplicates entries while inserting data in titandb
下面是我用来将数据插入 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 中插入唯一记录的最佳方法?
我不确定您将如何在 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 将失败并警告您重复项。
下面是我用来将数据插入 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 中插入唯一记录的最佳方法?
我不确定您将如何在 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 将失败并警告您重复项。