这可以通过图形数据库完成吗?

时间:2013-09-11 20:39:32

标签: neo4j

我要求开发一个跟踪某个项目(或多个项目)移动的应用程序。为了更好地演示应用程序必须执行的操作,我绘制了一个diagram (simplified abstraction)

由于我从未使用过关系数据库以外的任何数据库,我真的不知道是否可以使用图形数据库来解决这个问题。

系统必须回答这些问题:

  1. 某个笔式驱动器走的路径是什么?
  2. 我通过了一些笔司机。他们现在在哪里?
  3. 我收到了哪些钢笔,它们来自哪里以及它们去哪里了?
  4. 我烧过的笔在哪里通过?和谁一起?
  5. 非常感谢任何帮助和建议 感谢

1 个答案:

答案 0 :(得分:0)

在Neo4j中,一切都是节点或关系。因此,思考一下是有用的:我的节点和关系是什么?

例如,这里可能是每个“笔式驱动器”,“人”和“位置”都是一个节点。像“走路”或“给”这样的动词就是你的关系。

在这个模型中,您可以使用“Cypher”查询诸如“通过关系遍历给我连接到笔节点的所有位置节点”之类的内容。或者,说“从所有人员节点开始并返回与笔驱动器节点具有给定关系的节点,该笔式驱动器节点没有连接回起始人节点的给定关系。”

这种丰富的图形查询语言为您提供了免费的最短距离等优秀算法,因此您可以在事务记录之外确定是否使用最佳路径将笔驱动器从A转到B。但正如您在上面所看到的,“关系连接”不会产生简单的查询或其描述。

当谈到数据库设计时,当模型在精神上进行映射变得麻烦时,开发也会很痛苦。根据您计划查询的方式设计数据库。如果您无法根据Neo4j轻松解释这些查询,那么Neo4j可能不是最合适的。