我们将收到传达以下信息的数据:
Object1 **is related to** Object2
Object1 **has relationship ID R1** with Object2Object1和Object2都与任意数量的对象进一步相关。is related to的“轴”将用于递归地回答一个查询,例如“与Object1 1相关的人”。并且,has relationship ID R1的“轴”将用于回答一个查询,例如,“谁是关系ID R1的当事方”。
我对Neo4j有介绍性的知识,问题不在于在这样的图形上执行CRUD的代码。看来,边的数目应该等于在两个顶点之间运行的查询类型(可以预见)。
你能指导我一个设计模式来定义这个数据库吗?
发布于 2017-05-09 14:22:13
如果我正确理解,您关注的是由于边缘类型不断增加而导致的模式更改的影响。
在图引擎中,您可以在架构中定义带有值的边缘,以便多个边缘类型('axis')可以用单个类型表示,该类型与指示边缘类型的枚举字段相关联。然后在您编写的查询中:
g.V(a).outE(e => e.type == EdgeType.isRelatedTo).outV(b => ...)
g.V(b).outE(e => e.type == EdgeType.hasRelationshipIDR1).outV(a => ...)此模式也适用于没有显式支持带有值的边的后端,因为可以将边缘建模为顶点:
g.V(a).outE().outV(e => e.type == EdgeType.isRelatedTo).outE().outV(b => ...)
g.V(b).outE().outV(e => e.type == EdgeType.hasRelationshipIDR1).outE().outV(a => ...)代价是额外的一步穿越。
https://stackoverflow.com/questions/43860567
复制相似问题