nosql - Neo4j(或其他一些图形数据库)可以处理关系之间的关系吗?

标签 nosql neo4j graph-databases

我正在研究将图形数据库用于需要对关系之间的关系进行建模的项目。例如,A 和 B 之间的平局可能取决于 C 和 D 之间的平局。

我还需要对节点和其他关系之间的关系进行建模。催化关系可能是一个很好的例子。代理 X 加速代理 Y 和 Z 之间的关系。关系需要包含描述关系的属性。

我可以通过使节点和关系从同一类型继承来生成关系数据库来实现这一点。因此,每个类型数据库结构的表在 BaseType 表中具有主键,并且与子类型表:节点和关系具有一对一的关系。关系表具有三个指向 BaseType 表的外键。一个是它的主键,另外两个构成关系的源和目标。因此,源和目标之一或两者都可以是关系类型。

但这包含了许多小对象的连接,这符合应该在图形数据库中表现最佳的数据库的描述。

根据要求绘制图表 - 包括尝试的解决方案。

A-B relationship influences the C-D relationship

Catalytic relationship between four agents

我试图通过创建关系节点来解决这个问题。

Possible solution to catalyst relationship

Possible solution to relationships influencing other relationships

所以我在这里提出的解决方案涉及创建更多节点。我想这可以工作,但想知道我是否让它变得不必要地复杂。

最后一张图 - 关系数据库解决方案。这看起来更简洁,但不如 Graph db 方法灵活。也许效率不高?
enter image description here

最佳答案

您通过添加节点/顶点来解决这些连接关系来对“带边的边”进行建模的方法是有意义的。对于公开属性图模型的图数据库(如 Neo4jTitan 和其他 Blueprints 启用的图),模拟 hypergraph是获得该功能的正确方法。在 gremlin-users 邮件列表中有一个正在进行的讨论,现在正在蓝图的上下文中讨论这个主题...你可以阅读它 here .

关于nosql - Neo4j(或其他一些图形数据库)可以处理关系之间的关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601589/

相关文章:

java - 如何存储用户日志

database - 为什么 LMDB 数据库占用的数据量超过实际数据量?

nosql - Redis 在尝试保存时返回错误

ruby-on-rails-3 - 多个 Rails ORM

postgresql - 数百万个点可使用的GEO实现

indexing - Neo4j - 通过ID查找节点 - 如何获取ID进行查询?

cassandra - 通过 cqlsh 请求对 Cassandra 执行减法的最佳方法是什么?

java - 将 Neo4J 结果映射到 java 对象

sql - 关系数据库和图数据库的比较

mongodb - 用作图形数据库在 MongoDb 中查找 "friends"的 "friends"