使用gremlin和图中方法的遍历之间的区别

问题描述:

假设我有下面的简单图。使用gremlin和图中方法的遍历之间的区别

enter image description here

我看到遍历该图表

选项1

我可以使用由Graph

Graph factory = ... 
factory.getVertices("type", "Response"); 

选项2提供了下列API的两种方式

我也可以用GremlinPipeline API作为记录here

Graph g = ... // a reference to a Blueprints graph 
GremlinPipeline pipe = new GremlinPipeline(); 
pipe.start(g.getVertex(1)) 

我的问题是

  • 为什么两个API的?
  • 何时使用哪一个?
  • GremlinPipeline是否利用使用TnkerGraph的index related methods创建的indeces?

有两个API用于获取数据,因为一个表示蓝图级是抽象的具有用于访问图形和的Gremlin级是抽象的具有高得多的高级别辅助级别的功能较低的水平遍历图时的表达度。设计原则是基于蓝图是不同图形数据库(即Neo4j,OrientDB等)的抽象层,并且它需要足够简单以便快速开发实现。然而,Gremlin是一种遍历Blueprints API的图遍历语言,使得Gremlin可以在多个图数据库上运行。

你的例子不允许Gremlin发光。当然,在这些情况下,真的没有理由选择一个。这里有一个我认为更好的类似例子:

// blueprints 
g.getVertices() 

// gremlin 
g.V 

除了保存几个字符,Gremlin真的没有得到任何东西。不过,考虑一下这个Gremlin:

g.V.out('knows').outE('bought').has('weight',T.gt,100).inV.groupCount().cap() 

我不会提供蓝图的等价物,因为它有很多类型的代码。你必须相信Gremlin这一行代码有很多代码行,并且有很多循环。

大多数情况下,原始Blueprints API的使用对于遍历来说并不是非常必要的。你会发现自己使用它来加载数据,但除此之外,使用Gremlin。

+2

...是的,gremlin会利用索引。 – 2014-09-03 11:51:39