Neo4j是否支持视图的概念

时间:2014-04-11 15:11:29

标签: oracle neo4j views subquery

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

我有一个名为Orders的表,并且有两个特定的列很痛苦。 ShipBy是(火车/空运/卡车)的价值 承运人是承载订单的公司的身份证,但如果由航空公司发货,则会发生变化,如UPS / ALASKA / CONTINENTAL;如果它乘火车运送,它有类似BNSF / KANSASCITYRAIL / ETC ......

这些值来自不同的目录表,因此在我的系统中解决了这个问题 从订单中选择Orders.Number,Carrier.Name,(选择' T'类型,ID,来自Truckers union的姓名全部选择&R;#R'类型,ID,来自RailCompanies union的名称全部选择& #39; A'类型,ID,来自AirLines的名称)运营商 Orders.ShipBy = Carriers.Type和Orders.CarrierId = Carrier.Id

我很感激任何指针。

2 个答案:

答案 0 :(得分:3)

Neo4J没有关系数据库的方式。你可以做几件事作为替补:

  1. 根据需要不断重新发出计算所需“视图”的查询
  2. 创建一个特殊的“视图节点”,然后通过关系将该节点链接到“视图”中自然出现的所有其他节点。然后查询您的视图就像拉动一个“视图节点”并将边缘遍历到视图结果一样简单。
  3. 选项#1最简单,选项#2可能更快,但随之而来的是维护负担,当数据库中的底层节点发生变化时,您需要保持视图并确保它指向正确的位置。 / p>

答案 1 :(得分:3)

我们可以阅读here"在数据库理论中,视图是数据存储查询的结果集,数据库用户可以像在持久数据库集合对象中一样查询"

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

物化视图当然不同......

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

干杯, 洛伦佐