如何在Gremlin Server上使用ferma OGM?

时间:2018-01-24 08:29:46

标签: tinkerpop janusgraph gremlin-server

你能告诉我 - 是否可以在Gremlin Server上使用OGM FERMA框架(TinkerPop 3.2.6与后端的JanusGraphDB)?

现在我使用gremlin客户端以这种方式向G-server发送查询:

GryoMapper mapper = GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance()).create();
MessageSerializer serializer = new GryoMessageSerializerV1d0(GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance()));

/* Create gremlin cluster... */
Cluster cluster = Cluster.build("123.22.22.111").port(8182).serializer(serializer).create();
Client client = cluster.connect();
ResultSet res = client.submit("g.V().label()");

...因此我不知道如何直接获取图形实例(如在ferma教程中):

FramedGraph fg = new DelegatingFramedGraph(graph, true, types);

...使用遍历获取ferma注释类的实例。

3 个答案:

答案 0 :(得分:4)

Ferma旨在与嵌入式TinkerPop启用的Graph实例配合使用。因此,它不适用于Gremlin Server中托管的图形或DSE Graph,CosmosDB,Neptune等远程图形提供程序。

答案 1 :(得分:2)

Ferma还支持许多与TinkerPop兼容的数据库。它的工作原理是基于供应商的驱动程序如何/完全支持Tinkerpop。

例如,正如我最近发现的那样,DSE Graph无法使用它。 ORM遍历需要连接的tinkerepop图形对象,而DSE Graph驱动程序不支持该对象。我能够将Ferma用作对象的简单属性,但这些关系都不起作用。

它远程适用于Titan和其他图形数据库。支持JanusGraph的README.md已于10月份添加到Ferma回购中。

如果您的群集已配置,您可以使用类似的内容来获取图形对象:

Graph graph = JanusGraphFactory.open('cassandra:localhost')

答案 2 :(得分:1)

我是Ferma的首席开发人员

Ferma与TinkerPop兼容的所有数据库100%兼容。 Ferma充当TinkerPop周围的薄包装,以提供OGM层。只要您可以向Ferma提供TinkerPop Graph对象,它就可以将其包装并使用它。

这意味着如果你想使用Ferma,你需要使用不同的方法。它与JanusGraph兼容,但不是通过Gremlin Server方法。您必须直接使用TinkerPop图形驱动程序。换句话说,直接包装图形对象,这是一种与JanusGraph兼容的方法。

如在另一个答案中所提到的,您可以通过以下调用获得Graph对象,然后将此对象传递给Ferma的FramedGraph构造函数。

Graph graph = JanusGraphFactory.open('cassandra:localhost')