2016-05-12 6 views
0

私は、Cassandraをストレージに、ElasticSearchをIndexとしてTitanDBを使用しています。 TitanDBにVertexを追加するたびに、一意の識別子が生成されることがわかりました。TitanDBでデータを更新する

私が追加しようとしている要素はすべて既に識別子を持っていますが、これは頂点のプロパティとして追加されています。 私の質問は: 同じIDを持つVertexをもう一度追加すると、TitanDBはそれが重複していることをどのように認識しますか? 可能でしょうかupdate element on duplicate keyですか?または、TitanDB内で最初にクエリを作成したことがありますか?もしそうなら、これを行うのはひどい浪費ではないでしょうか?

+2

この質問は類似していますhttp://stackoverflow.com/questions/33948230/upserting-with-titandb – rleir

答えて

3

"upsert"の直接的な方法はありません。前述のように、comment on the questionでは、これを行うための標準的な方法として「getOrCreate」アプローチがあります。だから、 "はい"あなたの識別子プロパティのインデックスを介して検索を行う必要があります。あなたがユニーク制約を使用してindexed propertyを確立する場合

タイタンは、重複を検出することができます。

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

を同じプロパティ値は、現在2回適用されている場合は、例外がトランザクションのコミット時に生成されます。ユニークなインデックスは、ユニークなプロパティが重複して適用されることが予想される場合は、特にパフォーマンスに影響するので、慎重に使用してください。

関連する問題