1
我正在设置一个图形结构与变换器'需要'和'产生'1个或多个卡夫卡主题。我可以定义图形结构,但是我希望对查询有所帮助。生产者和要求的查询依赖链
我想查询:要创建某个主题需要哪些变换器和主题链,例如在下面的示例中,生成Topic3需要哪些变换器。我期望
Ingest1->Topic7->T1->Topic1->T2->Topic3
下面的第一个答案是不完全正确的,因为它没有考虑到要求和产生的交替方向。 正确的查询到一定深度会是这样的
MATCH (topic:Topic{name:"topic-3"})
<-[:produces]- (tr1) -[:requires]->(tp1)
<-[:produces]- (tr2) -[:requires]->(tp2)
<-[:produces]- (tr3)
return [topic,tr1,tp1,tr2,tp2,tr3] as List
这样看来,我寻找的东西,可重复配对产生/需要顶点。
这是我玩的一些数据。
CREATE (DB1:Database {backbone: true, name:"postgres db 1"})
CREATE (Ingest1:Ingest {backbone: true, name: "ingest-1"})
CREATE (KV1:KV {name: "key-value store 1"})
CREATE (KV2:KV {name: "key-value store 2"})
CREATE (KV1)-[:requires]->(DB1)
CREATE (KV2)-[:requires]->(DB1)
CREATE (Topic1:Topic {name: "topic-1", partitions:100})
CREATE (Topic2:Topic {name: "topic-2", partitions:100})
CREATE (Topic3:Topic {name: "topic-3", partitions:100})
CREATE (Topic4:Topic {name: "topic-4", partitions:100})
CREATE (Topic5:Topic {name: "topic-5", partitions:100})
CREATE (Topic6:Topic {name: "topic-6", partitions:100})
CREATE (Topic7:Topic {name: "topic-7", partitions:100})
CREATE (Topic8:Topic {name: "topic-8", partitions:100})
CREATE (T2:Transformer {name: "T2"})
CREATE (T1:Transformer {name: "T1"})
CREATE (T3:Transformer {name: "T3"})
CREATE (T4:Transformer {name: "T4"})
CREATE (T5:Transformer {name: "T5"})
CREATE (T6:Transformer {name: "T6"})
CREATE (T7:Transformer {name: "T7"})
CREATE (T8:Transformer {name: "T8"})
CREATE (T9:Transformer {name: "T9"})
CREATE (T4)-[:requires]->(Topic3)
CREATE (T5)-[:requires]->(Topic3)
CREATE (T2)-[:produces]->(Topic3)
CREATE (T2)-[:produces]->(Topic4)
CREATE (T2)-[:produces]->(KV1)
CREATE (T2)-[:requires]->(Topic1)
CREATE (T4)-[:produces]->(Topic5)
CREATE (T2)-[:requires]->(Topic2)
CREATE (T1)-[:produces]->(Topic1)
CREATE (T1)-[:requires]->(Topic7)
CREATE (T3)-[:produces]->(Topic2)
CREATE (T3)-[:requires]->(Topic8)
CREATE (Ingest1)-[:produces]->(Topic7)
CREATE (Ingest1)-[:produces]->(Topic8);
我不认为你的第一个解决方案是完全正确的:-) 我在定义中增加了几个变压器和主题(见并且第二个查询返回: '[ingest-1,topic-7,T1,topic-1,T2,topic-3,topic-3]' '[ingest-1,topic-8, T3,topic-2,T2,topic-3,topic-3]' '[ingest-1,topic-7,T1,topic-1,T2,topic-3,topic-3]' ' 1,话题-8,T3话题-2,T2,topic-3,topic-3]' 逻辑正确 –