【发布时间】:2013-11-22 13:59:07
【问题描述】:
我正在为 Neo4j 开发对象图映射器 (OGM)。它帮助我更好地理解 Neo4j 的工作流程。我在对象关系的实现上遇到了一个大问题。
我处理 OGM 本身的方式是根据索引创建“模型”。所以索引“用户”对应于类“用户”。所有属性都按预期工作等。当涉及到关系时,我尝试将其实现为类似于 ORM 关系。但是,SQL 和图数据库之间的一大区别是,图没有静态表。和关系端点“类型”可以从节点更改为节点。例如,如果我有“喜欢”的关系,它可以转到节点类“书”、“电影”。我不能像创建 SQL 一样创建关系:(relationshipName、relationshipType、fkID、modelName)。
我应该如何解决这个问题?什么是更好的设计选择?我应该根据节点的索引自动找到类吗?我应该省略没有相同索引的对象吗?
我现在实现它的方式是(relationshipName、relationshipType、relationshipDirection、modelName)。用法示例为 ("likedBy", "likes", "in", "User"), ("likes", "likes", "out", "Thing")。
【问题讨论】: