关键策略
Kafka Connect Neo4j 连接器是将 Kafka 与 Neo4j 集成的推荐方法,因为 Neo4j Streams 不再处于积极开发状态,并且在 Neo4j 4.4 版本之后将不再提供支持。 Kafka Connect Neo4j 连接器的最新版本可在此处找到。 |
对于streams.source.topic.relationships.<TOPIC_NAME>.key_strategy=default
,当我为关系生成消息时,将仅返回一个关联的节点约束,并根据以下规则。
如果存在多个约束,我们将按关联到约束的属性数量进行排序,然后按标签名称(按字母顺序)排序,最后按属性名称(按字母顺序)排序。
最后,我们将采用第一个的属性。
因此,如果我们有一个具有标签Person
和Other
的起始节点,并且我们创建了以下两个约束
CREATE CONSTRAINT ON (p:Other) ASSERT p.zxc IS UNIQUE;
CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE;
生成的start.ids
字段将是
{"zxc": "FooBar"}
因为属性大小相同(即 1),但第一个标签按名称是Other
。
否则,使用
CREATE CONSTRAINT ON (p:Other) ASSERT p.zxc IS UNIQUE;
CREATE CONSTRAINT ON (p:Other) ASSERT p.name IS UNIQUE;
生成的start.ids
字段将是
{"name": "Sherlock"}
因为name
属性名称与zxc
相比。
否则,使用streams.source.topic.relationships.<TOPIC_NAME>.key_strategy=all
,将生成参与唯一约束的任何属性。因此,对于具有标签Person
、Other
、Another
的起始节点,以及以下约束
CREATE CONSTRAINT ON (p:Another) ASSERT p.zxc IS UNIQUE;
CREATE CONSTRAINT ON (p:Other) ASSERT p.name IS UNIQUE;
CREATE CONSTRAINT ON (p:Person) ASSERT p.surname IS UNIQUE;
生成的start.ids
字段将是
{ "name": "Sherlock", "surname": "Holmes", "zxc": "FooBar"}