2016-07-06 15 views
1

以下は、データをtitanに挿入するために使用しているScalaコードです。titandbにデータを挿入する際に重複エントリを取得する

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))+"');") 
    } 
} 

私たちが直面する課題は、1つのノードの複数のエントリを取得するたびに発生します。 http://i.stack.imgur.com/cQ7wN.png

titan dbに一意のレコードを挿入する最適な方法を教えてください。

答えて

1

私は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(); 

上記のコードは、あなたがユニークである必要がありmyIdと呼ばれる性質を持っているタイタンを教えてくれます。そのようにすれば、次のことを実行することができます。

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

タイタンは失敗し、重複を警告します。

関連する問題