Neo4j支持视图的概念吗



我从Neo4J开始,试图将我当前的系统从关系数据库迁移到Neo4J并且有一个特殊的问题需要克服。

我有一个名为Orders的表,它有两个特别的列,这让我很头疼。ShipBy是(火车/航空/卡车)的值Carrier是运送订单的公司的Id,但这一点发生了变化,如果它通过航空运输,它有类似UPS/阿拉斯加/大陆的东西;如果它是通过火车运输的,它有类似BNSF/堪萨斯州铁路公司等的东西。。。

这些值来自不同的目录表,所以在我的系统中用这样的方法解决了这个问题从订单中选择订单。编号,承运人。名称,(从卡车司机工会中选择"T"类型,Id,名称全部从铁路公司工会中选择"R"类型,Id、名称全部从航空公司中选择"A"类型,Id,名称)承运人其中Orders.ShipBy=承运商。类型和订单。CarrierId=Carrier.Id

如果能给我指点,我将不胜感激。

Neo4J不像关系数据库那样拥有视图。作为候补,你可以做几件事:

  1. 根据需要,不断重新发布用于计算所需"视图"的查询
  2. 创建一个特殊的"视图节点",然后通过关系将该节点链接到"视图"中自然出现的所有其他节点。查询视图变得非常简单,只需拉起一个"视图节点"并遍历边即可获得视图结果

选项#1最简单,选项#2可能更快,但随之而来的维护负担是,随着数据库中底层节点的更改,您需要维护视图并确保它指向正确的位置。

正如我们在这里所读到的"在数据库理论中,视图是存储的数据查询的结果集,数据库用户可以像在持久数据库集合对象中一样查询。"

Neo4j不托管存储查询,但您可以考虑扩展Stefan在这里发布的Neo4j服务器:https://stackoverflow.com/a/21780942/3442366

物化的观点当然是不同的。。。

依靠Neo4j提供的关系管理能力;-)

干杯,洛伦佐

最新更新