¿Podría decirme: ¿es posible usar el marco OGM FERMA sobre el Servidor Gremlin (TinkerPop 3.2.6 con JanusGraphDB en el back-end)?

Por ahora, uso el cliente gremlin para enviar consultas al servidor G de esta manera:

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()");

... por lo tanto, no tengo idea de cómo podría obtener una instancia de gráfico directamente (como en el tutorial de ferma):

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

... para usar el recorrido para obtener instancias de clases con anotación ferma.

0
palandlom 24 ene. 2018 a las 11:29

3 respuestas

La mejor respuesta

Ferma está diseñado para trabajar con instancias integradas habilitadas para TinkerPop Graph. Por lo tanto, no funciona con gráficos alojados en Gremlin Server o proveedores de gráficos remotos como DSE Graph, CosmosDB, Neptune, etc.

4
stephen mallette 24 ene. 2018 a las 16:52

Soy el desarrollador principal de Ferma

Ferma es 100% compatible con todas las bases de datos con las que TinkerPop es compatible. Ferma actúa como una delgada envoltura alrededor de TinkerPop para proporcionar la capa OGM. Siempre y cuando pueda proporcionar un objeto TinkerPop Graph a Ferma, puede envolverlo y usarlo.

Eso significa que si desea utilizar Ferma, deberá utilizar un enfoque diferente. Es compatible con JanusGraph bien, pero no a través del enfoque del Servidor Gremlin. Tendrá que usar los controladores de gráficos TinkerPop directamente. En otras palabras, envuelva el objeto gráfico directamente, que es un enfoque compatible con JanusGraph.

Como se menciona en la otra respuesta, puede obtener un objeto Graph con la siguiente llamada y luego simplemente pasar este objeto al constructor FramedGraph de Ferma.

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

1
Jeffrey Phillips Freeman 23 abr. 2018 a las 16:51

Ferma también admite muchas bases de datos compatibles con TinkerPop. Lo bien que funciona se basa en qué tan bien / completamente el controlador del proveedor implementa el soporte para Tinkerpop.

Por ejemplo, como descubrí recientemente, DSE Graph no funciona con él. Se requiere un objeto gráfico tinkerepop conectado para el recorrido ORM, y eso no es algo que admita el controlador DSE Graph. Pude usar Ferma para las propiedades simples de un objeto, pero ninguna de las relaciones funcionaría.

Funciona para Titan y otras bases de datos de gráficos de forma remota. El archivo README.md de soporte para JanusGraph se agregó al repositorio de Ferma en octubre.

Si su clúster ya está configurado, puede usar algo como esto para obtener el objeto gráfico:

Graph graph = JanusGraphFactory.open('cassandra:localhost')
2
calumny92 18 feb. 2018 a las 01:16
48417910