我正在尝试通过neo4j-stream
插件将数据从Kafka导入Neo4j。
目前,我们正在尝试CUD
策略。
我想知道我们应该如何处理互连的数据。
假设我们将100个人从Kafka传送到Neo4j。
当person(id:1)
与is_friends_with
之间有一个关系person(id:50)
时,直到创建person(id:50)
的节点,我们才能创建此关系。
但是,我们无法控制事件来自Kafka的顺序。
因此,当人员数据到达时,我们将创建以下CUD数据:
person(id:1)
创建节点is_friends_with(person1, person50)
。person(id:50)
创建节点不足为奇的是,当我们按此顺序摄取事件时,这种关系就消失了。
我们如何处理呢?
答案 0 :(得分:2)
我认为这是使用MERGE的典型情况。
每当您有一个关系(具有开始和结束节点)时,便会这样做
MERGE (n:Person {id:foo})
MERGE (m:Person {id:bar})
MERGE (n)-[:is_friends_with]-(m)
为了避免在n和m以不同顺序到达的情况下出现双向模式,关系的合并没有方向。