设置图形数据库以查询不同类型节点的公共属性

时间:2014-08-17 22:51:01

标签: database database-design graph neo4j graph-databases

我正在考虑使用图数据库来处理来自关系数据库的一些数据。设置数据库的方式,与单个项目相关的信息分布在多个表中。从我所读到的,似乎要走的是拥有一个对应于每个表的节点类型,并且表中的每个条目都是一个节点。在节点之间设置边缘变得棘手。

例如,假设我有一张汽车零件表:

| Part number | price | quantity in inventory |

汽车:

| make | model | price |

一张汽车使用什么部分的表格:

| model number | part number | quantity |

我会为每个汽车零件创建一个节点,并为每个汽车模型创建一个节点。然后会有:使用从汽车模型到它使用的每个部件的关系。这样可以很容易地获得特定汽车中使用的所有零件,或者哪些汽车包含特定零件。

如果我想查找所有具有特定价格的汽车和汽车零件怎么办? (在这个例子中忽略汽车零件的成本往往不如汽车那么多)。通过共享属性查询?如果价格不匹配,经过检查,检查每个节点以及接受或拒绝节点的查询似乎不能很好地扩展。如果您的数据库中有数百万个部件,那会不是很慢?

我能想到的解决这个问题的方法是为每个独特的价格创建一个价格节点,并在每个零件和价格之间建立联系。但似乎这种方法最终会为每个独特的属性值留下一个节点,而这似乎也是过分的。

当从关系数据库中获取数据以放入图形数据库,并且您希望能够基于不同类型节点的公共属性进行查询时,设置节点和关系的最佳方法是什么?

0 个答案:

没有答案