OrientDB从边缘到混乱
我刚刚使用图形数据库,对OrientDB中的From/To或In/Out的概念有点困惑OrientDB从边缘到混乱,orientdb,traversal,vertex,Orientdb,Traversal,Vertex,我刚刚使用图形数据库,对OrientDB中的From/To或In/Out的概念有点困惑 定义哪个顶点是从哪个顶点开始的,哪个顶点是到哪个顶点的最好方法?或者两者兼而有之,例如,在社交网络中,什么时候是联系关系。在我看来,这种混淆的大部分来自Apache TinkerPop的边缘符号。OrientDB历史上采用TinkerPop作为其图形API(这里有些东西正在改变,因此在V3.0中会有一个不依赖ApacheTinkerpop API的本机文档/图形API,但我们仍将保持对TinkerPop 3.
定义哪个顶点是从哪个顶点开始的,哪个顶点是到哪个顶点的最好方法?或者两者兼而有之,例如,在社交网络中,什么时候是联系关系。在我看来,这种混淆的大部分来自Apache TinkerPop的边缘符号。OrientDB历史上采用TinkerPop作为其图形API(这里有些东西正在改变,因此在V3.0中会有一个不依赖ApacheTinkerpop API的本机文档/图形API,但我们仍将保持对TinkerPop 3.x的支持),因此符号是相同的 Apache TinkerPop使用OUT/IN来定义连接到顶点的边和连接到边的顶点:
- 给定一个顶点,输出边由OUT引用,输入边由IN引用(到目前为止还不错)
- 给定一条边,它的起点(它来自的顶点)由OUT(哎哟!)标识,终点(它到达的顶点)由IN标识
这里出现的问题是:对于初学者来说,把边遍历看作是<代码> OUT+OUT > >:
是很自然的。vertex -out-> edge -out-> anotherVertex
但不幸的是,这是错误的
进行直尺遍历的正确方法是out+in
:
vertex -out-> edge -in-> anotherVertex
还可以使用输入+输出
向后遍历边
正如我之前写的,我觉得这非常不直观,一开始我也有这个问题。IMHO边缘连接的最佳符号应该是从/到
,而不是中的输出/,但它现在是一个标准,所以我们不能做太多
我唯一能告诉你的是,只要稍加练习,它就会变得自然
另一个考虑因素是社交网络,通常是不打算有方向的边缘(在社交网络中,边缘的方向并不重要,事实上我是你的朋友也意味着你是我的朋友)。Apache TinkerPop没有无向边的概念,因此您只需使用有向边并在遍历它们时忽略方向(例如,使用both()
操作符或both
方向)