如何在 Gremlin 服务器上使用 ferma OGM?

How Is it possible to use ferma OGM over Gremlin Server?

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

现在我使用 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 注释的实例 类.

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

Ferma 还支持许多与 TinkerPop 兼容的数据库。它的工作效果取决于 well/fully 供应商的驱动程序如何实现对 Tinkerpop 的支持。

例如,正如我最近发现的那样,DSE Graph 不适用于它。 ORM 遍历需要连接的 tinkerepop 图形对象,而这不是 DSE 图形驱动程序支持的东西。我能够将 Ferma 用于对象的简单属性,但是关系的 none 会起作用。

它确实适用于远程 Titan 和其他图形数据库。 README.md 已于 10 月将对 JanusGraph 的支持添加到 Ferma 存储库中。

如果您的集群已经配置好,您可以使用类似这样的方法来获取图形对象:

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

我是 Ferma 的首席开发人员

Ferma 与 TinkerPop 兼容的所有数据库 100% 兼容。 Ferma 充当 TinkerPop 的薄包装,以提供 OGM 层。只要你能给 Ferma 提供一个 TinkerPop Graph 对象,它就可以包装它并使用它。

这意味着如果您想使用 Ferma,您将需要使用不同的方法。它与 JanusGraph 兼容很好,但不是通过 Gremlin 服务器方法。您将不得不直接使用 TinkerPop 图形驱动程序。也就是说,直接把graph对象包裹起来,这是一种兼容JanusGraph的做法。

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

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