Neo4j 是不是支持视图的概念
Posted
技术标签:
【中文标题】Neo4j 是不是支持视图的概念【英文标题】:Does Neo4j Support the concept of viewsNeo4j 是否支持视图的概念 【发布时间】:2014-04-11 15:11:29 【问题描述】:我从 Neo4J 开始尝试将我当前的系统从关系数据库迁移到 Neo4j 并且有一个特殊的问题需要克服。
我有一个名为 Orders 的表,其中有 2 个特定的列很麻烦。 ShipBy 是 (Train/Air/Truck) 的值 承运人是承运订单的公司的 ID,但这种情况会发生变化,如果它通过空运运输,它有类似 UPS/ALASKA/CONTINENTAL 之类的东西;如果它通过火车运送,它有类似 BNSF/KANSASCITYRAIL/ETC...
这些值来自不同的目录表,所以在我的系统中解决了这个问题 从 Orders 中选择 Orders.Number、Carrier.Name,(从 Truckers union all 中选择 'T' Type、Id、Name 从 RailCompanies union all 中选择 'R' Type、Id、Name 从 AirLines 中选择 'A' Type、Id、Name)运营商 其中 Orders.ShipBy = Carriers.Type 和 Orders.CarrierId=Carrier.Id
我将不胜感激。
【问题讨论】:
【参考方案1】:Neo4J 不像关系数据库那样拥有视图。作为替补,您可以做几件事:
-
根据需要不断重新发出计算所需“视图”的查询
创建一个特殊的“视图节点”,然后通过关系将该节点链接到“视图”中自然出现的所有其他节点。然后,查询您的视图变得像拉起那个“视图节点”并遍历您的边缘到视图结果一样简单。
选项#1 最简单,选项#2 可能更快,但随之而来的是维护负担,随着数据库中的底层节点发生变化,您需要维护视图并确保它指向正确的位置。
【讨论】:
【参考方案2】:正如我们所读到的here“在数据库理论中,视图是对数据的存储查询的结果集,数据库用户可以像在持久数据库集合对象中一样查询它。”
Neo4j 不托管存储查询,但您可以考虑扩展 Stefan 在此处发布的 Neo4j 服务器:https://***.com/a/21780942/3442366
物化视图当然不同...
依靠 Neo4j 提供的关系管理功能;-)
干杯, 洛伦佐
【讨论】:
以上是关于Neo4j 是不是支持视图的概念的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D视图中心 ( 视图中心概念 | 围绕游戏物体旋转 | 添加游戏物体到游戏场景的位置 )