【问题标题】:Dynamic hierarchy in Database: RDBMS vs Graph based db (Neo4j)数据库中的动态层次结构:RDBMS 与基于图形的 db (Neo4j)
【发布时间】:2014-07-11 19:13:46
【问题描述】:

我需要在项目中实现动态层次结构。一种可能的解决方案是使用像 Neo4j 这样的图形数据库 NoSQL 解决方案。我在 RDBMS 中的图形实现中设计的内容。 在这个解决方案中,我设计了一个与自身具有多对多关系的表。 这方面的一个例子是here。 我有一个定义不同实体的表 (TABLE_A) 和另一个定义实体类型的表 TABLE_B,并且 TABLE_B 与其自身具有多对多关系,它定义了关系不同实体类型之间。这是存储在 JoinTable, TABLE_C 中。类似地,TABLE_A 与自身具有多对多关系,以定义在 TABLE_C 中定义的不同关系的实例。 在 Java 中,我只使用了两个类来实现这个结构。

现在,在我的情况下,这种多对多关系并不总是多对多关系。 有时是一对多,有时是一对一。

首先,No SQL Graph DB 是否比关系数据库更适合我的要求,因为我计划测试的数据将是十万条记录。

其次,如果 RDBMS 解决方案更好,那么有没有办法在连接表 TABLE_C 中包含一个属性,该属性定义关系的多重性,即它是否是一个对多或多对多或一对一关系?

【问题讨论】:

    标签: sql jpa neo4j nosql


    【解决方案1】:

    是的,您可以在两个节点之间的每个关系上放置任意数量的属性,从无到多个。您也可以在关系上拥有不同的属性以及不同的关系类型。

    树是图形数据库的自然结构。它可以管理任意深度和宽度的树。

    可以快速插入树数据,见my example here

    在树中查找数据很容易用可变长度路径表示。

    Rik 做了一个good blog post 使用这种层次结构来管理零件清单和价格。

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多