私は、Springデータneo4j 2.1.0.BUILD-SNAPSHOTとNeo4j 1.6.1サーバを使用しています。 私は2つのユーザーノードの間に友情関係があり、すべてのuser1、user2のペアに対して1つの関係しか作成されないようにしたい(順序は数えません)。Neo4jとの関係を一意にする
一般的な提案は、別のものを作成する前に関係がすでに存在するかどうかをアプリケーションレベルでチェックすることですが、同時性の問題を避けることはできません:データベースレベルで制約を管理する必要があります。私は考えることができる
最善の解決策は、ところで、私が知っている
@Indexed(unique = true)
private String uniqueConstraint;
public String getUniqueConstraint(){
if(user1.id > user2.id){
return user1.id + "|" + user2.id;
}
return user2.id + "|" + user1.id;
}
のようなユニークuser1とuser2のIDに基づいて制約、何かをのNeo4j 1.6で導入されたユニークな特性を持つ@Indexedアノテーションを使用して作成することですNeo4jTemplate.getOrCreateNode()でノード上でこのチェックをサポートしているSpringデータneo4jの最新リリースが、リレーションシップで動作するかどうかはわかりません。残りのAPIはそこにあるはずです。 Unique relationship
だから私は二つの質問があります。
1は、任意のより良い代替手段はありますか?
2この並行性の問題に悩まされるべきか、トラフィックが多いサイトでも何か悪いことが起こりにくく、アプリケーションレベルのチェックで十分であるはずです。私はそれが私には非常に共通の問題だと思うので尋ねますが、Neo4jではこれについて少ししかありません。たぶん、埋め込みバージョンはこれで苦しんでいるかもしれません。
おかげ
完了! https://jira.springsource.org/browse/DATAGRAPH-223 –