OrientDB:边缘与链接列表与链接映射
OrientDB : Edges vs LinkList vs Linkmap
使用 linklist
、linkmap
或 edge
来存储顶点之间的关系有哪些优点和缺点?
边定义了两个顶点之间的关系。例如,您定义了两个顶点,Person 和 Car。然后定义边缘驱动器。这条边将两个顶点连接在一起。 "Jane" 驱动器 "Ford"。
链接列表是 class 与另一个 class 关联的列表。汽车 class 可能有零件 class 的零件链接列表。一辆汽车由多个部分组成。
链接映射是键映射,class 值与另一个 class 关联。汽车 class 可能具有 PartType、Part 的链接映射。一辆汽车由多个部分组成,可以按发动机、车身、底盘等进行分组
来的有点晚,不过最近也在找这个答案,想明白了一些。
OrientDB 中的链接提供相当于关系数据库世界中的 foreign-key 关系。如果您将表视为 类,则 link 连接两个 类
在他们的 3.0 手册中 http://orientdb.com/docs/3.0.x/sql/SQL-Introduction.html 和 No JOINS 部分,他们声明
SELECT * FROM Employee WHERE city.country.name = 'Italy'
他们在手册中没有告诉你的是,这些来自 linked 表而不是图形关系。
为了在图形技术中发挥作用,首先您需要创建一条边。我会把它标记为 locatedIn
所以
Employee => `locatedIn` => City
而且还来自城市记录
City => `ofCountry` => Country
那么基于图形的 OrientDB 查询可能是。
SELECT * FROM Employee WHERE out(“locatedIn”).out(“ofCountry”) = “Italy”
你可能会想,这看起来要复杂得多。它是。但是只是在稍后的某个时候说另一个名为 salesTerrotiry
的 Edge 关系用于该员工
被其他人添加然后可以这样遍历和发现
TRAVERSE * FROM Employee MAXDEPTH = 2
在那里你会发现新的 salesTerritory
边会被发现。这就是 ad-hoc 几乎任何深度的关系发现都非常容易使用图形数据库。如果您已在关系数据库中实现此功能,则需要探索新 FK 的架构。可行,但要复杂得多。
使用 linklist
、linkmap
或 edge
来存储顶点之间的关系有哪些优点和缺点?
边定义了两个顶点之间的关系。例如,您定义了两个顶点,Person 和 Car。然后定义边缘驱动器。这条边将两个顶点连接在一起。 "Jane" 驱动器 "Ford"。
链接列表是 class 与另一个 class 关联的列表。汽车 class 可能有零件 class 的零件链接列表。一辆汽车由多个部分组成。
链接映射是键映射,class 值与另一个 class 关联。汽车 class 可能具有 PartType、Part 的链接映射。一辆汽车由多个部分组成,可以按发动机、车身、底盘等进行分组
来的有点晚,不过最近也在找这个答案,想明白了一些。
OrientDB 中的链接提供相当于关系数据库世界中的 foreign-key 关系。如果您将表视为 类,则 link 连接两个 类
在他们的 3.0 手册中 http://orientdb.com/docs/3.0.x/sql/SQL-Introduction.html 和 No JOINS 部分,他们声明
SELECT * FROM Employee WHERE city.country.name = 'Italy'
他们在手册中没有告诉你的是,这些来自 linked 表而不是图形关系。
为了在图形技术中发挥作用,首先您需要创建一条边。我会把它标记为 locatedIn
所以
Employee => `locatedIn` => City
而且还来自城市记录
City => `ofCountry` => Country
那么基于图形的 OrientDB 查询可能是。
SELECT * FROM Employee WHERE out(“locatedIn”).out(“ofCountry”) = “Italy”
你可能会想,这看起来要复杂得多。它是。但是只是在稍后的某个时候说另一个名为 salesTerrotiry
的 Edge 关系用于该员工
被其他人添加然后可以这样遍历和发现
TRAVERSE * FROM Employee MAXDEPTH = 2
在那里你会发现新的 salesTerritory
边会被发现。这就是 ad-hoc 几乎任何深度的关系发现都非常容易使用图形数据库。如果您已在关系数据库中实现此功能,则需要探索新 FK 的架构。可行,但要复杂得多。